最近在用scanorama進行單細胞轉錄組數據整合的過程中,出現報錯
error: data sets must be numpy array or scipy.sparse.csr_matrix, received type <class 'scipy.sparse.csc.csc_matrix'>.
經過檢查發(fā)現是data.X 數據格式不正確,需要進行格式轉換后再整合
data.X = scipy.sparse.csr_matrix(data.X)
這里再復習一下Anndata中的csr_matrix格式
anndata
AnnData 格式通常包含以下slot:
- X包含表達式矩陣。
- obsm包含嵌入數據。
- obs包含細胞元數據。
-
var包含基因元數據。
image.png
It is recommended to store the expression matrix in CSR (compressed sparse row) format to create smaller files depending on sparsity of your data instead of CSC (compressed sparse column) format or dense Numpy array.
csr_matrix(Compressed Sparse Row matrix)壓縮稀疏行格式
為什么要使用csr_matrix?
1.有利于高效運算
2.有利于高效行切片
3.有利于快速地矩陣矢量積運算
#要將表達式矩陣轉換為CSR格式,請使用:
import scipy
adata.X = scipy.sparse.csr_matrix(adata.X)
#要將表達式矩陣轉換為 Numpy 數組,請使用:
adata.X = scipy.sparse.csr_matrix.toarray(adata.X)
