PepC-Global Intensity
A Python package for predicting tropical cyclone intensity using pre-trained Input-Output Hidden Markov Models.
Installation
pip install --upgrade pepc-global-intensity
Or from source:
git clone https://github.com/CongGao-CG/pepc-global-intensity.git
cd pepc-global-intensity
pip install .
Quick Start
import pandas as pd
from pepc_global_intensity import predict_intensity
# Create DataFrame for a single storm with required columns
df = pd.DataFrame({
"step": [0, 1, 2],
"time": pd.to_datetime(["2000-07-01 00:00", "2000-07-01 06:00", "2000-07-01 12:00"]),
"year": [2000, 2000, 2000],
"mode": ["ocean", "ocean", "ocean"],
"ILD": [50.0, 50.0, 50.0],
"grd": [1e-4, 1e-4, 1e-4],
"ut": [5.0, 5.0, 5.0],
"pi": [70.0, 70.0, 70.0],
"shr": [10.0, 10.0, 10.0],
"rh600": [0.7, 0.7, 0.7],
"ocean": [True, True, True],
"ocean_next": [True, True, True],
"mean_stl1": [0.0, 0.0, 0.0],
"mean_swvl1": [0.0, 0.0, 0.0],
})
# Predict intensity for a specific basin and experiment
result = predict_intensity(
basin="NA", # North Atlantic
df=df,
experiment="historical",
model="ACCESS-ESM1-5",
variant="r1i1p1f1",
seed=42,
)
print(result[["step", "time", "pre_wind", "state"]])
Available Basins
| Basin Code | Name | Latitude Range | Longitude Range |
|---|---|---|---|
AS |
Arabian Sea | 5° to 22.5°N | 50° to 77.5°E |
BoB |
Bay of Bengal | 5° to 22.5°N | 80° to 100°E |
WNP |
Western North Pacific | 5° to 30°N | 102.5°E to 180° |
ENP |
Eastern North Pacific | 5° to 25°N | 177.5° to 75°W |
NA |
North Atlantic | 5° to 30°N | 97.5° to 2.5°W |
SI |
South Indian | 30° to 5°S | 20° to 145°E |
SP |
South Pacific | 30° to 5°S | 147.5°E to 100°W |
API Reference
predict_intensity(basin, df, experiment, model, variant, seed)
Predict tropical cyclone intensity using Input-Output Hidden Markov Models.
Parameters:
basin(str): Basin name (one of: 'AS', 'BoB', 'WNP', 'ENP', 'NA', 'SI', 'SP')df(pd.DataFrame): Pre-prepared data for a single storm with required columns (see Input Variables table below)experiment(str): Experiment type — 'historical' or 'ssp585'model(str): CMIP6 model name (used for ssp585 upper-bound schedule lookup)variant(str): CMIP6 variant label (used for ssp585 upper-bound schedule lookup)seed(int or None): Random seed for reproducibility
Returns:
pd.DataFrame: Copy of the input DataFrame with added columns:pre_wind: Predicted wind speedpre_delta_wind_b: Predicted backward wind changepre_delta_wind_f: Predicted forward wind changepre_ocn: Predicted ocean statestate: Hidden state classification
Raises:
ValueError: If basin is invalid, experiment is not 'historical' or 'ssp585', or required columns are missing from df
get_basin_names()
Get the list of valid basin names.
Returns:
list[str]: List of 7 basin names
BASINS
List of valid basin names.
Input Variables
| Variable | Description | Typical Units |
|---|---|---|
| step | Track point index within the storm (0 at genesis) | — |
| time | Timestamp | datetime |
| year | Calendar year | — |
| mode | Surface type: 'ocean', 'land', or 'not' | — |
| ILD | Isothermal layer depth | m |
| grd | Ocean temperature gradient | K m^−1 |
| ut | Storm translation speed | m s^−1 |
| pi | Potential intensity | kt |
| shr | Vertical wind shear between 200 hPa and 850 hPa | m s^−1 |
| rh600 | Relative humidity at 600 hPa | % |
| ocean | ocean fraction at the current position | — |
| ocean_next | ocean fraction at the next 6-hour position | — |
| mean_stl1 | Land-weighted soil temperature, 0.2·stl1·(1−ocean) + 0.8·stl1_next·(1−ocean_next) | K |
| mean_swvl1 | Land-weighted soil water volume, 0.2·swvl1·(1−ocean) + 0.8·swvl1_next·(1−ocean_next) | m^3 m^−3 |
Model Details
This package contains pre-trained Input-Output Hidden Markov Models (IOHMM) for 7 tropical cyclone basins. The models were pre-trained on ERA5 monthly data using multiple environmental predictors known to influence tropical cyclone intensity:
- Ocean coupling (ILD, grd): Ocean thermal structure affecting ocean feedback
- Storm motion (ut): Translation speed affecting ocean feedback
- Potential intensity (pi): Theoretical upper bound on storm strength
- Wind shear (shr): Vertical wind shear affecting intensification
- Mid-level humidity (rh600): Environmental moisture affecting intensification
- Land effects (mean_stl1, mean_swvl1): Soil temperature and moisture setting the land enthalpy flux that slows over-land decay
Over land, wind decays exponentially toward 10 kt: v_next = 10 + (v − 10)·exp(−α·L̄), where L̄ = 0.2·(1−ocean) + 0.8·(1−ocean_next), α = exp(g0 + g1·E), and E = θ̄·max(0, exp(0.07·(T̄ − 299)) − 1), with T̄ = mean_stl1/L̄ and θ̄ = mean_swvl1/L̄.
Each basin has its own pre-trained IOHMM parameters and land-decay coefficients (g0, g1).
License
MIT License
Citation
If you use this package in your research, please cite:
Method development
Gao, Cong, and Ning Lin. "PepC-Global: A Basin-Tuned Probabilistic Tropical Cyclone Model with Enhanced Out-of-Sample Skill and Climate-Sensitive Over-Land Decay." Journal of Advances in Modeling Earth Systems (JAMES), under review. Available at https://arxiv.org/abs/2609.14259.
Applications
Gao, Cong, and Ning Lin. "Recent increase in near-perpendicular tropical cyclone landfall fraction projected to emerge under high-emissions warming." Submitted. Available at https://arxiv.org/abs/2610.00975.
Gao, Cong, and Ning Lin. "A common warming-dependent decline emerges from divergent projections of tropical cyclone frequency." Geophysical Research Letters, under review. Available at https://arxiv.org/abs/2609.16521.
Metadata
Release files for pepc-global-intensity 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pepc_global_intensity-0.1.3.tar.gz | 22.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pepc_global_intensity-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.2 kB
Release files / pepc_global_intensity-0.1.3.tar.gz
| Download URL | pepc_global_intensity-0.1.3.tar.gz |
|---|---|
| Size | 22.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1679f6ea494385b424c0805552b8dd5423fd8454648eeee5c592129b15e0fa2a
|
|
BLAKE2b-256 checksum How to use checksums |
8e811f77c62676bfbfa3e9e3ab043b9733ba06f44cb07df50766ec5dfecbbaec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / pepc_global_intensity-0.1.3-py3-none-any.whl
| Download URL | pepc_global_intensity-0.1.3-py3-none-any.whl |
|---|---|
| Size | 28.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
64e2819503899ad5860da256da082a97c901fa82af6f0a97ac7dbd6d3cd5d593
|
|
BLAKE2b-256 checksum How to use checksums |
3140af2ca21afb3d36d3775b724340fe4f338c143a9830b2960422ca1bef33c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|