Papers › A log-linear time algorithm for constrained changepoint detection

A log-linear time algorithm for constrained changepoint detection

9 Mar 2017arXiv:1703.03352archive 2025-07-28

Toby Dylan Hocking, Guillem Rigaill, Paul Fearnhead, Guillaume Bourque

Changepoint detection is a central problem in time series and genomic data. For some applications, it is natural to impose constraints on the directions of changes. One example is ChIP-seq data, for which adding an up-down constraint improves peak detection accuracy, but makes the optimization problem more complicated. We show how a recently proposed functional pruning technique can be adapted to solve such constrained changepoint detection problems. This leads to a new algorithm which can solve problems with arbitrary affine constraints on adjacent segment means, and which has empirical time complexity that is log-linear in the amount of data. This algorithm achieves state-of-the-art accuracy in a benchmark of several genomic data sets, and is orders of magnitude faster than existing algorithms that have similar accuracy. Our implementation is available as the PeakSegPDPA function in the coseg R package, https://github.com/tdhock/coseg

PaperPDFCode

Code

tdhock/PeakSegFPOP-paper officialmentioned in papermentioned on GitHub report
tdhock/coseg officialmentioned in paper report
tdhock/PeakSegDisk mentioned on GitHub report
tdhock/PeakSegPipeline mentioned on GitHub report
vrunge/gfpop mentioned on GitHub report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

Not run by Syntology. Nothing on this page verifies that the listed code works.

Tasks

Time SeriesTime Series Analysis

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Methods

Pruning

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections