很久不做单细胞相关的分析了,一些操作还停留在seurat R包v3, v4的版本,最近刚新装的seurat已经是v5了,很多操作和之前也不一样了,我在转换中没少折腾,下面列举两个由R中的seurat的格式转为Python中scanpy可以识别的格式的方法:
方法一:转成loom格式,优点是只需要转出保存一次
过去seurat3版本的方法,自带的as.loom转成loom,结果现在新版的seurat里没有as.loom了,现在在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)
# 这里千万要记得关闭loom,不然后面到python中读取时会报错
pbmc.loom$close_all()
然后在Python中:
import scanpy as sc
import loompy
adata = sc.read_loom(path+'pbmc.loom'), sparse=True, cleanup=False)
adata
方法二:转成h5ad格式,优点是,这就是scanpy官方的格式
首先在R里,要注意新版本的seurat包中,默认seurat assay都变成了v5的格式,可以class一下assay看看
options(Seurat.object.assay.version = "v3") # 在最开始处理data的时候,就设定好都是v3,就没有转换的烦恼了
# 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
网友评论