在Seurat主导的单细胞世界里,Scanpy算是有点小众了。可是坑爹的是自己还必须用scanpy(谁让流程已经搭建好了,数据已经处理一半了;谁让师兄说这个数据量大R带不起来。。。。呵谁知道呢)。
总之,今天要引用合并别人已发文章的单细胞数据(.rds),所以亟需Seurat的RDS文件转Scanpy可读。。开始吧。
第一步 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 安装各种失败啊。。。。心好累
Could not install packages due to an EnvironmentError: HTTPSConnectionPool
这网是个什么鬼啊,无力吐槽。。然后各种pip install --user 以及 pip install -U loompy 后成功。
第三步 Scanpy 转换为h5ad文件
import scanpy as sc
import pandas as pd
import loompy
adata = 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 = obs
adata.write('main.h5ad')
这样,文章数据里的细胞信息就能最大程度地保留啦~但是如果细胞数很多的话,比如我引用的这个13万个细胞(虽然我觉得还好。。。),scanpy.read_loom转换成Anndata慢的要死,建议写成脚本扔到后台进行。
ps.开着spyder或者IPython读取loom文件记得关掉。。否则容易引发OS错误,比如我这样。。。
OSError: Unable to open file (unable to lock file, errno = 11, error message = 'Resource temporarily unavailable')
以上就是所有啦,后续和自己的数据合并清洗整理更费事,所以拖延症犯了写点东西,继续搬砖。。。
不想干活.jpg
网友评论