Vortex tracking automation
The GFDL Vortex Tracker is wrapped in shell tooling that looks up storms from
vitals records by name, runs whole periods automatically or with explicit
start/end times, and feeds a Python plotter that compares multi-model tracks,
central pressure (MSLP), and maximum wind speed (MWS) against observations.
GFDL Vortex Tracker
Bash automation
Python plotting
Initial-condition preparation
A merge tool combines surface and pressure-level fields retrieved from
ECMWF MARS or CDS into a single per-model input file for each initial time,
so seven different AI models share one data-preparation path.
MARS / CDS
GRIB
7 AI models
GRIB / NetCDF processing
eCCodes-based readers skip unused GRIB messages and downcast to float32,
halving memory use. A slim postprocessor keeps only the 49 channels the
tracker needs, cutting output files by ~41% before optional lossless
compression.
eCCodes
NetCDF · zlib
float32
49-channel slim
Parallel filtering & QC
Track filtering fans out with Python multiprocessing on 64-core servers
(~56 workers, leaving headroom for the system). QC scripts cross-check
initial-time coverage and storm identifiers against KMA FCT lists and
IBTrACS, producing re-collection lists automatically.
multiprocessing
IBTrACS QC
Auto re-collection lists
Environments & remote work
Python environments are managed with uv (fast, named venvs) alongside conda
for model runtimes. GPU and storage servers are bridged with sshfs mounts,
and heavy post-processing stays on the GPU server so only MB-scale results
cross the network.
uv
conda
sshfs
GPU-local post-processing