Genomic intervals · Software
MACS3
A peak caller identifying enriched genomic regions from bulk and single-cell ChIP-seq, ATAC-seq, and DNA assays.
What MACS3 is
MACS3 (Model-based Analysis of ChIP-Seq) is an analytical tool designed to identify enriched genomic regions, such as transcription factor binding sites, from high-throughput sequencing assays. It captures genome complexity to evaluate the statistical significance of enriched sequencing tags compared with a random genomic background, while integrating tag positions and orientations to refine the spatial resolution of binding sites.
Originally established for chromatin immunoprecipitation sequencing (ChIP-seq), MACS functions as a general peak caller for any DNA enrichment assay. It handles single-sample profiles as well as comparisons against control samples to improve specificity. Across its versions, the platform has expanded to support both bulk assays and single-cell regulatory genomics, including assay for transposase-accessible chromatin using sequencing (ATAC-seq).
How it works
MACS3 models sequencing coverage against background noise to identify significant regions of signal enrichment (peaks). The peak-calling engine evaluates tag distribution, fragment lengths, and strand orientation, applying internal pileup routines—vectorised and accelerated via NumPy in version 3.0.5—to model peak shapes, calculate coverage tracks, and pinpoint peak summits. For paired-end data, it calculates or reports insertion sizes and can pile up whole fragments.
The software provides 14 modular subcommands to handle individual analysis stages. These subcommands include `callpeak` for standard and broad peak calling, `hmmratac` for Hidden Markov Model-based ATAC-seq peak detection, `bdgdiff` for differential peak detection from bedGraph tracks, `filterdup` for deduplication, `predictd` for fragment length prediction, and `callvar` for variant calling within peak intervals. It also provides routines to convert fragment tracks directly into sparse barcode-by-peak AnnData matrices for single-cell data analysis.
Key facts
- Supported inputs
- BAM, BAMPE, BED, BEDPE, bedGraph, and single-cell fragment data
- Supported outputs
- Peak calls, broad peaks, summits, bedGraph signal tracks, BED/BEDPE files, and AnnData matrices
- Python requirement
- Python 3.12 or later (supported on 3.12, 3.13, and 3.14)
- Subcommands
- 14 available functions (callpeak, bdgpeakcall, bdgbroadcall, bdgcmp, bdgopt, cmbreps, bdgdiff, filterdup, predictd, pileup, randsample, refinepeak, callvar, hmmratac)
- Latest release
- 3.0.5
What you can use it for
- Transcription factor ChIP-seq peak calling
- Identify narrow transcription factor binding sites from single-end or paired-end ChIP-seq alignment files, either with or without a matched control sample.
- Broad histone mark profiling
- Detect diffuse, broad regions of enriched signal from histone modification ChIP-seq data using broad peak calling modes.
- ATAC-seq and scATAC-seq accessibility detection
- Call accessible chromatin regions from bulk or single-cell ATAC-seq data using paired-end parameters or dedicated Hidden Markov Model routines.
- Differential peak detection
- Identify differential binding sites across experimental conditions by comparing paired four-track bedGraph signal files.
- Single-cell count matrix generation
- Build sparse barcode-by-peak AnnData matrices directly from single-cell fragment data while merging adjacent or overlapping regions.
Run it here
MACS3 is preinstalled on the machine behind every research conversation. Ask the agent in plain language, or give it the exact command — it runs it, reads the output and explains it.
Try asking
“Call peaks on this ChIP-seq BAM against its input control with MACS3.”
Strengths and limits
Good at
- Integrates both tag position and strand orientation to resolve binding summits with high spatial accuracy.
- Operates either with or without a matched control sample to detect regions enriched above background.
- Provides 14 specialised subcommands supporting a broad workflow from fragment size estimation to differential binding and variant calling.
- Exports single-cell fragment counts directly to sparse AnnData objects for single-cell genomics workflows.
Watch out for
- Windows operating systems are not currently supported.
- The hmmratac algorithm may produce differing results on aarch64, armv7, ppc64le, and s390x compared to x86 or Apple Silicon systems.
- Requires Python 3.12 or newer, precluding environments limited to older Python versions.
Questions
Can I run MACS3 online without installing it?
MACS3 is preinstalled on the machine behind every research conversation. Ask the agent in plain language, or give it the exact command — it runs it, reads the output and explains it.
What licence is MACS3 under?
MACS3 is published under its authors' own licence; the project page at https://macs3-project.github.io/MACS/ states it.
Can MACS3 call peaks without a control sample?
Yes. MACS3 can call peaks from ChIP-seq or DNA enrichment data alone, though including a matched control sample increases specificity.
What is the difference between regular peak calling and broad peak calling?
Regular peak calling targets narrow enriched regions such as transcription factor binding sites, whereas broad peak calling targets wider, diffuse enrichment patterns typical of certain histone marks.
Does MACS3 support single-cell data?
Yes. It supports single-cell ATAC-seq data via the HMM-based peak caller `hmmratac` and includes functionality to construct AnnData sparse matrices directly from single-cell fragment files.
Which operating systems are supported?
MACS3 is tested and supported on Linux and macOS across various architectures. Windows is not supported.
How to cite it
MACS3: A Peak-calling Platform for Bulk and Single-cell Regulatory Genomics, 2026, doi:10.1093/gpbjnl/qzag097/8802115
Written from MACS3's own README and project page. Statements citing a figure that does not appear there are removed before publication. Licence and running details come from our registry.