3.15 不同R包数据的相互转换

刘小泽写于2020.7.18

1 前言

这部分内容是来自Seurat:https://satijalab.org/seurat/v3.1/conversion_vignette.html

单细胞数据格式目前有这么几大派:

  • Bioconductor主导的SingleCellExperiment数据格式:例如scran、scater、monocle(尽管它的对象不直接使用SingleCellExperiment,但灵感来源于SingleCellExperiment,并且操作也是类似的)

  • Seurat:SeuratObject格式

  • scanpy:AnnData格式

这么一来,很多分析流程就被固定在某个包中了,比如使用Seurat会一用到底,也不会去学习scater或其他R包了,但也许就错过了其他R包好用的一些功能(比如我感觉scateruniquifyFeatureNames就很好用)

既然有需求,就有开发者添加功能 ,这里Davis McCarthy 和Alex Wolf就为Seurat添加了和其他数据类型转换的函数

2 Seurat与SingleCellExperiment的相互转换

library(scater)
# devtools::install_github(repo = "satijalab/seurat", ref = "loom")
library(loomR)
library(Seurat)
library(patchwork)

2.1 Seurat转SingleCellExperiment

2.2 SingleCellExperiment转Seurat

3 Seurat与loom的相互转换

还记得上次在单细胞交响乐16-处理大型数据中说到:处理大型数据遇到内存不足时,可以使用这个HDF5ArrayR包(类似的还有 bigmemory, matter),它会将底层数据做成HDF5格式,用硬盘空间来存储数据,必要时再调用一部分数据到内存。loom格式就是处理HDF5使用的

3.1 Seurat转为loom

3.2 loom转为Seurat

首先读取:用 loomR 的connect

然后转换

最后处理完,记得关闭loom文件

3.3 补充

如果使用Seurat V2,还有一个自带的函数Convert

4 Scanpy转Seurat

Seurat有一个函数ReadH5AD可以读取AnnData的H5AD文件

目前还不能直接将Seurat写成H5AD文件,因此不能之间将Seurat转为Scanpy;但是可以将loom文件作为桥梁实现Seurat转Scanpy,例如Scanpy 有一个函数scanpy.read_loom()

参考:https://scanpy.readthedocs.io/en/stable/api/scanpy.read_loom.html

最后更新于

这有帮助吗?