为什么绝大部分教程都是Read10X读取3个文件

我们《生信菜鸟团》的单细胞周更专辑作者分享过好几次了基础文件读取技巧啦,详见: 读取不同格式的单细胞转录组数据及遇到问题的解决办法

其中最常见的就是使用Read10X读取3个文件,但是Read10X读取3个文件还得注意版本,而且必须保证3个文件名字完全一样,要么是

barcodes.tsv.gz features.tsv.gz matrix.mtx.gz

3个文件的名字要么是:

barcodes.tsv genes.tsv matrix.mtx

只有这样才能把表达量矩阵读入进去。

需要了解3个文件的规则

$ head *
==> barcodes.tsv <==
AAACATACAACCAC-1
AAACATTGAGCTAC-1
AAACATTGATCAGC-1
AAACCGTGCTTCCG-1
AAACCGTGTATGCG-1
AAACGCACTGGTAC-1
AAACGCTGACCAGT-1
AAACGCTGGTTCTT-1
AAACGCTGTAGCCA-1
AAACGCTGTTTCTG-1

==> genes.tsv <==
ENSG00000243485 MIR1302-10
ENSG00000237613 FAM138A
ENSG00000186092 OR4F5
ENSG00000238009 RP11-34P13.7
ENSG00000239945 RP11-34P13.8
ENSG00000237683 AL627309.1
ENSG00000239906 RP11-34P13.14
ENSG00000241599 RP11-34P13.9
ENSG00000228463 AP006222.2
ENSG00000237094 RP4-669L17.10

==> matrix.mtx <==
%%MatrixMarket matrix coordinate real general
%
32738 2700 2286884
32709 1 4
32707 1 1
32706 1 10
32704 1 1
32703 1 5
32702 1 6
32700 1 10

比较让大家困惑的可能是 matrix.mtx 文件里面的表达量矩阵,是32738个基因在 2700个细胞的表达量矩阵,但是仅仅是 2286884个值是大于0 的,所以会被记录在 matrix.mtx 文件里面,我们简单的一个计算就知道

> 32738 * 2700 
[1] 88392600
> 2286884/(32738 * 2700)
[1] 0.02587189

表达量矩阵里面也就是说只有2.5%的值不是0 ,那么就没必要使用矩阵来记录了,太浪费空间了。

那么,为什么绝大部分教程都是Read10X读取3个文件呢?

我怀疑可能是以下两个原因:

首先可能是历史遗留问题,第一个写教程的人使用了Read10X读取3个文件,后面就都懒得修改了。

另外一个原因是,h5文件不方便肉眼看,起码上面的3个文件,我们可以打开看看内容形式。

Comments are closed.