[ PROMPT_NODE_26464 ]
normalization_methods
[ SKILL_DOCUMENTATION ]
# deepTools 归一化方法
本文档解释了 deepTools 中可用的各种归一化方法以及每种方法的使用时机。
## 为什么要归一化?
归一化对于以下情况至关重要:
1. **比较具有不同测序深度的样本**
2. **考虑文库大小的差异**
3. **使覆盖度值在不同实验间具有可解释性**
4. **实现不同条件下的公平比较**
如果不进行归一化,即使真实的生物学信号完全相同,拥有 1 亿条读取(reads)的样本看起来也会比拥有 5000 万条读取的样本具有更高的覆盖度。
---
## 可用的归一化方法
### 1. RPKM (每百万映射读取中每千碱基的读取数)
**公式:** `(读取数) / (区域长度(kb) × 总映射读取数(百万))`
**使用时机:**
- 比较同一样本内的不同基因组区域
- 同时针对测序深度和区域长度进行调整
- RNA-seq 基因表达分析
**可用工具:** `bamCoverage`
**示例:**
bash
bamCoverage --bam input.bam --outFileName output.bw
--normalizeUsing RPKM
**解释:** RPKM 为 10 表示每百万映射读取中,该特征每千碱基有 10 条读取。
**优点:**
- 同时考虑了区域长度和文库大小
- 在基因组学中被广泛使用和理解
**缺点:**
- 如果总 RNA 含量不同,不适合在样本间进行比较
- 在比较组成差异很大的样本时可能会产生误导
---
### 2. CPM (每百万映射读取的计数)
**公式:** `(读取数) / (总映射读取数(百万))`
**别名:** RPM (每百万读取数)
**使用时机:**
- 在不同样本间比较相同的基因组区域
- 当区域长度恒定或不相关时
- ChIP-seq、ATAC-seq、DNase-seq 分析
**可用工具:** `bamCoverage`, `bamCompare`
**示例:**
bash
bamCoverage --bam input.bam --outFileName output.bw
--normalizeUsing CPM
**解释:** CPM 为 5 表示在该分箱(bin)中,每百万映射读取有 5 条读取。
**优点:**
- 简单直观
- 适合比较具有不同测序深度的样本
- 在比较固定大小的分箱时非常合适
**缺点:**
- 未考虑区域长度
- 受高丰度区域影响(例如 RNA-seq 中的 rRNA)
---
### 3. BPM (每百万映射读取的分箱数)
**公式:** `(分箱中的读取数) / (所有分箱中的读取总数(百万))`
**与 CPM 的主要区别:** 仅考虑落入分析分箱内的读取,而不考虑所有映射