定义
MACS2是一种峰值识别软件,全称为基于模型的ChIP测序分析第2版(Model-based Analysis of ChIP-Seq 2)[2]。它的作用是在ChIP-seq、DNase-seq、MeDIP-seq等核酸富集实验中,从比对到参考基因组的读段(read)里,找出信号显著高于背景的基因组区间,这些区间通常被称为峰(peak)[4]。分析时既可以同时提供对照样本,也可以只用处理样本单独运行[4]。
「macs2」是调用该软件的命令名,其下以子命令的形式组织功能,共提供十二个子命令[1]。其中callpeak是主要的峰值识别入口,其余子命令分别承担去重、堆叠读段、模型估计、信号比较等工作[1]。软件以开放源代码方式发布,可由命令行或集成平台调用[5]。
原理
MACS方法的核心创新是刻画读段在结合位点周围的空间分布[2]。在典型的ChIP-seq实验中,测序读段落在免疫沉淀所得DNA片段的两端,正链读段聚集于结合位点上游,负链读段聚集于下游,两簇读段之间存在一个特征性间隔[2]。软件从数据中估计正负链读段分布峰值之间的平均距离d,再把所有读段向片段内部偏移d/2,使信号集中到假定的结合位点上,然后才进行峰值搜索[2]。至于片段长度,软件用经验方式建模估计,因为测序得到的片段长度往往小于超声破碎或文库构建时的估计值[5]。
在判定富集是否显著时,软件把背景读段计数建模为具有动态参数λ_local的泊松分布,该参数可以沿基因组变化[2]。它把候选峰区域内的读段数与两侧更大范围(如1 kb、5 kb、10 kb)的读段数,或与对照样本中同一区域经深度换算后的读段数作比较,从而吸收局部偏差[2]。基于该泊松模型计算p值,再以Benjamini-Hochberg方法把p值转换为q值,用于控制多重检验带来的假发现率[6][7]。q值默认阈值为0.01,对宽泛的修饰标记可以放宽到0.05[6]。
为避免因重复序列而高估可比对范围,分析前需要指定有效基因组大小,即真正可比对的基因组区域长度,它通常只有全基因组的70%至90%[4]。软件作者为人类、小鼠、线虫和果蝇四种物种提供了推荐预设值,分别为2.7×10^9、1.87×10^9、9×10^7和1.2×10^8碱基对[4]。
当输入为BAMPE或BEDPE格式的配对末端数据时,软件不再依赖正负链双峰分布来推断片段长度,而是直接采用配对读段之间实际的插入片段长度来构建堆叠信号[1]。若建模失败或用户主动关闭建模,程序会退回到用extsize参数指定的固定长度,把读段沿5′至3′方向延伸成等长片段[6]。
发展历程
MACS的最初方法由Yong Zhang、Tao Liu等人在2008年发表于《Genome Biology》,当时面向的是短读长测序平台产生的数据[2][8]。初版把信号图谱默认以10 bp分辨率保存,其链位移建模、信号堆叠构建、动态局部背景、泊松富集检验与峰值精修等概念一直延续到后续版本[9]。
原始版本随后由Tao Liu用Python重写并发布为MACS 2[2]。相比初版,MACS2改善了命令行的易用性和对多种输入格式的兼容,新增了识别宽峰的算法,即命令行中的--broad选项,同时还把信号图谱的分辨率提高到1 bp并从图谱直接识别峰[2][9]。配对末端处理、BAMPE与BEDPE输入支持也在这个阶段加入,使观测到的片段区间可以直接参与分析;filterdup、pileup、bdgcmp、predictd、refinepeak等独立工具的命令结构同样成形于MACS2时期[9]。
MACS2的2.2系列持续维护,2.2.5版本针对Python 3做了性能优化,在500万读段的测试中比2.1.4版本少用约20%的时间,但内存占用增加约15%[10]。后续迭代陆续移除对Python 3.5的支持,要求Python 3.6及以上版本[10]。目前该软件的最新迭代为MACS 3.0,在性能改进之外,加入了从ChIP-seq数据中识别变异的新功能[2]。
应用
MACS2最常见的用途是从ChIP-seq数据中定位转录因子结合位点和组蛋白修饰区域[11]。对于转录因子结合位点、CTCF结合位点以及H3K4me3这类分布集中的修饰,一般使用默认的窄峰模式;对于H3K27me3、H3K9me3、H3K36me3等跨越较广区域的修饰标记,则使用宽峰模式,把邻近的显著区域合并成结构域[2][12]。在ATAC-seq等染色质开放性分析中,它同样被用来识别开放区域[11]。
在具体流程中,MACS2通常位于序列比对之后的环节。实际研究里常见的做法是用Bowtie2等工具把读段比对到参考基因组,经过滤与去重后,再用MACS2以200 bp等固定延伸长度识别蛋白与DNA的结合位点[13]。它输出的窄峰或宽峰文件可与MACS2的bdgcmp子命令生成的信号轨道配合使用,后者以折富集等方式对处理与对照的信号图谱作比较[14]。
该软件已被整合进多个公共分析平台。Cistrome平台把MACS作为其ChIP-seq流水线的起点,后续接续峰注释、基序搜索和基因本体分析等步骤[15][3]。Galaxy平台提供MACS与MACS2的封装工具供在线调用[16][17]。Illumina的BaseSpace平台上也存在使用MACS2识别富集区域、再以HOMER发现峰内基序的应用[18]。
局限
MACS2的片段长度模型依赖数据中存在足够多成对的正负链富集区域,模型构建需要100个以上的此类区域,且其折富集倍数要落在设定的mfold范围内[7]。当信号稀疏、测序深度不足或样本趋于饱和时,模型可能构建失败,此时程序会退回到一个任意的片段长度,导致峰的中心位置发生偏移或峰宽异常,而这一情况只在运行日志中给出提示[19]。因此在结果不理想时,改用--nomodel与--extsize并配合交叉相关分析得到的片段长度,是常见的替代方案[19]。
窄峰与宽峰模式的选择对结果影响明显,而这一选择对介于两者之间的修饰标记并不总是清晰[19]。例如H3K4me1、H3K9ac等中等宽度的标记若按默认窄峰模式处理,会把一片较宽的富集区切分成多个子峰;改用宽峰模式又可能把本应分开的区域过度拼接[19]。ENCODE的做法是对H3K27me3、H3K9me3、H3K36me3等使用宽峰模式,其余标记使用常规窄峰模式[12]。
有比较研究指出,MACS2与SEACR在识别峰型上存在各自的偏向,前者更偏向识别窄峰或宽峰中的一端[20]。同一批数据在窄峰模式与宽峰模式下得到的峰数量可能相差约十倍,因为宽峰模式会把间距1 kb以内的子峰拼接起来[19]。由于不同主版本之间的默认设置与算法存在差异,MACS、MACS2与MACS3的峰计数并不要求一致[21]。此外,使用--call-summits选项时,多峰叠加的区域会被拆成2至3条相邻记录,使峰数量偏高[19]。
参见
参考资料
- MACS2 - Model Based Analysis for ChIP-Seq data [引用日期2026-10-14]
- MACS (software) [引用日期2026-10-14]
- ChIP-Seq Data Analysis and Integration with Cistrome [引用日期2026-10-14]
- Peak Callers (MACS2) | Illumina BioInsight Platform [引用日期2026-10-14]
- Package: macs (2.2.7.1-6 and others) [引用日期2026-10-14]
- pypi.org 上的网页 [引用日期2026-10-14]
- Find peaks using MACS2 [引用日期2026-10-14]
- macs on Biowulf [引用日期2026-10-14]
- qzag097(PDF) [引用日期2026-10-14]
- softwareheritage.org 上的网页 [引用日期2026-10-14]
- Overview [引用日期2026-10-14]
- Broad vs Narrow Histone Marks [引用日期2026-10-14]
- github.com/iwc-workflows/chipseq-sr/main [引用日期2026-10-14]
- **Supplemental Methods:** [引用日期2026-10-14]
- ChIP-seq Analysis with Cistrome Tools [引用日期2026-10-14]
- Table of Contents [引用日期2026-10-14]
- Question: WIG file from MACS2 [引用日期2026-10-14]
- ChIPSeq [引用日期2026-10-14]
- SKILL [引用日期2026-10-14]
- s13059-022-02707-w(PDF) [引用日期2026-10-14]