两步法搞定:Python中的h5ad文件 转为R中的seurat对象

问题来源

AnnData对象(Python中)和Seurat对象(R中)分别是两个非常流行的单细胞RNA测序数据分析框架中的核心数据结构。

有很多工具可以完成python对象adata和R中seurat对象的转换,但是很多情况下,我们使用别人提供的r包来转换都会失败,就算是seurat自带的转换r包有时候也会报错。

转换失败的原因

版本不兼容:Seurat或AnnData的不同版本可能会引入新的功能或更改数据存储方式,导致转换工具无法正确处理最新或旧版格式的文件。

丢失的元数据:转换工具可能期望在源文件中存在特定的元数据信息。如果这些信息缺失或格式不正确,转换过程可能会失败。

不支持的数据类型:某些特定的数据类型或结构可能在一个框架中有良好的支持,而在另一个框架中则不是。例如,Seurat和AnnData在处理稀疏矩阵或复杂的细胞分群信息时可能会有所不同。

软件缺陷:所有软件都可能存在bug,即使是经过广泛使用和测试的软件包也不例外。某些转换问题可能是由于软件中未被发现或尚未修复的bug所导致。

通用的解决方案

不管是在r中还是python中 ,只是数据的存储结构不同而已。但是数据本身没有变化。

  • 第一步,先导出python中的annadata主要数据

  • #python中导出数据import scipy.sparse as sparseimport scipy.io as sioimport scipy.stats as statsimport numpy as npimport scanpy as scimport osall_data=sc.read_h5ad("./fibroblast.h5ad")cellinfo=all_data.obsgeneinfo=all_data.varmtx=all_data.X.Tcellinfo.to_csv("cellinfo.csv")geneinfo.to_csv("geneinfo.csv")sio.mmwrite("sparse_matrix.mtx",mtx)!pwd
  • 第二步,在R中读取导出的数据,并创建seurat对象

  • cellinfo=read.csv("/home/data/t040413/heart_muscle/item1_NF_DCM_HCM/fibroblast/cellinfo.csv",row.names = "X")head(cellinfo)geneinfo=read.csv("/home/data/t040413/heart_muscle/item1_NF_DCM_HCM/fibroblast/geneinfo.csv",row.names = "X");head(geneinfo)#geneinfo=geneinfo[,c(2,3)]head(geneinfo)# counts=ReadMtx(mtx = "./sparse_matrix.mtx",#                cells = "./cellinfo.csv",#                features = "./geneinfo.csv")counts=Matrix::readMM(file = "/home/data/t040413/heart_muscle/item1_NF_DCM_HCM/fibroblast/sparse_matrix.mtx")head(counts)[,1:9]dim(counts)rownames(counts)=rownames(geneinfo)colnames(counts)=rownames(cellinfo)library(Seurat)All.merge=CreateSeuratObject(counts = counts,project = "All.merge",meta.data = cellinfo)dim(All.merge)

    看完记得顺手点个“在看”哦!

    作者:生信小博士

    物联沃分享整理
    物联沃-IOTWORD物联网 » 两步法搞定:Python中的h5ad文件 转为R中的seurat对象

    发表回复