单细胞格式转换 rds 转成 h5ad
单细胞格式转换 rds 转成 h5ad
- R
- python
- 第一步 Rstudio上Seurat读取并转为loom文件
- 第二步 安装loompy模块
- Scanpy 转换为h5ad文件
- 参考:
R
pbmc <- readRDS(rds_file)
pbmc[["RNA3"]] <- as(object = pbmc[["RNA"]], Class = "Assay")DefaultAssay(pbmc) <- "RNA3"
pbmc[["RNA"]] <- NULL
pbmc <- RenameAssays(object = pbmc, RNA3 = 'RNA')
pbmc[["RNA"]]$scale.data <- NULL # 直接转换会报错,因为版本问题,所以,做上面的转换工作
SaveH5Seurat(pbmc, filename = "pbmc.h5Seurat")Convert("pbmc.h5Seurat", dest = "h5ad")
python
第一步 Rstudio上Seurat读取并转为loom文件
library(Seurat)file <- readRDS('main.rds')main.loom <- as.loom(x = file, filename = "/DATA01/home/usr/data/NS/0624/main.loom", verbose = FALSE)write.csv(main@meta.data,'/DATA01/home/usr/data/NS/0624/mian.csv') #细胞一定要写成csv文件啊,后续就不用再标注细胞啦多方便啊
第二步 安装loompy模块
pip install
然后各种pip install --user 以及 pip install -U loompy 后成功
Scanpy 转换为h5ad文件
import scanpy as scimport pandas as pdimport loompyadata = sc.read_loom("/DATA01/home/usr/data/NS/0624/main.loom", sparse=True, cleanup=False, X_name='spliced', obs_names='CellID', var_names='Gene', dtype='float32')obs= pd.read_csv('mian.csv',delimiter=',', index_col=0)adata.obs = obsadata.write('main.h5ad')
这样,文章数据里的细胞信息就能最大程度地保留啦~但是如果细胞数很多的话,比如我引用的这个13万个细胞(虽然我觉得还好。。。),scanpy.read_loom转换成Anndata慢的要死,建议写成脚本扔到后台进行。
ps.开着spyder或者IPython读取loom文件记得关掉。。否则容易引发OS错误,比如我这样。。。
参考:
https://www.jianshu.com/p/8621088e1647
https://www.jianshu.com/p/2b5af1648eac