Skip to main content

CycloPhaser: A Python Package for Detecting Extratropical Cyclone Life Cycles

Documentation Status PyPI version PyPI Downloads CircleCI License: GPL v3 or later Python Versions DOI

CycloPhaser is a package designed to automate and improve the accuracy of detecting and categorizing cyclone life cycle phases, including intensification, maturation, and decay. Understanding these phases is crucial for analyzing cyclone behavior and the dynamic processes that drive their development. This knowledge supports both operational forecasters and researchers focused on improving cyclone representation in numerical models, ultimately enhancing forecast accuracy. Traditionally, phase identification requires manual analysis, which introduces subjectivity and limits the feasibility of analyzing large datasets. CycloPhaser addresses these challenges by offering an efficient, objective approach, compatible with high-resolution reanalysis data and real-time observations alike. With CycloPhaser, users gain a powerful tool for cyclone life cycle classification, supporting both advanced meteorological research and practical forecasting applications.

CycloPhaser is described in detail in the paper by de Souza et al. (2025) and has been used to generate results presented by de Souza et al. (2024).

CycloPhaser Example Plot

Important Note: CycloPhaser requires cyclone tracking data as input but does not perform cyclone tracking itself. There are various cyclone tracking algorithms available in the literature. Walker et al. (2020) provide a discussion on these methods, while open-source tracking tools, such as CyTRACK by Pérez-Alarcón et al. (2024), are publicly accessible. Additionally, cyclone track databases, like the Atlantic extratropical cyclone tracks database by Gramcianinov et al. (2020), are available for use.

Installation

  1. Install using pip

    pip install cyclophaser
    

Documentation

For detailed documentation, visit the CycloPhaser Documentation. This includes function parameters, module descriptions, and more.

Interactive Calibration Tool

CycloPhaser includes a visual calibration app built with Streamlit that lets you tune filtering and phase-detection parameters interactively, inspect results across multiple cyclones side-by-side, and export configurations as YAML for use in your own scripts.

This tool is not part of the PyPI package — it is not installed by pip install cyclophaser. It lives in the repository under tools/calibration_app/.

Hosted version (no installation required):

<STREAMLIT_APP_URL>

Run locally:

# 1. Clone the repository
git clone https://github.com/daniloceano/CycloPhaser.git
cd CycloPhaser

# 2. Install app dependencies (pulls cyclophaser from PyPI)
pip install -r tools/calibration_app/requirements.txt

# 3. Launch
streamlit run tools/calibration_app/app.py

For local development with an editable install of CycloPhaser (changes to the source take effect immediately):

pip install -e .
pip install -r tools/calibration_app/requirements-app.txt
streamlit run tools/calibration_app/app.py

Development Environment

Development on this repository (as opposed to just using the released package) needs cyclophaser installed in editable mode, in an environment dedicated to this repo. Installing it non-editably into an environment shared with other projects lets import cyclophaser silently resolve to a different installed copy depending on the current working directory a script happens to be launched from — confirmed concretely: from the repository root it resolves to the repository, from /tmp it resolves to whichever released version is sitting in that environment's site-packages. research/labels/evaluate_against_labels.py imports cyclophaser.determine_periods, so under a shared, non-editable install the version of the detector that scores the manual labels depends on where the script was launched from — silently, with no error.

conda env create -f environment.yml
conda activate cyclophaser
pip install -e .

Verify the editable install actually wins, from a directory outside the repository (the failure mode above only shows up off-repo):

cd /tmp && python -c "import cyclophaser, importlib.metadata as m; print(cyclophaser.__file__); print(m.version('cyclophaser'))"

(cyclophaser.__version__ is not defined by the package — use importlib.metadata.version('cyclophaser') instead, as above.) The printed path must be inside this repository's cyclophaser/ directory and the printed version must be this repository's (setup.py's VERSION), not whatever else may be installed elsewhere — if either is wrong, a different environment is active or the editable install did not take.

Support and Contact

For support, feature requests, or any queries, please open an issue on the GitHub repository.

License

This project is licensed under the GNU General Public License, version 3 or (at your option) any later version (GPL-3.0-or-later), as declared in setup.py. The licence text is in LICENSE; it is also available at https://www.gnu.org/licenses/gpl-3.0.html.

References

  • de Souza, D. C., da Silva Dias, P. L., Gramcianinov, C. B., & de Camargo, R. (2025). CycloPhaser: A Python Package for Detecting Extratropical Cyclone Life Cycles. Journal of Open Source Software, 10(108), 7363. https://doi.org/10.21105/joss.07363

  • de Souza, D. C., da Silva Dias, P. L., Gramcianinov, C. B., da Silva, M. B. L., & de Camargo, R. (2024). New perspectives on South Atlantic storm track through an automatic method for detecting extratropical cyclones' lifecycle. International Journal of Climatology, 44(10), 3568-3588.

  • Gramcianinov, C. B., Campos, R. M., de Camargo, R., Hodges, K. I., Guedes Soares, C., & da Silva Dias, P. L. (2020). Atlantic extratropical cyclone tracks in 41 years of ERA5 and CFSR/CFSv2 databases. Mendeley Data, 4, 108111.

  • Pérez-Alarcón, A., Coll-Hidalgo, P., Trigo, R. M., Nieto, R., & Gimeno, L. (2024). CyTRACK: An open-source and user-friendly Python toolbox for detecting and tracking cyclones. Environmental Modelling & Software, 176, 106027.

  • Walker, E., Mitchell, D. M., & Seviour, W. J. (2020). The numerous approaches to tracking extratropical cyclones and the challenges they present. Weather, 75(11), 336-341.

Metadata

Release files for cyclophaser 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cyclophaser 2.1.0
File Size Uploaded
cyclophaser-2.1.0.tar.gz 203.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cyclophaser 2.1.0
File Interpreter ABI Platform
cyclophaser-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 285.2 kB

Release files / cyclophaser-2.1.0.tar.gz

Download URL cyclophaser-2.1.0.tar.gz
Size 203.8 kB
Tags Source
SHA-256 checksum
How to use checksums
5760167e9007d6f0fa77b23b448f0ecfce93ed9107ba3416614316a2a67f08ef
BLAKE2b-256 checksum
How to use checksums
1880f624ab75ba86d014e6f5c8fbebf7f8e9285892467db9eb23fefbae6d9fd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cyclophaser-2.1.0-py3-none-any.whl

Download URL cyclophaser-2.1.0-py3-none-any.whl
Size 81.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93951b79c6281ad357f913e54ed9a2fdf030d1dc38dea53a98c295f54042488b
BLAKE2b-256 checksum
How to use checksums
847696f7bd3c4f8459d2899f1571d2c7125036904844701c8b05fd38b6da6d42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.0

2 release files

1.9.4

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.11

2 release files

1.8.10

2 release files

1.8.6

2 release files

1.8.5

2 release files

1.8.4

2 release files

1.8.3

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.13

1 release file

1.3.12

2 release files

1.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page