前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scanpy结果转为seurat可处理对象

scanpy结果转为seurat可处理对象

作者头像
生信技能树jimmy
发布2021-09-15 16:11:08
3.7K1
发布2021-09-15 16:11:08
举报
文章被收录于专栏:单细胞天地

分享是一种态度

网上Seurat转scanpy的教程一抓一大堆,然鹅找遍全网都没找到一个靠谱的反向操作方法。唯一找到一个ReadH5AD用起来是这样的:

好吧,可能是大佬们都不需要反向操作,然而本菜鸡实在是用不习惯jupyter那个操作界面,所以就自己反向操作一波吧。。。

首先排除在jupyter notebook直接输出矩阵,毕竟十几二十万细胞的矩阵输出不是闹着玩的,既费时又费内存。所以,是时候祭出reticulate了(以下操作全程在Rstudio进行):

代码语言:javascript
复制
library(reticulate)

######加载python模块######
scanpy <- import("scanpy")
pandas <- import("pandas")

adata = scanpy$read('./matrix.h5ad') ###载入scanpy输出的h5ad文件

#######导出基因名和样本信息################
meta = adata$obs
gene <- adata$var

#############导出矩阵并转置,scanpy和Seurat的行列是反的#############
adata2 = adata$X
adata2 = adata2$T

此时你就得到了一个稀疏矩阵,然而是没有行名和列名的稀疏矩阵,seurat是不会接受这种输入文件的,像这样:

所以,我们需要给稀疏矩阵加个行名列名,像这样:

代码语言:javascript
复制
adata2@Dimnames[[1]] = rownames(gene)
adata2@Dimnames[[2]] = rownames(meta)

然后就可以转战Seurat了:

代码语言:javascript
复制
merge <- CreateSeuratObject(adata2)
merge <- AddMetaData(merge, meta)

写这么多其实简单封装一下就是一个函数的事情。然而我懒。就算了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档