ruptures
Change point detection for signals in Python.
What it is and what it does
Ruptures is a Python library for offline change point detection in time series and signal data. It provides a collection of algorithms—both exact and approximate—for identifying structural breaks in non-stationary signals under various statistical models. The library emphasizes a consistent, well-documented interface and modular design, allowing different detection algorithms and cost models to be combined and extended.
The package depends on numpy and scipy for numerical computation. It is designed for offline analysis (where the entire signal is available upfront) rather than streaming detection. Users instantiate an algorithm object (e.g., Pelt with a kernel model), fit it to their signal, and call predict() to retrieve estimated change point locations. The library handles both univariate and multivariate signals.
Use it for:
- Detect regime changes in financial time series to identify market shifts or volatility transitions.
- Segment sensor data or environmental measurements to identify periods of anomalous behavior.
- Analyze neuroscience signals (e.g., acetylcholine regulation) to identify state transitions in biological systems.
- Monitor agricultural or remote sensing data to identify changes in crop health or land use patterns.
- Identify shifts in classroom engagement or student participation patterns in educational settings.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Detects change points in time series and signal data using exact and approximate algorithms for parametric and non-parametric models.
Yes. Ruptures is actively maintained, has no known vulnerabilities, and offers a comprehensive, well-documented toolkit for a specialized but important problem. The permissive BSD license and broad Python version support (3.9–3.13) make it low-risk to adopt. Install it if you need to detect structural breaks in time series or signal data.
Install
ruptures on PyPI
pip
pip install rupturesuv
uv add rupturespoetry
poetry add rupturesInstalling ruptures
Before you install
Medium install friction due to compiled wheels for multiple Python versions and architectures. The package is actively maintained with a recent release and 2069 repository stars, indicating stable ongoing development.
License in practice
BSD-2-Clause permissive license allows commercial and private use with minimal restrictions—only requiring preservation of copyright and license text in distributions.
Quickstart
import ruptures as rpt
import numpy as np
# Create a signal with known breakpoints
signal, true_bkps = rpt.pw_constant(1000, 3, 4, noise_std=4)
# Detect change points using Pelt algorithm
algo = rpt.Pelt(model="rbf").fit(signal)
detected_bkps = algo.predict(pen=10)
print(detected_bkps)
Verify before relying
- Whether the package's performance characteristics scale adequately for very large time series datasets.
- Specific memory requirements or constraints when working with high-dimensional signals.
Package facts
| License | BSD-2-Clause (permissive) |
| Python support | supports the current Python release (<3.14,>=3.9) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 2 — numpy, scipy |
| Maintenance | actively maintained — 338 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,558,626/month — #3,764 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: ruptures-1.1.10-cp310-cp310-macosx_10_9_x86_64.whl; ruptures-1.1.10-cp310-cp310-macosx_11_0_arm64.whl; ruptures-1.1.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; ruptures-1.1.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; ruptures-1.1.10-cp310-cp310-win_amd64.whl; ruptures-1.1.10-cp311-cp311-macosx_10_9_x86_64.whl; ruptures-1.1.10-cp311-cp311-macosx_11_0_arm64.whl; ruptures-1.1.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; ruptures-1.1.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; ruptures-1.1.10-cp311-cp311-win_amd64.whl; ruptures-1.1.10-cp312-cp312-macosx_10_13_x86_64.whl; ruptures-1.1.10-cp312-cp312-macosx_11_0_arm64.whl; ruptures-1.1.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; ruptures-1.1.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; ruptures-1.1.10-cp312-cp312-win_amd64.whl; ruptures-1.1.10-cp313-cp313-macosx_10_13_x86_64.whl; ruptures-1.1.10-cp313-cp313-macosx_11_0_arm64.whl; ruptures-1.1.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; ruptures-1.1.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; ruptures-1.1.10-cp313-cp313-win_amd64.whl
Keywords: change point detection, signal segmentation, computer science, machine learning, kernel methods, time series
Tags
More Mathematics packages
NetworkX provides data structures and…
permissive · top 1,000 on PyPI
kiwisolverkiwisolver is a Python binding to a fast C++…
permissive · top 1,000 on PyPI
sympySymPy is a Python library for symbolic…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
torchPyTorch provides GPU-accelerated tensor…
permissive · top 1,000 on PyPI
onnxruntimeonnxruntime loads and executes Open Neural…
permissive · top 1,000 on PyPI
tsfreshAutomatically extracts hundreds of time-series…
permissive · top 15,000 on PyPI
pytsPyts provides time series classification…
permissive · top 15,000 on PyPI
pypotsPyPOTS provides machine learning algorithms for…
permissive · top 15,000 on PyPI
scikit-posthocsProvides post hoc statistical tests for…
permissive · top 15,000 on PyPI
pymannkendallImplements a suite of Mann-Kendall trend tests…
permissive · top 15,000 on PyPI
neurokit2NeuroKit2 processes physiological signals (ECG,…
permissive · top 15,000 on PyPI
archProvides ARCH/GARCH volatility models, unit…
unclear · top 5,000 on PyPI
piecewise-regressionFits piecewise linear regression models to data…
permissive · top 15,000 on PyPI
pyPPGAnalyzes finger photoplethysmogram (PPG)…
agpl · top 15,000 on PyPI
rainflowRainflow implements the ASTM E1049-85 rainflow…
permissive · top 15,000 on PyPI