最近在用scanorama进行单细胞转录组数据整合的过程中,出现报错
error: data sets must be numpy array or scipy.sparse.csr_matrix, received type <class 'scipy.sparse.csc.csc_matrix'>.
经过检查发现是data.X 数据格式不正确,需要进行格式转换后再整合
data.X = scipy.sparse.csr_matrix(data.X)
这里再复习一下Anndata中的csr_matrix格式
anndata
AnnData 格式通常包含以下slot:
- X包含表达式矩阵。
- obsm包含嵌入数据。
- obs包含细胞元数据。
- var包含基因元数据。
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)