TPM、FPKM、CPM 与有效长度
RNA-seq 表达量归一化是消除测序深度和基因长度偏差、实现跨样本可比性的关键步骤。本节对比 CPM、FPKM、TPM 的归一化逻辑,并引入有效长度的概念。
- 掌握 counts 到 CPM/FPKM/TPM 的公式转换与数学本质
- 理解为什么 TPM 在跨样本比较中具有更好的统计性质
- 掌握有效长度(Effective Length) 的定义及其对定量的修正作用
- 辨析归一化数据与原始计数在差异表达分析中的不同角色
1. 是什么
Section titled “1. 是什么”CPM、FPKM 和 TPM 是 RNA-seq 数据中最常用的三种表达量归一化指标。它们的作用是将原始 Read 计数(Raw Counts)转化为可以跨样本、跨基因进行比较的标准化数值。
这三者的核心目标是一致的:消除测序深度(Sequencing Depth)和基因/转录本长度(Gene/Transcript Length)对计数造成的系统性偏差。但它们在归一化的顺序和数学性质上存在关键差异,导致适用场景不同。
2. 要解决什么生物信息学问题
Section titled “2. 要解决什么生物信息学问题”原始计数(Raw Counts)受到两个主要系统偏差的影响,如果不加校正就直接比较,会得出错误的结论:
- 测序深度偏差:假设样本 A 测了 3000 万 Reads,样本 B 测了 5000 万 Reads,那么同一个基因在样本 B 中的 Counts 天然就会偏高。如果直接比较 Counts,差异会反映测序量而非真实表达水平。
- 基因长度偏差:假设基因 X 长度为 2000 bp,基因 Y 长度为 500 bp,在相同的转录本数量下,基因 X 会产生约 4 倍于基因 Y 的 Reads。如果直接比较 Counts,长基因会系统性地显得”表达量更高”。
归一化的任务就是设计一个数学变换,使得变换后的数值尽可能反映转录本的真实分子数量或转录本在总 RNA 池中的相对比例。
3. 输入与输出
Section titled “3. 输入与输出”- 原始计数矩阵:行代表基因/转录本,列代表样本,值为落在该基因/转录本上的 Reads 数量。
- 基因/转录本长度信息:通常为有效长度(Effective Length),由定量工具(如 Salmon、Kallisto)估计。
- 可选:GC 含量、文库组成偏差等额外校正因子(如 DESeq2 的 size factors)。
- CPM 矩阵:仅校正测序深度的归一化值。
- FPKM/RPKM 矩阵:同时校正测序深度和基因长度的归一化值。
- TPM 矩阵:现代推荐的同时校正深度和长度的归一化值,具有更好的跨样本可比性。
4. 核心思想与数学模型
Section titled “4. 核心思想与数学模型”4.1 CPM (Counts Per Million)
Section titled “4.1 CPM (Counts Per Million)”CPM 是最简单的归一化方法,仅校正测序深度:
其中 是基因 的原始计数, 是样本的总 Reads 数(文库大小, Library Size), 是基因总数。
- 优点:计算简单,直觉清晰。适用于同一个样本内不同基因之间的粗略比较。
- 缺点:没有校正基因长度,因此不能直接比较不同基因的表达量。例如,一个 CPM 为 100 的短基因和一个 CPM 为 100 的长基因,其真实转录本分子数可能相差数倍。
4.2 RPKM / FPKM
Section titled “4.2 RPKM / FPKM”RPKM (Reads Per Kilobase per Million) 用于单端测序,FPKM (Fragments Per Kilobase per Million) 用于双端测序。两者的数学结构相同:
其中 是基因 的有效长度(单位为 bp), 是原始计数。
FPKM 的归一化逻辑是”先按长度校正,再按深度校正”:
- 长度校正:将计数除以基因长度(以 kb 为单位),得到”每 kb 的 Read 密度”。
- 深度校正:再除以总 Reads 数(以百万为单位),得到”每百万 Reads 中每 kb 的 Read 数”。
- RPKM (Reads Per Kilobase per Million)
- 单端测序时代的标准归一化指标。公式:$RPKM = rac{Reads imes 10^9}{Length imes TotalReads}$。由 Mortazavi 等人在 2008 年提出。
- FPKM (Fragments Per Kilobase per Million)
- 双端测序时代的对应指标。区别在于计数单位从"Reads"变为"Fragments"(一个 Fragment 可能对应一对 Reads)。公式结构与 RPKM 相同。
- TPM (Transcripts Per Million)
- 现代推荐的归一化指标。核心改进:确保每个样本中所有基因的 TPM 总和恰好等于 $10^6$,使跨样本比较的比例关系更加一致。
4.3 TPM (Transcripts Per Million)
Section titled “4.3 TPM (Transcripts Per Million)”TPM 的计算分为两步:
第一步:按长度归一化(计算 RPK)
第二步:按深度归一化(缩放到 )
TPM 的关键性质:在任何样本中,。
4.4 为什么 TPM 优于 FPKM?
Section titled “4.4 为什么 TPM 优于 FPKM?”两者的差异在于归一化的顺序:
| FPKM | TPM | |
|---|---|---|
| 第一步 | 除以长度 | 除以长度 |
| 第二步 | 除以总 Reads 数(一个固定的标量) | 除以所有基因 RPK 之和(一个与基因表达分布相关的量) |
FPKM 的缺陷:不同样本的 FPKM 总和是不固定的。如果样本 A 中少数高表达基因占据了大量 Reads(即”文库组成偏差”),那么样本 A 的 FPKM 总和会不同于样本 B。这导致 FPKM 的比例关系在跨样本比较时会发生扭曲。
TPM 的优势:由于 TPM 总和恒为 ,TPM 直接反映了转录本池中的相对比例。如果基因 X 在样本 A 中的 TPM 是 50,在样本 B 中是 100,那么可以直接说基因 X 在样本 B 中的相对丰度是样本 A 的 2 倍。这种比例关系的保真性是 FPKM 无法保证的。
4.5 FPKM 与 TPM 的数学关系
Section titled “4.5 FPKM 与 TPM 的数学关系”从 FPKM 转换到 TPM:
这个公式揭示了 TPM 的本质:对 FPKM 做了一次”再归一化”,使得所有基因的值加起来等于 。因此,TPM 和 FPKM 之间的相对关系在同一样本内是相同的——基因 X 的 TPM 是基因 Y 的 3 倍,那么基因 X 的 FPKM 也是基因 Y 的 3 倍。差异仅体现在跨样本比较时。
4.6 有效长度(Effective Length)
Section titled “4.6 有效长度(Effective Length)”在上述公式中,长度 并非转录本的名义长度(Nominal Length),而是有效长度(Effective Length) 。
为什么需要有效长度?
Section titled “为什么需要有效长度?”理想状态下,Read 可以落在转录本的任何位置。但现实中,受 Read 长度和文库构建的限制:
- 转录本的 5’ 端和 3’ 端附近无法产生完整的 Read(因为 Read 长度可能超出边界)。
- 文库构建过程中的片段化(Fragmentation)步骤会引入偏好性(如超声波打断的片段长度分布并非均匀)。
因此,能够有效产生 Reads 的区域短于转录本的全长。
有效长度的定义
Section titled “有效长度的定义”
其中 是转录本 的名义长度, 是文库中片段(Fragment)的平均长度。减去 是因为:如果片段的平均长度为 ,那么转录本的前 个碱基和后 个碱基无法产生完整的片段。
Salmon 和 Kallisto 等现代工具并非使用固定的片段平均长度,而是通过期望最大化(EM)算法从数据中动态估计每个转录本的有效长度。这种方法能够捕捉不同转录本之间的片段化偏好差异,提供更精确的定量结果。
5. Worked Example
Section titled “5. Worked Example”假设一个样本中有 3 个基因,测序总 Reads 数为 (1000 万),片段平均长度为 200 bp。
| 基因 | 原始计数 | 名义长度 (bp) | 有效长度 (bp) |
|---|---|---|---|
| Gene A | 50,000 | 2,000 | 1,801 |
| Gene B | 10,000 | 1,000 | 801 |
| Gene C | 1,000 | 500 | 301 |
计算 CPM
Section titled “计算 CPM”
注意:Gene A 的 CPM 是 Gene B 的 5 倍,但这部分反映了 Gene A 长度是 Gene B 的 2 倍。
计算 FPKM
Section titled “计算 FPKM”
FPKM 总和:(不等于任何固定值)。
计算 TPM
Section titled “计算 TPM”第一步:RPK
RPK 总和:
第二步:TPM
TPM 总和验证:。
- 校正长度后,Gene A 与 Gene B 的表达量比例从 CPM 的 5:1 变为 TPM 的约 2.2:1,反映了 Gene A 比 Gene B 长约 2 倍的效应被消除。
- TPM 可以直接用于跨样本比较:如果另一个样本中 Gene A 的 TPM 为 1274418,则可以直接推断该样本中 Gene A 的相对丰度约为本样本的 2 倍。
6. 复杂度与适用前提
Section titled “6. 复杂度与适用前提”CPM vs FPKM vs TPM 对比
Section titled “CPM vs FPKM vs TPM 对比”| 维度 | CPM(每百万计数) | TPM(每百万转录本) |
|---|---|---|
| 归一化维度 | 仅校正测序深度 | 同时校正测序深度和基因长度 |
| 跨样本可比性 | 有限——受基因长度分布影响 | 好——总量恒为 $10^6$ |
| 适用场景 | 同一样本内基因间比较;差异表达原始输入 | 跨样本基因表达比较 |
| 统计性质 | 保持原始计数的离散分布 | 归一化比例值,丢失方差信息 |
| DESeq2/edgeR 兼容 | 推荐——使用原始计数 | 不推荐——统计模型假设被破坏 |
所有三种归一化方法的时间复杂度均为 ( 为基因/转录本数量),计算开销可忽略不计。真正的计算瓶颈在于上游的 Reads 比对或伪比对步骤。
| 前提 | 影响程度 | 说明 |
|---|---|---|
| 文库大小估计准确 | 高 | CPM/FPKM/TPM 都依赖总 Reads 数。如果文库中含有大量 rRNA 污染,总 Reads 数被高估,所有归一化值会被系统性低估。 |
| 有效长度估计合理 | 中-高 | 对于短转录本(< 500 bp),有效长度与名义长度的差异可能超过 30%,严重影响定量准确性。 |
| RNA 组成相对均一 | 中 | TPM 假设”大多数基因不发生变化”。如果实验条件导致全局转录组重编程(如大量基因被沉默,少数基因被极度激活),TPM 的跨样本可比性也会受到影响。 |
| 无 3’ 偏好 | 中 | 某些 RNA-seq 文库构建方案(如带有 oligo-dT 引物的方案)会引入 3’ 端偏好,导致转录本 5’ 端的覆盖度远低于 3’ 端,此时有效长度的均匀假设不再成立。 |
7. 与真实工具的连接
Section titled “7. 与真实工具的连接”| 工具 | 输出格式 | 说明 |
|---|---|---|
| Salmon | TPM + 有效计数 | 使用基于 EM 的在线学习算法,输出 TPM 和 NumReads(有效计数)。推荐使用 --gcBias 和 --seqBias 选项校正 GC 含量和序列偏好。 |
| Kallisto | TPM + 估计计数 | 基于 k-mer 伪比对和 EM 算法,速度极快。输出 TPM 和 estimated counts。 |
| RSEM | FPKM + TPM + 预期计数 | 支持 alignment-based 和 alignment-free 模式,输出多种归一化指标。 |
| featureCounts / HTSeq-count | 原始计数 | 仅输出基因级别的原始计数,不进行长度归一化。需要下游工具(如 tximport)进一步处理。 |
| Cufflinks | FPKM | 早期工具,输出 FPKM。已基本被 Salmon/Kallisto + tximport 工作流取代。 |
现代 RNA-seq 定量的推荐工作流为:
其中 tximport 负责将转录本级的 TPM 和有效计数聚合为基因级的长度校正计数,DESeq2 使用原始计数性质的数据进行统计建模。TPM 仅用于可视化和样本间趋势比较。