前段时间一直在用cellranger count进行单细胞测序数据的处理,不得不说Cell Ranger作为10X Genomics官方的单细胞数据处理工具,功能还是很强大的。Cell Ranger官方介绍
cellranger count输出结果中的outs.文件夹有几个是非常重要的信息,我们今天只关注于filtered_feature_bc_matrix文件夹下的内容和possorted_genome_bam.bam文件。
一般来说,我们下游的Seurat分析的输入文件会选择filtered_feature_bc_matrix中的文件,而不选择raw_feature_bc_matrix下的文件,前者是经过过滤的,去掉了低质量的信息。进入filtered_feature_bc_matrix文件夹会发现它下面包含3个文件:分别是barcodes.tsv.gz、features.tsv.gz和matrix.mtx.gz。
barcodes.tsv.gz
AAACCCAAGAGATGCC-1
AAACCCAAGGTCGTAG-1
AAACCCACATCAGTCA-1
AAACCCAGTTTCCCAC-1
AAACCCATCCAAACCA-1
AAACCCATCCCTCTAG-1
AAACGAAAGCTGGTGA-1
AAACGAACAGACACAG-1
AAACGAAGTGAGATAT-1
这个文件当中记载了每个细胞的barcode信息。
features.tsv.gz
ENSMUSG00000051951 Xkr4 Gene Expression
ENSMUSG00000089699 Gm1992 Gene Expression
ENSMUSG00000102331 Gm19938 Gene Expression
ENSMUSG00000102343 Gm37381 Gene Expression
ENSMUSG00000025900 Rp1 Gene Expression
ENSMUSG00000025902 Sox17 Gene Expression
ENSMUSG00000104238 Gm37587 Gene Expression
ENSMUSG00000104328 Gm37323 Gene Expression
这个文件记载了小鼠基因注释文件中包含的基因id与symbol信息,注意,这个文件的来源是小鼠基因组的注释文件。
matrix.mtx.gz
%%MatrixMarket matrix coordinate integer general
%metadata_json: {"software_version": "cellranger-6.0.1", "format_version": 2}
32285 5741 11436472
1 1 4
2 1 1
22 1 1
24 1 8
31 1 1
41 1 1
43 1 1
这个文件主体部分包含三列,第一列为基因,即这个基因在前面features.tsv.gz中的位置;第二列为细胞,即这个细胞对应于barcodes.tsv.gz中的barcodes信息;最后一列代表在这个细胞中检测到的这个基因的reads数。举个例子来说:
例如第一行:1 1 4,就表示barcode为AAACCCAAGAGATGCC-1的细胞中检测到的Xkr4基因的reads数为4。
细心的朋友会发现在前面还有一行:32285 5741 11436472 ,这一行实际上就是一个汇总信息,例如有32285个基因,5741个细胞,11436472个非零数值。而最前面不过是指明软件的相关信息罢了。
思考
实际上在我们进行数据分析时,都觉得这3个文件一个不可少,但实际上真的是这样吗?
-
features.tsv.gz
前面已经说到,这个文件实际上是来源于小鼠基因组的注释文件,所以理论上只要你在使用cellranger count时用的基因组注释文件是一样的,这个文件是不会变的,你可以进入Cell Ranger推荐的参考基因组看是否是这样。
cd cellranger/reference/refdata-gex-mm10-2020-A/genes
#这个文件夹下面你会看到一个小鼠基因组的gtf注释文件,名称应该为genes.gtf
cat genes.gtf | awk '$15=="gene_name"{print$10"\t"$16}' | less -S
#看看这样提取的基因id和name是否和features.tsv.gz一样
"ENSMUSG00000051951"; "Xkr4";
"ENSMUSG00000089699"; "Gm1992";
"ENSMUSG00000102331"; "Gm19938";
"ENSMUSG00000102343"; "Gm37381";
"ENSMUSG00000025900"; "Rp1";
"ENSMUSG00000025902"; "Sox17";
"ENSMUSG00000104238"; "Gm37587";
你会发现,顺序和内容竟然和features.tsv.gz一样的,所以看起来似乎features.tsv.gz也不是那么不可或缺,咱也可以自己做,或者说可以通用。
-
matrix.mtx.gz
这个文件,毫无疑问,是必不可少的,可以说花那么多钱做个single cell RNA sequencing就是为了这个文件。。
-
barcodes.tsv.gz
光听这个文件的内容,感觉这个文件很重要,像某个地区居民的名单一样,丢了岂不麻烦大了?但实际上仔细想想,它真的重要到我们不能丢吗?
我们说,matrix.mtx.gz里面实际上已经包含了单个细胞、单个基因的表达信息了,这是cellranger count已经返给我们的信息,举个形象的例子,小孩子在出生时,当地户籍部门记录了这个小孩的性别信息,当然还有他的名字。但是一年后,这个小朋友改名字了,但是他的性别变了吗?并没有!所以实际上这个barcodes.tsv.gz文件如果我们改了,只不过是给每个细胞新起了一个名字,本身并不会造成细胞RNA信息的变化和混乱。
说到这里,不得不提到possorted_genome_bam.bam文件,这个文件里面实际上包含了每个细胞的barcode信息,就在其中以CB开头的那个字段里。
samtools view possorted_genome_bam.bam | less -S
#部分信息如下
CB:Z:ATTCTTGTCTCCTGTG-1
CB:Z:GTGCTGGTCACTCGAA-1
CB:Z:GCATGATAGCCGGATA-1
CB:Z:GCACGTGGTTGCCTAA-1
你可以把这部分信息提取出来,重复内容合并,然后以任意顺序作为barcodes.tsv.gz就可以进行Seurat分析了。哦对了,得某位大佬指点,cellranger count输出的barcodes.tsv.gz是按字母表顺序的,所以(谁知道它是不是最后随意用字母表顺序输出的呢?)
今天又是摸鱼的一天!