生信技能

生信技能

RNA测序分析(四)从比对到定量:使用 featureCounts 快速计算基因表达量

2025-11-14

RNA测序分析(四)从比对到定量:使用 featureCounts 快速计算基因表达量


GBhouse专用扉页.gif


image.png

在完成 HISAT2 比对之后,我们通常会得到一个或多个经过排序和索引的 BAM 文件。接下来的关键一步,就是 计算每个基因上的 reads 数量 —— 也就是我们常说的 表达量定量(quantification)


为什么要做“定量”?

RNA测序的目标不仅是“知道测到了哪些转录本”,更重要的是“知道它们表达了多少”。
而 featureCounts 的任务,就是统计每个基因或转录本上被比对到的 reads 数,从而为后续的 差异表达分析(如 DESeq2、edgeR) 提供输入。


featureCounts 的原理

featureCounts 来自 Subread 软件包(由澳大利亚WEHI开发),其核心思想是:

将 BAM 文件中每一条比对的 read,按其与注释文件(GTF/GFF)中的“特征”(如外显子、基因)重叠情况进行计数。

简单来说:

  • 它扫描 BAM 文件;

  • 查找每条 read 覆盖的基因;

  • 将该 read 计入对应基因的计数表中。

相比传统工具(如 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
基因ID(来自GTF)
Chr/Start/End
基因所在染色体及位置
Strand
正负链信息
Length
统计范围长度(如外显子总长)
sample.sorted.bam
对应样本中该基因的read计数

如果有多个样本,可以直接在命令末尾列出多个 BAM 文件,featureCounts 会自动生成多列计数表,方便后续在 R 中使用 DESeq2 进行差异表达分析。


featureCounts 与其他定量工具对比


工具
特点
优势
劣势
featureCounts
基于比对结果的计数工具
快速、准确、支持多线程
仅适用于比对后数据
HTSeq-count
经典计数工具
稳定可靠,兼容多种参数
速度较慢
Salmon / Kallisto
基于伪比对的定量方法
极快、适合大规模样本
不依赖比对文件,无法直接做比对质量评估

小结

HISAT2 负责 “reads放到哪里”
featureCounts 负责 “每个基因有多少reads”

两者结合,是 RNA-seq 分析流程中最经典、也是最稳定的搭档。
在下一篇推送中,我们将介绍如何将 gene_counts.txt 导入 R 中,进行 标准化与差异表达分析(DESeq2实操)