Troubleshooting#
Symptoms, what causes them, and what to do. Errors are grouped by the stage they come from; the message quoted is the one the tool actually prints.
Check these three first. Most reports come down to one of them:
cd /home/users/$USER/extract_UM_met # config.yaml is read from the CWD module purge && module load jaspy # the supported Python environment export TMPDIR=/work/scratch-pw5/$USER/tmp && mkdir -p "$TMPDIR"
1. Config and domain#
Message / symptom |
Cause and fix |
|---|---|
|
No |
|
Typo, or the domain is not in your |
|
Chunk keys are |
|
|
|
A malformed |
|
|
|
Valid values are |
|
Only those three forms. Also |
|
The |
2. Archive and missing files#
Message / symptom |
Cause and fix |
|---|---|
|
Usually |
|
The date is outside the known Mk calendar: before 2011-01, or past the newest block, which happens when the archive gains a new Mk. Extend |
|
A single expected file is absent. Known-bad files are skipped on load; a hard failure here means the archive is incomplete for that timestep. |
|
Only Mk4 (2017-07 onward) is confirmed for the 1.5 km UK source. Earlier boundaries are unknown — see the roadmap. |
|
|
Cube selection#
expected exactly 1 cube for name='air_temperature' want_levels=True, found N.
Loaded cubes (name, has_levels): [...]
Selection is by name + level presence, so this is the deliberate loud failure
when the archive changes shape or an override is wrong. The message lists every
cube it did load — compare that against your mass_vars / wind_vars entries,
paying attention to the has_levels flag in each pair. Two air_temperature
cubes exist in the I set (1.5 m and model-level), which is exactly why the
level flag has to be right; see reference.md §3.
3. Grids and footprints#
Message / symptom |
Cause and fix |
|---|---|
|
|
|
Check |
|
A domain with no |
|
The loaded cube is not on a recognisable lat/lon grid — usually a rotated-pole source reaching the regular-grid path. |
4. Regions and joining#
Message / symptom |
Cause and fix |
|---|---|
|
|
|
You passed |
|
A per-region intermediate was expected but is absent — scratch was purged, or an earlier |
|
The archive returned repeated valid times for that region-month. Worth inspecting before trusting the month. |
|
A timestep is ambiguous about which model run it came from, so the forecast provenance coords cannot be built. |
|
From |
|
|
5. Memory, disk and runtime#
Symptom |
Cause and fix |
|---|---|
Node |
|
Out-of-memory under SLURM |
Extraction holds one period of one region in memory, so the first thing to reach for is a shorter |
Dates from 2017-07 much slower and larger |
Not a fault. Mk10 onward is N1280 — ~1.67× finer per axis, ~2.8× the points per level. Budget time and disk accordingly (concepts.md §2). |
Scratch filling up during a run |
Per-region intermediates live in |
Long run killed on the login node |
Extraction is memory-heavy; submit it with |
6. Stores, resume and appending#
Symptom |
Cause and fix |
|---|---|
“cannot backfill earlier missing month” |
Appending must preserve time order, so a missing earlier month cannot be filled in later. Rebuild that year with |
Re-running a year does nothing |
Expected — months already present are skipped and only the provenance attrs are re-finalised. Use |
A variant run overwrote the production store |
Use |
|
Chunking is fixed when a store is first created; later months inherit it. Rebuild the year with |
Store unreadable in another environment |
|
Year looks short |
Check |
7. Output that looks wrong#
These are known limitations rather than crashes — they produce data, just not the data you might expect. All are tracked in the roadmap.
A
native-mode domain is bigger than its bounds.lat_bounds/lon_boundsin anativegrid block currently shape only the canonical target grid; extraction still passes each region through at its full region extent. So a native domain is not cropped as tightly as its footprint-mode counterpart. Footprint and regular modes are unaffected.NZCSM artifacts at the domain edges. Extracted New Zealand data shows edge artifacts, most likely from rotated-pole → regular lat/lon regridding at the boundary (extrapolation into partial-coverage cells) and/or dateline handling, since the domain crosses 180°. Inspect edge cells against the native grid before treating NZ output as usable.
A year spanning an Mk boundary mixes resolutions in
nativemode. The year snaps to one canonical Mk grid (the majority by month count) and off-resolution months are interpolated onto it. Footprint and regular modes always interpolate onto a fixed target, so they never see this.
Still stuck?#
Re-run with --dry-run — it resolves config, domain and dates and reports what it
would do without writing anything, which separates configuration problems from
data problems:
python -m extract_um_met run --domain SA --date 201601 --dry-run
Then narrow to the cheapest real run — a single day writes a small standalone debug store and never touches your yearly stores:
python -m extract_um_met run --domain SA --date 20160115
To isolate one region, use extract with --region and inspect the intermediate
it leaves in {scratch}/files/.