作者:ahworld
鏈接:seurat結果轉為scanpy可處理對象
來源:微信公眾號seqyuan
著作權歸作者所有,任何形式的轉載都請聯(lián)系作者。
怎樣把seurat的對象轉換成scanpy能夠識別的數(shù)據(jù)格式呢,這一個是R S3對象,另一個是python的anndata對象。最初的想法是能不能把seurat對象的矩陣和分群信息導出到文件,再手動構建一個anndata對象,真要做的時候發(fā)現(xiàn)面臨很多困難。
最終經過在google搜索,毫無意外的發(fā)現(xiàn)了同道中人,有相同需求的人在bioinformatics上提問Convert R RNA-seq data object to a Python object,通過查看這個頁面提供的方案,我發(fā)現(xiàn)seurat官網提供了不同單細胞處理軟件結果互通的轉換方法。

seurat官網提供了seurat對象與SingleCellExperiment、loom、AnnData三種單細胞數(shù)據(jù)格式相互轉換的方法。目前seurat(version 3.1)不支持寫入scanpy要求的H5AD文件,所以目前的解決方案是:
- Seurat對象轉換為loom文件
- Scanpy讀取loom文件轉換為能夠操作的anndata對象
要是實現(xiàn)上面的兩個簡單的步驟還需要安裝一些R和python包,需要安裝的有以下幾個,如果已經安裝了,忽略就好:
安裝好以上包之后,
在R中執(zhí)行以下代碼,實現(xiàn)第一步: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中執(zhí)行以下代碼,實現(xiàn)第二步: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里的函數(shù)畫marker gene堆疊小提琴圖
marker_genes = ['Stfa1', 'Ngp', 'Ccl5', 'Ccl4', 'BC100530', 'Gzma', 'Gata2', 'Cd74']
ax = sc.pl.stacked_violin(adata, marker_genes, groupby='ClusterName', rotation=90)
