sceasy | 单细胞跨平台数据互通 | anndata | loom | seurat | sce | monocle | 格式转换
2023年02月06日
太nb了,今天居然才发现这个神器轮子,想法其实很简单,从各个格式里提取三个矩阵(count matrix,col anno, row anno),然后创建新的对象,自己也可以做,但人家封装好了,你只需要载入包,一行命令即可完成转换。h5ad格式很小,而且可以跟cellxgene兼容。
library(sceasy) library(reticulate) # use_condaenv('EnvironmentName') # loompy <- reticulate::import('loompy')
sceasy::convertFormat(seuset.flt.select, from="seurat", to="anndata", assay = "RNA", outFile='keyRdata/RNA.h5ad')
sceasy::convertFormat(seuset.flt.select, from="seurat", to="anndata", assay = "ATAC", outFile='keyRdata/ATAC.h5ad')
注意:这样生成的数据有部分缺陷,需要再python里再处理一下。
首先是dtype,
其次是csr,而不是csc
最后就是用python的包来保存,文件会变大。
class scipy.sparse.csc_matrix(arg1, shape=None, dtype=None, copy=False)[source]
Compressed Sparse Column matrix
class scipy.sparse.csr_matrix(arg1, shape=None, dtype=None, copy=False)[source]
Compressed Sparse Row matrix
核心代码:
atac_data.X = atac_data.X.tocsr() atac_data.layers['counts'] = atac_data.raw.to_adata().X.astype(np.int64).copy() rna_data.X = rna_data.X.astype(np.float32) atac_data.X = atac_data.X.astype(np.int64) atac_data.write("keyRdata/ATAC.h5ad")
理解单细胞数据的本质,一个matrix,以及行与列的annotation。
一个最不友好的格式就是loom,只能用python来读取,存储为CSV。
project/scPipeline/public/Linnarsson_2020_developing_mouse_brain/getData_from_loom.ipynb
其次就是scanpy的adata,也需要特殊的python来导出到R。
project/Data_center/analysis/ApcKO_multiomics/Allen_MIRA.ipynb#
R和python的版本重大升级真TM恶心
之前的项目还在进行,没法全部重新安装,否则结果可能无法重现
不装新的版本,最新的功能又无法使用,真TM操蛋!
旧版本总有死掉的那一天,更新的最佳契机就是换设备
一个最基本的问题,生信工具要不要用最新的版本?
永恒的痛苦抉择!
待续~