19  基因定量:用 featureCounts 将“比对”语言翻译为“表达”矩阵

19.1 【导语】万事之源:为何要这样做?

RNA-seq序列比对的最终产物BAM文件,其本质是记录了数千万乃至数亿条测序Reads在基因组这张“地图”上的精确坐标信息。这是一种“空间语言”。然而,我们下游的差异表达分析,所需要的是一种截然不同的“生物学语言”——一张清晰、结构化的表格,其行代表基因,其列代表样本,而单元格内的数值,则代表了特定基因在特定样本中的表达丰度。

因此,基因定量的核心使命,就是扮演一个连接这两种语言的“高级翻译官”。它利用基因注释文件(GTF/GFF)作为一本权威的“双语词典”,将BAM文件中海量的、基于坐标的空间语言信息,精确无误地“翻译”并汇总为以基因为单位的、可供统计分析的Read Counts(计数)矩阵。

19.2 【核心实践】从原理到决策

19.2.1 【工具选择决策:featureCounts

在众多基因定量工具中,我们决策选择featureCounts。其根本原因在于,它在保证准确性的前提下,拥有极快的运行速度、极低的计算资源占用,且其核心参数设计高度直观,是目前学术界与工业界最主流的、基于Read Counts的定量工具之一。

19.2.2 【核心输入文件剖析】

featureCounts的翻译工作,依赖于两个核心输入文件。

BAM文件:这是我们已经排序并索引好的比对结果文件。在这次任务中,它扮演着“待翻译的原文”的角色。

GTF/GFF文件 (基因注释文件):这是本次翻译工作所依赖的“词典”。我们可以用一个实验室隐喻来理解:GTF文件如同在基因组这张庞大的卫星地图上,覆盖的一张高精度的“行政区域划分图”。它不仅精确地标注了每一个基因(如TP53)的总体疆域(起始与终止坐标),更详细地描绘了其内部更精细的功能区划,例如每一个外显子(exon)的精确坐标。featureCounts正是依据这张划分图,来判断一条比对上的Read,究竟是落在了哪个基因的“领地”之内。

19.2.3featureCounts 核心参数决策】

featureCounts -T 8 -t exon \
    -g gene_id \
    -a genes.gtf \
    -o counts.txt \
    *.sorted.bam

这条命令中的每一个参数,都是一项关乎翻译准确性的科学决策。

-T 8:这是一项计算资源分配决策,意为“调用8个CPU核心并行处理”,以最大化定量效率。

-t exon:这是一项至关重要的“计数靶点”决策。它明确指示featureCounts,在进行计数时,只统计那些中心点落在“外显子”(exon)区域内的Reads。做出这个决策的生物学依据是,在标准的转录组分析中,我们关心的是经过剪接后的成熟mRNA的丰度,而外显子是构成熟mRNA的主体。

-g gene_id:这是一项“汇总层级”决策。GTF文件中通常包含gene_id, transcript_id, gene_name等多种标识符。这个参数规定了软件在计数后,应以“gene_id”作为唯一的单位进行汇总。即便一个基因拥有多个不同的转录本(isoforms),所有比对到这些转录本外显子上的Reads,最终都会被累加到同一个基因ID上。这是进行基因水平差异表达分析的标准做法。

-a genes.gtf -o counts.txt *.sorted.bam:这是一条完整的“执行指令”,它定义了使用的“词典”(-a),指定的“输出文件名”(-o),以及所有“待翻译的原文”(*.sorted.bam)。

19.2.4 【结果解读:输出的Counts矩阵】

featureCounts运行结束后,会生成一个名为counts.txt的文本文件。其结构清晰明了:文件的开头几行是以#开头的注释信息,记录了本次运行的命令和版本。主体部分,则是一个以基因ID为第一列(行名),后续各列为按输入顺序排列的样本BAM文件名(列名)的原始整数计数矩阵。这份看似简单的、纯数字的表格,是整个Unix流程的最终精华产出,也是下一阶段所有R语言统计分析的唯一数据起点。

19.3 【认知升维】常见的思维陷阱与对策

19.3.1 思维陷阱一:链特异性文库的参数错误

现代RNA-seq文库,大多是“链特异性”(strand-specific)的,这意味着我们可以知道一条Read是来自正义链还是反义链。如果在featureCounts中,不使用-s参数(其值通常为1或2,代表不同的链特异性方案)来正确地指定链的方向,其直接后果是,约一半比对到基因反义链上的Reads,将被featureCounts错误地判定为无效计数而丢弃。这将导致几乎所有基因的表达量都被系统性地、严重地低估。

其对策是,在开始分析前,必须通过实验记录或与测序公司沟通,明确了解你的测序文库类型。如果不确定,一个稳妥的侦察策略是:随机抽取一个BAM文件,分别使用-s 0 (不区分链), -s 1 (正向特异性), -s 2 (反向特异性) 三种模式运行featureCounts,最终选择那个能够获得最多总计数值(Assigned reads)的参数设置,作为整个项目的标准。

19.3.2 思维陷阱二:对多重比对Reads的处理不当

在复杂的基因组中,一条测序Read可能会以完全相同或极高的相似度,同时比对到基因组的多个不同位置(例如,旁系同源基因或重复序列区域)。featureCounts的默认策略,是为了保证计数的绝对准确性,它会直接丢弃所有这些具有“多重比对”身份的Reads,不将它们分配给任何一个基因。

其对策是,首先要理解这是featureCounts为了避免计数模糊性而采取的一种保守且合理的策略,对于绝大多数标准的差异表达分析而言,这是可以接受的。但同时也要在认知上升级:在研究基因家族、假基因等特殊场景时,这种策略可能会导致信息丢失。此时,需要了解更高级的、基于转录本水平的定量工具(如Salmon, Kallisto),它们如何利用复杂的期望最大化(EM)算法,来概率性地、更优地分配这些多重比对的Reads。

19.4 【总结与拓展】构建你的思维框架

我们必须将基因定量的过程,构建为一个严谨的“划界计票”的思维框架。在这个框架中,你的核心任务,是为这场选举提供一张精确无误的“选区地图”(GTF文件),并基于你的生物学问题,设定一套清晰、公正的“计票规则”(featureCounts的各项参数)。你的最终目标,是确保每一张投出的、有效的“选票”(测序Read),都能够被公正、无歧义地分配给它唯一所属的那个“候选人”(基因)。

基于此框架,请思考一个更具挑战性的问题:假设你的研究对象是长链非编码RNA(lncRNA)。在基因组上,许多lncRNA的转录本,其外显子区域与某些蛋白编码基因的外显子区域存在物理上的重叠。在这种情况下,当你使用featureCounts的默认参数进行定量时,你认为可能会带来什么潜在的计数偏差问题?为了能够更准确地区分并定量这两种重叠的转录本类型,你可能会在featureCounts的参数上做出怎样的调整,以应对这种计数的模糊性?(提示:请查阅并思考-O--fraction这两个参数的潜在作用)。


探索生命科学前沿,提升实战技能!欢迎微信搜索并加入「生信实战圈」,获取最新技术干货、实战案例与行业动态。 点击关注,与同行一起成长!