MACS3 3.1.0 release notes
MACS3 3.1.0 brings a substantial speedup to callpeak, adds controls for CPU use, and improves handling of several input and failure cases.
Faster peak calling
Jacob Schreiber's auto-optimize contribution in PR #756 measured 41–64× faster callpeak runs in an 8-core benchmark. The reported speedups are medians of three runs for each workflow:
| Workflow | Measured speedup |
|---|---|
| BAM | 41× |
| FRAG | 64× |
| BAM with control | 49× |
| BAMPE | 57× |
These results are workload-specific; short jobs may see little change, and large inputs may use more peak memory.
CPU controls
- Use
--threads Noncallpeak,predictd,pileup,filterdup,randsample,refinepeak,hmmratac, orcallvarto set an invocation CPU budget. - Set
MACS3_NUM_THREADSto provide a default budget when--threadsis omitted. - Pass an execution policy to supported Python APIs to control CPU use from code.
- Use
--process-backend {auto,serial}withcallpeakorcallvarto choose whether process workers may be used.
Fixes
- Automatic duplicate filtering now applies the control sample's own duplicate threshold to control reads.
- Corrected lower-tail Poisson probabilities for very large expected counts.
- FRAG files may end with a record that has no trailing newline.
- Truncated BAM alignment records are rejected as invalid input.
- Improved reliability and cleanup when peak-calling workers fail or multiple operations run concurrently.
- Documented the Poisson tail convention used for reported p-values.
Compatibility
MACS3 3.1.0 requires Python 3.12 or later, as did MACS3 3.0.5.
Acknowledgements
Thanks to Jacob Schreiber for the callpeak auto-optimize work (PR #755, #756); Cindy Krafft for the duplicate-threshold and Poisson fixes and p-value documentation (PR #753, #777, #789); Michael R. Crusoe for spelling fixes (PR #754); and Apoorva Garg for the native aarch64 CI contribution (PR #793).