bioRxivBioinformaticsPreprint
Improved peak-calling with MACS2
Abstract
The computational analyses of genome-enrichment assays, such as ChIP-seq and ATAC-seq, are typically concluded with a peak-calling program that identifies genomic regions that are significantly enriched. The most popular peak-caller, MACS2, assumes that the input alignment files are for single-end sequence reads by default, yet those with paired-end Illumina sequence data frequently use this default setting. This leads to erroneous coverage values and suboptimal peak identification. However, using the correct paired-end mode can introduce another set of artifacts. After thoroughly reviewing the MACS2 source code, we have modified it to limit these and other problems. Our updated version is freely available (https://github.com/jsh58/MACS).
- organism: human
- assay: ATAC-seq
- assay: ChIP-seq
- research focus: software / tool
- research focus: variant calling
- approach: statistical model
In-depth summary
Claude Opus 5.5 · xhigh effort · 8 Nov 2026 · from the full text of version 1 (17 Dec 2018) · CC BY 4.0
Running MACS2 in default single-end mode on paired-end ATAC-seq miscalculates fragment coverage and calls low-coverage peaks; a modified MACS2 adds peak-length and gap parameters and fixes calculation bugs.
MACS2, the most popular peak caller by the paper's account (over 3,000 citations as of October 2018), assumes single-end input by default, and a survey of May-June 2018 papers found more than half a dozen paired-end studies analysed that way, which discards R2 reads and distorts fragment coverage. On a published dataset from the Omni-ATAC study the paper measures the cost to peak calls and releases a modified MACS2 with user-set minimum peak length and gap thresholds plus bug fixes.
Key results
ShownIn default single-end mode, MACS2 drops R2 reads and extends each R1 read to a fixed length, so fragment coverage computed on paired-end ATAC-seq is often badly wrong.
In the Corces et al. Omni-ATAC data run with '--nomodel', reads were extended to 200bp, yet only 21.7% of fragments were within 10% of 200bp. Over 40% of positions with true coverage of at least five had computed coverage off by at least 50%; in SRR5427884, at positions with true coverage of at least five, coverage was calculated correctly only 12% of the time. · Abstract; Figure legends
ShownThe coverage errors carry through to peaks: single-end mode calls many peak bases with little real fragment support; paired-end mode ('-f BAMPE') reduces these low-coverage peak bases while also adding some peaks.
Of 17.5Mbp of single-end peak bases (sample SRR5427884), 32.2% had true fragment coverage below three. Paired-end mode gave fewer peaks overall and fewer low-coverage peak bases, and called nearly 1Mbp of additional peaks at coverage above two. Example loci show single-end peaks without apparent enrichment (a 257bp peak near MYRF). · Abstract; Figure legends
SuggestedPaired-end mode can miss real signal because original MACS2 sets the minimum peak length to the average fragment length; the modified version exposes '--min-length' (default 100bp) and '--max-gap' (default 50bp) as user parameters.
In SRR5427884 a significant 129bp region at the TTF1 transcription start site was discarded because the minimum length was 174bp. With '--min-length 100', overlap between single-end and paired-end peak sets increased (Fig. 1D, Supplementary Fig. 6); the text reports no overlap counts. · Abstract; MACS2 modifications; Figure legends
SuggestedAn unresolved hash collision in MACS2 miscalculates p-scores and q-scores in 'callpeak' and 'bdgcmp', which can falsely extend peaks; the modified version fixes it.
In SRR5427886 (run with dynamic lambda), a 1968bp peak over the CTCF transcription start site included a leading 175bp with no significant positions, attached through a single miscalculated q-value caused by the collision (Supplementary Fig. 7). · MACS2 modifications; Figure legends
ClaimedFurther fixes in v2.1.2_dev: corrected average fragment length in paired-end 'callpeak', reduced p-score errors at large control lambda, and double-precision scoring via 'bdgcmp' functions instead of single precision.
Listed among the code changes to MACS2 v2.1.1.20160309; the text presents no data on how these fixes alter peak calls. · MACS2 modifications
Methods, data and reproducibility
Six paired-end ATAC-seq samples from the Corces et al. (Omni-ATAC) study were re-processed (NGmerge trimming, Bowtie2 alignment to hg19, filtering) and peaks called with MACS2 v2.1.1 in single-end ('-f BAM --nomodel'), paired-end ('-f BAMPE') and modified paired-end ('--min-length 100') modes; coverage accuracy and peak-set overlap were compared with BEDTools, alongside source-code fixes to MACS2.
- Paired-end ATAC-seq samples from the Corces et al. Omni-ATAC study (raw fastq from NCBI SRA) · human (reads aligned to hg19) · n = six samples · SRP103230
- Methods & tools
- MACS2 v2.1.1.20160309, modified MACS2 v2.1.2_dev, NGmerge v0.2, Bowtie2 v2.3.2, SAMtools v1.5, BEDTools v2.26.0, IGV v2.4.9, NCBI SRA, hg19 reference genome
- Software & environment
- Versions stated: NGmerge v0.2, Bowtie2 v2.3.2, SAMtools v1.5, MACS2 v2.1.1.20160309 (modified: v2.1.2_dev), BEDTools v2.26.0, IGV v2.4.9; no container or requirements file mentioned.
- Assay conditions & compute
- Run on Harvard's Odyssey cluster (FAS Research Computing); no hardware, run time or memory figures given.
- Reproducibility gaps
- Raw data of the reused Corces et al. study are given as NCBI SRA accession SRP103230 (no URL printed); the Supplementary Table with dataset details is not in the text; no analysis scripts beyond the stated command-line parameters.
Limitations (3)
- Paired-end mode lowers apparent false positives but makes some false negatives more likely, since original MACS2 drops significant regions shorter than the average fragment length (the motivation for '--min-length'). · stated by the authors
- All evidence comes from one published dataset from the Omni-ATAC study (six human samples), with single-end mode tested only as '--nomodel'; with no ground-truth peaks, false positives and negatives are inferred from fragment coverage and example loci. · noted in this summary
- Gains from the new parameters and fixes are not quantified in the text: overlap changes appear only in figures, and the fragment-length, large-lambda and precision fixes come with no supporting data. · noted in this summary
Read this if you call peaks with MACS2 on paired-end ATAC-seq or ChIP-seq data and want to know which input mode to use and what the defaults get wrong.
- Citations
- 304
Reproducibility ledger
Nobody has reported trying to reproduce this paper yet. Did you replicate an experiment or run the code? Your report saves the next lab a week.
Sign in to file a reproducibility report.
Related papers
- RapidMACS: MACS3-identical peak calling, 50x faster
Ling‐Hong Hung, Ka Yee Yeung·bioRxiv·Aug 23, 2026
- F-Seq2: improving the feature density based peak caller with dynamic statistics
Nanxiang Zhao, Alan P. Boyle·NAR Genomics and BioinformaticsPeer-reviewed·Jan 6, 2021
- RECAP reveals the true statistical significance of ChIP-seq peak calls
Justin G. Chitpin, Aseel Awdeh, Theodore J. Perkins·BioinformaticsPeer-reviewed·Feb 27, 2019
- Model-based Analysis of ChIP-Seq (MACS)
Yong Zhang, Tao Liu, … X. Shirley Liu·Genome biologyPeer-reviewed·Sep 17, 2008
- WACS: Improving Peak Calling by Optimally Weighting Controls
Aseel Awdeh, Marcel Turcotte, Theodore J. Perkins·BMC BioinformaticsPeer-reviewed·Feb 15, 2021
- Graph Peak Caller: calling ChIP-Seq Peaks on Graph-based Reference Genomes
Ivar Grytten, Knut Dagestad Rand, … Geir Kjetil Sandve·PLoS Computational BiologyPeer-reviewed·Feb 19, 2019