MACS2简介
MACS2(Model-based Analysis of ChIP-Seq 2)是目前最主流的 ChIP-seq 和 ATAC-seq peak calling 工具之一,由 陶乐天(Liu Tao) 实验室开发并开源。
它在 2012 年首次发布,至今仍被广泛使用,几乎所有单细胞/批量表观遗传学研究都会用到它或其衍生版本(如 macs2 callpeak
、SEACR
、MACS3
等)。
🧪 一句话定义
MACS2 是一个基于统计模型的峰值检测工具,用于在 ChIP-seq、ATAC-seq、CUT&Tag 等数据中识别蛋白质(或开放染色质)富集区域。
🔍 核心原理
MACS2 使用 泊松分布(Poisson) 或 负二项分布(NB) 对背景 reads 进行建模,计算每个基因组窗口的 富集显著性(p-value),并进一步通过 FDR 校正 得到 q-value。
关键步骤:
- 构建背景模型
- 使用 input DNA(control)或 局部 lambda(滑动窗口)估计背景 reads 密度。
- 计算富集显著性
- 对每个候选窗口计算 observed vs expected 的 p-value。
- 合并相邻显著窗口
- 合并相邻显著区域为一个 peak。
- 估计 peak summit
- 报告 summit 位置(peak 内信号最高的点),便于 motif 分析。
- FDR 校正
- 使用 Benjamini-Hochberg 方法校正多重检验。
🛠️ 常用命令
1. ChIP-seq peak calling
macs2 callpeak \-t chip.bam \ # 处理组(IP)-c input.bam \ # 对照组(input)-f BAM \ # 输入格式-g hs \ # 基因组大小(human: 2.7e9)-n TF_example \ # 输出前缀-B \ # 输出 bedGraph(用于可视化)-q 0.05 # q-value 阈值
2. ATAC-seq peak calling
macs2 callpeak \-t atac.bam \-f BAMPE \ # 双端数据(片段模式)-g hs \-n ATAC_example \--nomodel \ # 跳过模型构建(ATAC 推荐)--shift -75 \ # 调整 Tn5 插入偏移--extsize 150 \-q 0.05
📊 输出文件
文件名 | 内容 |
---|---|
NAME_peaks.narrowPeak | 最常用:包含 peak 坐标、summit、p-value、q-value(可直接用于下游注释) |
NAME_peaks.broadPeak | 宽 peak(如组蛋白修饰 H3K27me3) |
NAME_summits.bed | 每个 peak 的最高点(summit),用于 motif 分析 |
NAME_model.r | R 脚本,用于可视化 fragment 长度分布 |
NAME_treat_pileup.bdg | 处理组信号 bedGraph |
NAME_control_lambda.bdg | 背景信号 bedGraph |
🧬 在单细胞 ATAC-seq 中的应用
在 ArchR 或 Signac 中,MACS2 通常被 批量调用:
- 每个 cluster 或 pseudo-bulk replicate 生成一个 BAM 文件。
- MACS2 对每个 BAM call peak。
- 最后使用 IDR 或 合并策略 得到 一致 peak set。
⚙️ 参数详解(常用)
参数 | 含义 |
---|---|
-t | 处理组 BAM/BED |
-c | 对照组 BAM/BED |
-f | 输入格式(BAM、BED、BAMPE) |
-g | 有效基因组大小(人:2.7e9,鼠:2.1e9) |
-n | 输出文件前缀 |
--nomodel | 跳过模型构建(ATAC 推荐) |
--shift/--extsize | 调整 reads 位置(ATAC 常用) |
-B/--bdg | 输出 bedGraph 用于可视化 |
-q/--p | q-value 或 p-value 阈值 |
--broad | 宽 peak 模式(组蛋白修饰) |
🆚 MACS2 vs MACS3 vs SEACR
工具 | 特点 | 适用场景 |
---|---|---|
MACS2 | 经典、稳定、社区大 | 通用 ChIP-seq/ATAC-seq |
MACS3 | 支持多线程、新模型 | 大样本、长 reads |
SEACR | 专为 ATAC-seq 优化 | 稀疏数据、无对照 |
🧩 一句话记忆
MACS2 = “把一堆 reads 变成生物学意义的 peak” 的工具。
它用统计模型告诉你:“这里确实比背景富集了很多 reads。”
如需更深入的数学模型(如 λ_local
、Poisson-NB
混合模型),可查阅原始论文:
Zhang et al., Genome Biology (2008) “Model-based analysis of ChIP-Seq (MACS)”
泊松分布(Poisson) 和 **负二项分布(Negative Binomial, NB)
🎯 一句话速记
- 泊松分布:
“假设方差 ≈ 均值”,最简单的“随机散落”模型。 - 负二项分布:
“方差 > 均值”,在泊松基础上加入 过度离散(over-dispersion),更贴合真实测序数据。
1️⃣ 泊松分布(Poisson)
📌 定义
描述 单位时间/空间内稀有事件发生的次数。
- 只有一个参数:λ(lambda)=事件的平均发生率(也是方差)。
- 概率质量函数(PMF):
[
P(X=k)=\frac{\lambda^k e^{-\lambda}}{k!}
]
🧬 生物学例子
- 在 input DNA(对照) 中,一条 200 bp 窗口里平均有 5 条 reads → 可用 Poisson(λ=5) 建模。
- Poisson 假设:
如果 λ=5,那么方差也≈5,即“波动不大”。
⚠️ 局限
真实测序数据往往 方差 >> 均值(例如 λ=5,但实际观测方差=15),Poisson 会低估背景波动,导致 假阳性 peak。
2️⃣ 负二项分布(Negative Binomial, NB)
📌 定义
在 Poisson 基础上再包一层 → 允许 λ 本身也是一个随机变量(Gamma 分布),从而 方差 > 均值。
- 两个参数
[
\begin{aligned}
\mu &: \text{均值} \
\theta &: \text{离散参数(越小越离散)}
\end{aligned}
] - 方差公式:
[
\text{Var}(X)=\mu+\frac{\mu^2}{\theta}
]
当 θ→∞ 时,NB → Poisson。
🧬 生物学例子
- ATAC-seq 某个窗口:
- 均值 μ=5
- 由于局部 GC 含量、拷贝数变异、技术噪音 → 实际方差=20
- NB 可以很好地描述这种“比 Poisson 更分散”的数据。
✅ 优势
- 对 过度离散 更稳健,假阳性更低。
- 现代 peak caller(如 MACS2
--bdg --extsize
模式、DESeq2、edgeR)默认使用 NB 而非 Poisson。
🆚 对比表
特性 | 泊松 Poisson | 负二项 NB |
---|---|---|
参数 | λ | μ, θ |
均值-方差关系 | 均值=方差 | 方差>均值 |
过度离散 | ❌ 不支持 | ✅ 支持 |
计算速度 | 快 | 稍慢 |
何时使用 | input DNA 很均匀 | 真实 ChIP/ATAC/RNA-seq |
软件示例 | MACS1 默认 | MACS2 -B --extsize , DESeq2, edgeR |
🧪 直观记忆法
- 泊松:像“下雨滴落在地砖上”——每块砖平均 5 滴,方差也是 5。
- 负二项:像“人群在广场上丢垃圾”——有人丢很多,有人不丢,方差远大于均值。
🏁 一句话总结
Poisson 是“理想化随机”,NB 是“真实世界随机”。
在测序数据分析里,NB 更准确地捕捉了技术+生物学噪音,因此成为主流。