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。

参考:scanpy结果转为seurat可处理对象

project/Data_center/analysis/ApcKO_multiomics/Allen_MIRA.ipynb#

 

 

 

R和python的版本重大升级真TM恶心

之前的项目还在进行,没法全部重新安装,否则结果可能无法重现

不装新的版本,最新的功能又无法使用,真TM操蛋!

旧版本总有死掉的那一天,更新的最佳契机就是换设备

 


 

一个最基本的问题,生信工具要不要用最新的版本?

永恒的痛苦抉择!

 

 

 

待续~

 

posted @ 2022-07-25 23:55  Life·Intelligence  阅读(1342)  评论(0编辑  收藏  举报
TOP