之前做过一个 rds 转 h5ad 的教程,现在看来发现有些过于繁琐,且随着时间的发展,也有了更好的方法的出现,所以这里再写一个教程。

新的工具包是 https://github.com/cellgeni/sceasy ,这是一个专注于做各种单细胞文件格式转换的文件,但是作者也并没有写明一个特别完整的参数说明,所以这里我也只能根据自己的使用经验来写一下。

安装可以如作者所述,直接安装即可

conda install -c bioconda r-sceasy
# 或者
devtools::install_github("cellgeni/sceasy")

安装并不复杂,这里会详细讲一下其更为优秀的使用

# 首先是包的载入,只需载入这两行即可,如果你的文件没有 loom的话,那么就不需要载入 loom包
library(sceasy)
library(reticulate)

# 单细胞的 rds 文件与 h5ad 文件之间的互相转换如下即可
sceasy::convertFormat(seurat_object, from="seurat", to="anndata",
                       outFile='filename.h5ad')

sceasy::convertFormat(h5ad_file, from="anndata", to="seurat",
                       outFile='filename.rds')

但是有时候也会遇到一些问题,有时候 rds 文件转 h5ad 文件会报错,需要先读入 rds,然后再转换

rds = readRDS('filename.rds')
sceasy::convertFormat(rds, from="seurat", to="anndata",
                       outFile='filename.h5ad')

第二个问题是,sceasy在进行转换的时候,有时候我们想转的不是 counts 数据,而是我们做完了 SCTransform 之后的 SCT数据,那么我们则需要加上一句

sceasy::convertFormat(rds, from="seurat", to="anndata", main_layer = 'data',
                       outFile='filename.h5ad')

因为 SCTransform 之后的数据,其主要的数据是在 data 层,而 counts 层则是原始的数据,所以我们需要指定一下。