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包好用的一些功能(比如我感觉scater的uniquifyFeatureNames就很好用)
既然有需求,就有开发者添加功能 ,这里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
最后更新于
这有帮助吗?