Skip to content

Repository files navigation

PyStormTracker

CI Documentation Status codecov PyPI version TestPyPI Version Conda Version GitHub License PyPI Python Version Docker GHCR DOI

PyStormTracker is a Python package for cyclone trajectory analysis. It provides cyclone detection, trajectory construction, and track-based analysis for meteorological and climate datasets. The package includes a Numba Simple Tracker implementation with high-level concept lineage from Yau and Chang (2020) and TRACK-compatible algorithms with scientific lineage from Hodges (1994, 1995, 1999). The project was initially developed at the National Center for Atmospheric Research (NCAR) during the 2015 SIParCS program.

Features

  • Simple, TRACK-compatible Hodges, and HEALPix tracking.
  • NetCDF, GRIB, Zarr, TrackJSON, TRACK tdump, and IMILAST support across regular, Gaussian, reduced-Gaussian, projected, and HEALPix grids.
  • Spectral preprocessing, feature refinement, track comparison, variable sampling, and storm-track metrics.
  • Serial, Dask, and MPI execution with Numba-accelerated numerical kernels.

Quick start

PyStormTracker requires Python 3.12+.

pip install PyStormTracker

stormtracker track \
    -i data.nc \
    --variable msl \
    -o tracks.trackjson \
    -m min \
    -a hodges

Python API:

import pystormtracker as pst

tracker = pst.HodgesTracker()
tracks = tracker.track(data="data.nc", variable="msl", detection_mode="min")

See the Quickstart for installation options, CLI and Python usage, formats, sample data, and development commands.

Documentation

Documentation · Quickstart · CLI · API · Architecture · Hodges / TRACK · HEALPix · TrackJSON · Benchmarks

Citations

If you use PyStormTracker in research, please cite the software:

PyStormTracker was originally presented as:

  • Yau, A. M. W., K. Paul, and J. Dennis, 2016: PyStormTracker: A Parallel Object-Oriented Cyclone Tracker in Python. 96th American Meteorological Society Annual Meeting, New Orleans, LA. Zenodo, doi:10.5281/zenodo.18868625.

For methods used by the Simple tracker and storm-track analysis:

  • Yau, A. M. W., and E. K. M. Chang, 2020: Finding Storm Track Activity Metrics That Are Highly Correlated with Weather Impacts. Part I: Frameworks for Evaluation and Accumulated Track Activity. J. Climate, 33, 10169–10186, doi:10.1175/JCLI-D-20-0393.1.

For the feature-identification and trajectory-linking methods implemented by HodgesTracker:

PyStormTracker uses ducc0 for spherical-harmonic transforms and related spherical numerical operations:

  • Reinecke, M., 2020: DUCC: Distinctly Useful Code Collection. Astrophysics Source Code Library, record ascl:2008.023.

For the IMILAST cyclone-tracking intercomparison:

  • Neu, U., et al., 2013: IMILAST: A Community Effort to Intercompare Extratropical Cyclone Detection and Tracking Algorithms. Bull. Amer. Meteor. Soc., 94, 529–547, doi:10.1175/BAMS-D-11-00154.1.

Additional method-specific references are given in the relevant documentation.

License

PyStormTracker is distributed under the BSD 3-Clause License.

About

A High-Performance Cyclone Tracker in Python

Topics

Resources

Contributing

Stars

21 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages