很久不做單細(xì)胞相關(guān)的分析了震檩,一些操作還停留在seurat R包v3, v4的版本狡孔,最近剛新裝的seurat已經(jīng)是v5了,很多操作和之前也不一樣了蜂嗽,我在轉(zhuǎn)換中沒(méi)少折騰苗膝,下面列舉兩個(gè)由R中的seurat的格式轉(zhuǎn)為Python中scanpy可以識(shí)別的格式的方法:
方法一:轉(zhuǎn)成loom格式,優(yōu)點(diǎn)是只需要轉(zhuǎn)出保存一次
過(guò)去seurat3版本的方法植旧,自帶的as.loom轉(zhuǎn)成loom辱揭,結(jié)果現(xiàn)在新版的seurat里沒(méi)有as.loom了,現(xiàn)在在SeuratDisk包里
if (!requireNamespace("remotes", quietly = TRUE)) {
install.packages("remotes")
}
remotes::install_github("mojaveazure/seurat-disk")
library(SeuratDisk)
library(Seurat)
pbmc.loom <- SeuratDisk::as.loom(x = pbmc, filename = paste0(path,'/pbmc.loom'), verbose = FALSE)
# 這里千萬(wàn)要記得關(guān)閉loom病附,不然后面到python中讀取時(shí)會(huì)報(bào)錯(cuò)
pbmc.loom$close_all()
然后在Python中:
import scanpy as sc
import loompy
adata = sc.read_loom(path+'pbmc.loom'), sparse=True, cleanup=False)
adata
方法二:轉(zhuǎn)成h5ad格式问窃,優(yōu)點(diǎn)是,這就是scanpy官方的格式
首先在R里完沪,要注意新版本的seurat包中域庇,默認(rèn)seurat assay都變成了v5的格式,可以class一下assay看看
options(Seurat.object.assay.version = "v3") # 在最開始處理data的時(shí)候覆积,就設(shè)定好都是v3听皿,就沒(méi)有轉(zhuǎn)換的煩惱了
# or convert a v5 assay to a v3 assay
# pbmc[["RNA3"]] <- as(object = pbmc[["RNA"]], Class = "Assay")
SaveH5Seurat(pbmc, filename = paste0(path,'/pbmc.h5Seurat'))
Convert(paste0(path,'/pbmc.h5Seurat'), dest = "h5ad")
然后Python中讀取
import scanpy as sc
adata = sc.read_h5ad("pbmc.h5ad")
adata