Benchmarking suite for Indian monsoon onset prediction across climatology, deterministic models, and probabilistic (ensemble) models. The repository includes evaluation scripts, reliability and skill score analysis, and example datasets on a 4° grid.
This repository is released alongside the preprint submitted to arXiv 2602.03767.
Decision-oriented benchmarking to transform AI weather forecast access: Application to the Indian monsoon
Rajat Masiwal, Colin Aitken, Adam Marchakitus, Mayank Gupta, Katherine Kowal, Hamid A. Pahlavan, Tyler Yang, Y. Qiang Sun, Michael Kremer, Amir Jina, William R. Boos, and Pedram Hassanzadeh
arXiv: 2602.03767
All data used in this repository is publicly available on Zenodo. Once downloaded, the files can be moved into this repository following the structure outlined below.
codes/— analysis scripts (MAE/FAR/MR, reliability, skill scores, threshold generation)complete_onset_benchmarking_climatology.sh— end-to-end pipeline for climatology baselinecomplete_onset_benchmarking_deterministic_models.sh— end-to-end pipeline for deterministic modelscomplete_onset_benchmarking_probabilistic_models.sh— end-to-end pipeline for probabilistic modelsimd_rainfall_data_4p0/— IMD rainfall observations (1901–2024, 4° grid)imd_rainfall_threshold_4p0/— 5‑day wet spell threshold file (mwset4x4.nc4)rainfall_4p0/— example model forecast datasets (4° grid)ind_map_shpfile/— India boundary shapefile for plotting
The analysis scripts rely on the following Python packages:
numpyxarraymatplotlibgeopandasscipyseabornh5netcdf
Install with:
pip install numpy xarray matplotlib geopandas scipy seaborn h5netcdfModel forecasts should be on the same grid as IMD observations. If needed, you can regrid with CDO using the grid files in codes/cdo_grid_config/:
cdo rempacon,codes/cdo_grid_config/4p0_grid_ind.txt input.nc output.nc- Location:
imd_rainfall_data_4p0/ - Format: yearly NetCDF files named
{year}.nc - Variable:
RAINFALL(daily precipitation in mm) - Dimensions:
lat/lonandTIME
- Location:
imd_rainfall_threshold_4p0/mwset4x4.nc4 - Variable:
MWmean - Generation:
codes/onset_threshold_imd/imd_onset_threshold.py
- Location:
rainfall_4p0/<MODEL_NAME>/{year}.nc - Variable:
tp(daily precipitation in mm) - Dimensions:
time,day,lat,lon - For ensemble models: additional
numberdimension
./complete_onset_benchmarking_climatology.shBASE_MODEL_NAME=FuXi \
MODEL_FORECAST_DIR=./rainfall_4p0/FuXi \
./complete_onset_benchmarking_deterministic_models.shBASE_MODEL_NAME=NeuralGCM \
MODEL_FORECAST_DIR=./rainfall_4p0/NeuralGCM \
MEM_NUM=50 \
./complete_onset_benchmarking_probabilistic_models.shAll scripts write outputs under ./output/<MODEL_NAME> by default.
Each pipeline supports common evaluation periods via the PERIOD environment variable:
recent: 2019–2024extended: 1965–1978 and 2019–2024common: 2004–2021full: 1965–2024custom: setCUSTOM_YEARSto a space‑separated list
Examples:
PERIOD=recent ./complete_onset_benchmarking_deterministic_models.sh
PERIOD=custom CUSTOM_YEARS="2010 2011 2015 2020 2021" \
./complete_onset_benchmarking_probabilistic_models.sh- NetCDF metrics by grid cell (MAE, FAR, Miss Rate)
- Spatial plots with India boundary and CMZ overlays
- Reliability diagrams PNG
- Binned reliability CSVs
- Overall skill scores CSV
- Binned skill scores CSV
- Heatmap PNG
For deeper configuration options and method descriptions, see:
codes/mae_far_mr_climatology/README.mdcodes/mae_far_mr_deterministic_models/README.mdcodes/mae_far_mr_probabilistic_models/README.mdcodes/reliability_diagram/README.mdcodes/probabilistic_skill_scores/README.mdcodes/onset_threshold_imd/README.md
@misc{masiwal2026decisionorientedbenchmarkingtransformai,
title={Decision-oriented benchmarking to transform AI weather forecast access: Application to the Indian monsoon},
author={Rajat Masiwal and Colin Aitken and Adam Marchakitus and Mayank Gupta and Katherine Kowal and Hamid A. Pahlavan and Tyler Yang and Y. Qiang Sun and Michael Kremer and Amir Jina and William R. Boos and Pedram Hassanzadeh},
year={2026},
eprint={2602.03767},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2602.03767},
}