{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/a-log-linear-time-algorithm-for-constrained","title":"A log-linear time algorithm for constrained changepoint detection","arxiv_id":"1703.03352","date":"2017-03-09","proceeding":null,"authors":["Toby Dylan Hocking","Guillem Rigaill","Paul Fearnhead","Guillaume Bourque"],"abstract":"Changepoint detection is a central problem in time series and genomic data.\nFor some applications, it is natural to impose constraints on the directions of\nchanges. One example is ChIP-seq data, for which adding an up-down constraint\nimproves peak detection accuracy, but makes the optimization problem more\ncomplicated. We show how a recently proposed functional pruning technique can\nbe adapted to solve such constrained changepoint detection problems. This leads\nto a new algorithm which can solve problems with arbitrary affine constraints\non adjacent segment means, and which has empirical time complexity that is\nlog-linear in the amount of data. This algorithm achieves state-of-the-art\naccuracy in a benchmark of several genomic data sets, and is orders of\nmagnitude faster than existing algorithms that have similar accuracy. Our\nimplementation is available as the PeakSegPDPA function in the coseg R package,\nhttps://github.com/tdhock/coseg","url_abs":"http://arxiv.org/abs/1703.03352v1","url_pdf":"http://arxiv.org/pdf/1703.03352v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"a-log-linear-time-algorithm-for-constrained","repo_url":"https://github.com/tdhock/PeakSegFPOP-paper","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"a-log-linear-time-algorithm-for-constrained","repo_url":"https://github.com/tdhock/coseg","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":null},{"paper_slug":"a-log-linear-time-algorithm-for-constrained","repo_url":"https://github.com/jewellsean/FastLZeroSpikeInference","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"a-log-linear-time-algorithm-for-constrained","repo_url":"https://github.com/tdhock/PeakSegDisk","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"a-log-linear-time-algorithm-for-constrained","repo_url":"https://github.com/tdhock/PeakSegPipeline","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"a-log-linear-time-algorithm-for-constrained","repo_url":"https://github.com/tdhock/feature-learning-benchmark","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"a-log-linear-time-algorithm-for-constrained","repo_url":"https://github.com/vrunge/gfpop","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null}],"tasks":[{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"}],"methods":[{"method_slug":"pruning","method_name":"Pruning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":null,"mcp":null,"developers":"https://syntology.ai/developers"},"arxiv_metadata":null,"syntology_extracted_results":null}