热点新闻
将R环境下的Seurat RDS格式数据转化成为到python环境下scanpy的anndata格式
2023-07-22 05:24  浏览:813  搜索引擎搜索“富博农业网”
温馨提示:为防找不到此信息,请务必收藏信息以备急用! 联系我时,请说明是在富博农业网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

无论是单细胞、空间组还是ATAC的数据,有时由于下游分析的需求或可视化的需求,同时由于python的运算速度的优势,目前越来越多单细胞分析的工具开始在python环境下开发(scanpy/spGCN/scVelo……),但是大家大多都习惯了R的分析环境(Seurat/Harmony/Monocle3……),所以我们经常需要在不同的环境中运行同一个分析对象,这所以涉及到的数据类型的转变就非常关键了。

想直接想找工具将RDS转为python可读数据对象的包,目前还没有……(如果有大佬可以开发一下)。

目前所以从数据本身出发有三种方式,总结自目前网络上一些可行的方法:

1,提取矩阵(稀疏/稠密)和特征信息(metadata),手动构筑anndata(单细胞分析时python中的一种数据结构,具体了解可以看一下:https://www.jianshu.com/p/9b057e105c42,写得挺好)就好。前提是对R的S4对象和python的anndata对象有基础的认识,就可以搞定,这是最本质也是最万能的方法,除了门槛高。

2,存储的时候就注意,不要保存成rds,或者已经这样保存了也无所谓,可以读入再重新存:
(1)存储成h5ad格式。Seurat数据写成h5需要借助包SeuratDisk: https://github.com/mojaveazure/seurat-disk
从R环境下Seurat的对象保存成h5ad的格式:

library('SeuratDisk') DefaultAssay(sdata) <- "Spatial" #选择你要保存的Assay SaveH5Seurat(sdata, filename = "data.h5Seurat",overwrite = TRUE) Convert("data.h5Seurat", dest = "h5ad",overwrite = TRUE)

然后用python的anndata包/scanpy包直接读入就好,因为h5ad本来就是单细胞在跑一python环境中分析最基础的格式,对标R中的seurat对象或sce对象

adata=anndata.read('./data.h5ad') #用anndata adata=scanpy.read('./data.h5ad') #用scanpy

这个方法可以具体参考:https://www.jianshu.com/p/c438d545f696 他写得更加详细一点

(2)Seurat官方设置loom格式也是可行方式之一:
参见:https://www.jianshu.com/p/147da295fc34
将Seurat对象转为loom:

#读入seurat处理后的rds文件 library(Seurat) library(SeuratDisk) library(loomR) sdata <- readRDS(file = "./seurat_project.rds") # 在R环境下将seurat对象转换为loom文件 sdata.loom <- as.loom(x = sdata, filename = "./data.loom", verbose = FALSE) # Always remember to close loom files when done sdata.loom$close_all()

在python环境下读入loom,成为adata:

import scanpy as sc adata = sc.read_loom("./data.loom", cleanup=False, X_name='spliced', obs_names='CellID', var_names='Gene', dtype='float32'))

总而言之,经个人使用和实际操作来说,第二个存储成为h5ad的方法时最好用的、也最友好,除了只能保存一个assay之外,就都没问题,但是如果许多保存多个assay成为anndata中的多个layer,这就的用手动的方法了。

发布人:40b9****    IP:117.173.23.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发