A Python package for multi-method detection of transitions in paleoclimate time series. Developed by Maryam Niati, Alexander James, Julien Emile-Geay, and Deborah Khider at the University of Southern California.
Proxy records from ice cores, marine sediments, and speleothems reveal that Earth's climate has undergone repeated regime shifts that fundamentally reorganized global climate patterns. Identifying when and how these transitions occurred is essential for understanding past climate variability and assessing the sensitivity of the modern climate system to future forcing.
Ammonyte provides a unified, paleoclimate-oriented interface to three methodologically distinct approaches for transition detection, making cross-validation of results across methods a natural part of the workflow. It extends Pyleoclim and inherits its full suite of tools for preprocessing irregularly sampled, age-uncertain proxy records.
- Augmented Kolmogorov–Smirnov (KS) Test — identifies points where the statistical distribution of values changes abruptly using a sliding-window approach
- Optimization-based Changepoint Detection (Ruptures) — finds breakpoints by minimizing a cost function across multiple search algorithms
- Laplacian Eigenmaps of Recurrence Matrices (LERM) — exploits the geometry of the system's reconstructed state space via recurrence analysis, uniquely sensitive to gradual or dynamical regime changes
pip install ammonyteIt is recommended to install inside a dedicated environment:
conda create -n ammonyte_env python=3.10
conda activate ammonyte_env
pip install ammonyteFull documentation is available at: [link coming soon]
If you use Ammonyte in your research, please cite it using the metadata in CITATION.cff:
Niati, M., James, A., Emile-Geay, J., & Khider, D. (2026). Ammonyte: A Python Package for Multi-Method Detection of Transitions in Paleoclimate Time Series (v1.0.0). https://github.com/LinkedEarth/Ammonyte
This project is licensed under the GNU General Public License v3.0 — see LICENSE for details.
Contributions, bug reports, and feature requests are welcome. Please submit them via GitHub Issues.