Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Daily precipitation climatology and the annual march of the rain belt (GPM IMERG)

Daily precipitation climatology: the annual march of the rain belt

GPM IMERG Final (daily) is a global, 0.1° estimate of daily precipitation from NASA’s satellite-and-gauge record. GPM — the Global Precipitation Measurement mission — and IMERG (Integrated Multi-satellitE Retrievals for GPM) merge microwave and infrared observations into one daily rain field; GDEX’s copy spans June 2000 – September 2025.

This notebook reproduces NASA’s IMERG Daily Climatology animation from GDEX data. We

  1. average every calendar day across recent years (2020–2025) into a day-of-year climatology,

  2. smooth it with a 30-day trailing average to remove the noise of isolated heavy-rain days, then

  3. animate the 366-day cycle to watch the Intertropical Convergence Zone (ITCZ) — the equatorial band of heavy tropical rain — and the monsoons march north and south with the seasons.

Compared with the monthly climatology notebook, the daily record resolves seasonal transitions — monsoon onset, the ITCZ’s migration — far more smoothly.

<xarray.core.options.set_options at 0x14e3d197dbd0>

Open the dataset

IMERG daily is distributed as one NetCDF granule per day. GDEX adds a kerchunk reference so a single xr.open_dataset(..., engine="kerchunk") call exposes the whole ~25-year daily record as one virtual xarray.Dataset.

The cell below auto-selects the access path: the POSIX reference where /gdex/data is mounted (NCAR HPC), otherwise the OSDF reference streamed over the network. The OSDF form’s chunk URLs use the osdf:// scheme, resolved by pelicanfs.

Access: POSIX mount
/gdex/data/d734000/kerchunk/GPM_3IMERGDF_v07.json

Set up a Dask cluster

Building the day-of-year climatology reads several recent years of the daily record, so we farm the work out to a Dask cluster. As in the other GDEX examples, the cluster is chosen automatically by environment:

  • Casper / Derecho (a PBS scheduler is present) → a PBSCluster spreads the read across scheduler-managed workers.

  • Laptop / CIRRUS Binder (no PBS) → a LocalCluster uses the local cores.

BokehUserWarning: reference already known 'p1011'
BokehUserWarning: reference already known 'p1051'
BokehUserWarning: reference already known 'p1289'
BokehUserWarning: reference already known 'p1295'
BokehUserWarning: reference already known 'p1353'
Detected NCAR HPC -> PBSCluster
Loading...
2026-09-30 12:31:05,722 - distributed.scheduler - ERROR - Couldn't gather keys: {'finalize-hlgfinalizecompute-30cd69f0222f40a2a184bd708ef8e229': 'waiting'}

Day-of-year climatology

We average each calendar day (day-of-year 1–366) across recent years (2020–2025) to get the mean annual cycle at daily resolution. Precipitation is already in mm/day, so no unit conversion is needed; we mask the fill value by keeping non-negative rates.

shape: (366, 450, 900)
CPU times: user 45.2 s, sys: 4.51 s, total: 49.7 s
Wall time: 2min 32s
Loading...

Smooth with a 30-day trailing average

Individual calendar days are noisy — one big storm in a single year leaves a spot in that day’s mean. Following NASA’s visualization, we apply a 30-day trailing average over the day-of-year axis (wrapping across the December–January boundary) to reveal the smooth seasonal march.

smoothed range: 0.0 - 50.78 mm/day
Loading...

Animate the annual cycle

Playing the smoothed daily fields as a loop (subsampled to keep the GIF small) reveals the ITCZ and the monsoons marching north and south through the year — the same story as the monthly notebook, but resolved day by day. Following NASA’s visualization, cooler colors are drier and warmer colors wetter (mm/day).