在完成 HISAT2 比对之后,我们通常会得到一个或多个经过排序和索引的 BAM 文件。接下来的关键一步,就是 计算每个基因上的 reads 数量 —— 也就是我们常说的 表达量定量(quantification)。
为什么要做“定量”?
RNA测序的目标不仅是“知道测到了哪些转录本”,更重要的是“知道它们表达了多少”。
而 featureCounts 的任务,就是统计每个基因或转录本上被比对到的 reads 数,从而为后续的 差异表达分析(如 DESeq2、edgeR) 提供输入。
featureCounts 的原理
featureCounts 来自 Subread 软件包(由澳大利亚WEHI开发),其核心思想是:
将 BAM 文件中每一条比对的 read,按其与注释文件(GTF/GFF)中的“特征”(如外显子、基因)重叠情况进行计数。
简单来说:
相比传统工具(如 HTSeq-count),featureCounts 速度更快、内存占用更小、并行效率更高,是目前主流的 RNA-seq 定量方法之一。
输入文件说明
| | |
|---|
| .bam | | sample.sorted.bam |
| .gtf | | Homo_sapiens.GRCh38.115.gtf |
实操命令
假设你已经完成了 HISAT2 比对,并得到了 sample.sorted.bam:
# 1. 使用featureCounts统计基因reads数
featureCounts -T 8 -p -a Homo_sapiens.GRCh38.115.gtf -o gene_counts.txt -t exon -g gene_id sample.sorted.bam
参数解释: -T 线程数
-p 指定量时将以片段计数而不是reads,此参数针对双端测序
-s 指有无链特异性,0为默认参数表示无特异性,1表示Reads1是正义链,2表示Reads1是反义链;
-a 注释文件
-t 表示计数的feature,统计外显子
-g gene_id 会把同一个基因下所有转录本的 reads 合并计数,结果中每个基因只占一行,适合总体基因表达差异分析
输出结果解析
| |
|---|
| Geneid | |
| Chr/Start/End | |
| Strand | |
| Length | |
| sample.sorted.bam | |
如果有多个样本,可以直接在命令末尾列出多个 BAM 文件,featureCounts 会自动生成多列计数表,方便后续在 R 中使用 DESeq2 进行差异表达分析。
featureCounts 与其他定量工具对比
| | | |
|---|
| featureCounts | | | |
| HTSeq-count | | | |
| Salmon / Kallisto | | | |
小结
HISAT2 负责 “reads放到哪里”
featureCounts 负责 “每个基因有多少reads”
两者结合,是 RNA-seq 分析流程中最经典、也是最稳定的搭档。
在下一篇推送中,我们将介绍如何将 gene_counts.txt 导入 R 中,进行 标准化与差异表达分析(DESeq2实操)