作者:ahworld
链接:seurat结果转为scanpy可处理对象
来源:微信公众号seqyuan
著作权归作者所有,任何形式的转载都请联系作者。
怎样把seurat的对象转换成scanpy能够识别的数据格式呢,这一个是R S3对象,另一个是python的anndata对象。最初的想法是能不能把seurat对象的矩阵和分群信息导出到文件,再手动构建一个anndata对象,真要做的时候发现面临很多困难。
最终经过在google搜索,毫无意外的发现了同道中人,有相同需求的人在bioinformatics
上提问Convert R RNA-seq data object to a Python object,通过查看这个页面提供的方案,我发现seurat官网提供了不同单细胞处理软件结果互通的转换方法。
seurat官网提供了seurat对象
与SingleCellExperiment
、loom
、AnnData
三种单细胞数据格式相互转换的方法。目前seurat(version 3.1)不支持写入scanpy要求的H5AD文件,所以目前的解决方案是:
- Seurat对象转换为loom文件
- Scanpy读取loom文件转换为能够操作的anndata对象
要是实现上面的两个简单的步骤还需要安装一些R和python包,需要安装的有以下几个,如果已经安装了,忽略就好:
安装好以上包之后,
在R中执行以下代码
,实现第一步:Seurat对象转换为loom文件
#读入seurat处理后的rds文件
library(Seurat)
library(loomR)
sdata <- readRDS(file = "/Users/yuanzan/Desktop/tmp/seurat_project.rds")
# seurat对象转换为loop文件
sdata.loom <- as.loom(x = sdata, filename = "/Users/yuanzan/Desktop/tmp/sdata.loom", verbose = FALSE)
# Always remember to close loom files when done
sdata.loom$close_all()
接着
在jupyter中执行以下代码
,实现第二步:Scanpy读取loom文件转换为能够操作的anndata对象
import scanpy as sc
adata = sc.read_loom("/Users/yuanzan/Desktop/tmp/sdata.loom", sparse=True, cleanup=False, X_name='spliced', obs_names='CellID', var_names='Gene', dtype='float32')
我们再试一下用scanpy里的函数画marker gene堆叠小提琴图
marker_genes = ['Stfa1', 'Ngp', 'Ccl5', 'Ccl4', 'BC100530', 'Gzma', 'Gata2', 'Cd74']
ax = sc.pl.stacked_violin(adata, marker_genes, groupby='ClusterName', rotation=90)