seurat结果转为scanpy可处理对象

作者: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对象SingleCellExperimentloomAnnData三种单细胞数据格式相互转换的方法。目前seurat(version 3.1)不支持写入scanpy要求的H5AD文件,所以目前的解决方案是:

  1. Seurat对象转换为loom文件
  2. Scanpy读取loom文件转换为能够操作的anndata对象

要是实现上面的两个简单的步骤还需要安装一些R和python包,需要安装的有以下几个,如果已经安装了,忽略就好:

  • R包:seurat
  • R包:hdf5r
  • R包:loomR
  • R包:scater
  • python包:scanpy
  • python包:loompy

安装好以上包之后,在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)

你可能感兴趣的:(seurat结果转为scanpy可处理对象)