美文网首页
scanpy读10X单细胞数据报错

scanpy读10X单细胞数据报错

作者: 生信交流平台 | 来源:发表于2023-06-06 17:02 被阅读0次

    今天有位粉丝问了我一个scanpy读取10X数据报错的问题。报的错是没有找到相应的文件。

    小编用10X官网的数据测试了一下。文件夹结构如下


    读取代码如下

    import scanpy as sc
    
    adata = sc.read_10x_mtx('./10X')
    print(adata)
    

    是可以成功读到python里面的


    考虑到这位粉丝提供的文件名与10X官网下载的文件名不太一样,小编又测试了一下,随意修改了一下10X文件夹里面文件的名字,加了一个前缀S1_。再次读取就报错了修改后的文件名如下


    读取代码如下

    import scanpy as sc
    
    adata = sc.read_10x_mtx('./10X_prefix')
    print(adata)
    

    报的正是前面展示的错误


    如果在读取时候加上prefix这个参数,又能正常读入

    import scanpy as sc
    
    adata = sc.read_10x_mtx('./10X_prefix',prefix="S1_")
    print(adata)
    

    小编仔细查看了一下报错的信息,在scanpy\readwrite.py文件中找到了读取文件的具体代码。可以看到read_10x_mtx这个函数只能识别固定格式的文件,即matrix.mtx, barcodes.tsv和genes.tsv这个三个文件(无论是否压缩),最多可以在这三个文件前面加上一个相同的前缀。


    而对比R语言读取10X数据,可以发现R的Read10X这个函数更加的死板

    library(Seurat)
    
    #通过Read10X读取矩阵
    scRNA.data <- Read10X(data.dir = "10X")
    #32738 x 2700 sparse Matrix of class "dgCMatrix"
    

    只能识别matrix.mtx, barcodes.tsv和genes.tsv这三个文件,连前缀都不接受。


    所以无论是python还是R,在读取10X文件夹包含的三个数据文件这种格式时,如果遇到相同的报错,一个比较简单的方法是,将文件夹中的三个文件的名字改成matrix.mtx, barcodes.tsv和genes.tsv即可。可以通过不同的文件夹名字来区分样本。

    相关文章

      网友评论

          本文标题:scanpy读10X单细胞数据报错

          本文链接:https://www.haomeiwen.com/subject/oxmgedtx.html