Configuration Reference#
Reference for every YAML key consumed by the three acestor pipelines. Each field
lists type, default, and why it exists. The source of truth is the
configs.py module for each pipeline — this document is derived from those
dataclasses.
Three pipelines are documented:
dengue_prep— buildsprepared_data/from raw case + weather sources.dengue— trains models, computes thresholds, renders maps and the HTML brief.dengue_downscale— takes parent-level predictions from adenguerun and splits them onto child regions.
Each pipeline has a pipeline.name matching one of the above; the loader
dispatches on it.
Common top-level keys (state, pipeline, run, logging,
storages, email) are shared and documented once at the end.
1. dengue_prep#
Config sample: configs/ka_district_prep.yaml,
configs/od_district_prep.yaml. Dataclasses:
pipelines/dengue_prep/configs.py.
data.prepared_data#
Where prep writes its outputs. Consumed by the downstream dengue pipeline
via the same block.
key |
type |
default |
why |
|---|---|---|---|
|
str |
|
Root folder for the per-region-type subfolders
( |
data.case_download#
Fetches raw line-list files from a case source.
key |
type |
default |
why |
|---|---|---|---|
|
bool |
|
Master switch. When false, prep assumes files are already staged under
|
|
str |
|
Selects a case-source plugin: |
|
str |
|
Legacy path used only when |
|
str |
|
Root path or URL the source plugin reads from. |
|
str |
plugin-specific |
Dashboard API root, e.g.
|
|
str |
|
Dashboard disease slug. |
|
str |
|
Dashboard: inclusive start of the fetch window (YYYY-MM-DD). |
|
str |
|
Dashboard: inclusive end. Blank tracks the current run. |
|
int |
plugin default |
Dashboard pagination window; smaller values ease per-request payload. |
|
int |
plugin default |
Dashboard: how many days before |
|
str |
|
Restrict the dashboard fetch to a single region (debugging). |
|
bool |
|
Turn off to force re-download on every run. |
|
str |
|
Local cache root. |
|
str |
|
|
|
str |
|
Absolute or relative filesystem root when |
|
str |
|
S3 backend location. |
|
list[str] |
|
Explicit list of files a plugin should ingest. |
|
str |
|
Relative destination under the run artifact root. |
data.case_parse#
Parses raw case files into cases_daily.csv.
key |
type |
default |
why |
|---|---|---|---|
|
list[str] |
required |
Non-empty list of region tiers to emit; each becomes a subfolder under
|
|
str |
|
Inclusive start filter on the case date. Empty → no lower bound. |
|
str |
|
Inclusive end filter. Empty → no upper bound. |
|
str | list[str] |
|
Candidate column(s) for the case date. Parser tries in order; first one that parses cleanly wins. String is accepted for back-compat. |
|
str |
|
When set and present in the file, this column is trusted verbatim as the
resolved |
|
str |
|
Column with an LGD code. Present → used to resolve to |
|
str |
|
Fallback spatial-join latitude column. |
|
str |
|
Fallback spatial-join longitude column. |
|
int |
|
0-indexed row containing headers; use |
|
list[dict] |
|
Row filters: each entry |
|
dict |
disabled |
Google-geocode + spatial-join resolver; see below. |
data.case_parse.geocoding#
Runs only when a row has neither LGD code nor region_id_column and only
free-text address fields are usable.
key |
type |
default |
why |
|---|---|---|---|
|
bool |
|
Opt in explicitly. |
|
list[str] |
required when enabled |
Columns concatenated to build the primary query. |
|
list[str] |
|
Second-pass columns when the first fails validation. |
|
str |
|
On-disk memoisation of Google responses. |
|
list[str] |
|
Extra tokens stripped before validation. |
|
bool |
|
Drop rows whose first address field is empty. |
|
bool |
|
Drop rows whose Google response fails token validation. |
|
list[4] |
|
|
|
list[str] |
|
Substrings that must appear in the formatted address; hard reject. |
data.weather_download#
Fetches gridded weather. Two source families: CDS (reanalysis-era5-land)
and openmeteo.
key |
type |
default |
why |
|---|---|---|---|
|
bool |
|
Master switch. |
|
str |
|
Plugin selector: |
|
str |
|
Backend for the filesystem plugin: |
|
str |
|
Unit the source returns ( |
|
str |
|
Unit the source returns ( |
|
str |
|
Local NetCDF cache path; empty → plugin default. |
|
str |
|
Where per-region CSVs land after parsing. |
|
list[str] |
env |
CDS variable names. |
|
list[4] | null |
|
|
|
str |
|
Subfolder under the geojson root used to compute bounds. |
|
list[str] |
|
Short names of NetCDF variables the parser extracts. |
|
float |
|
Max distance from a region’s boundary a grid point may lie to still be attributed. |
|
float |
|
Snap auto-computed bounds to this grid (0.25 for ERA5, 0.1 for ERA5-Land). |
|
str |
|
Inclusive fetch start. |
|
str |
|
Inclusive end. Empty → |
|
bool |
|
Turn off to force re-download. |
|
str |
|
Local cache root. |
|
str |
|
|
|
str/list |
|
Location knobs mirroring |
data.weather_parse#
Daily aggregation of downloaded weather.
key |
type |
default |
why |
|---|---|---|---|
|
str |
|
Region tier the daily rows are keyed to. |
|
list[str] |
|
Variables to aggregate. |
|
list[dict] |
|
Per-variable daily aggregation ops. |
data.geojson#
base_path (str, required) — root of the geojson layer; subfolders per
region type.
data.date_range.start#
start (str, required) — global anchor for the prep window; passed to
plugins that need a fetch start when date_start is blank.
2. dengue#
Config sample: configs/ka_district.yaml, configs/gba_zone.yaml.
Dataclasses: pipelines/dengue/configs.py.
data.prepared_data#
key |
type |
default |
why |
|---|---|---|---|
|
str |
|
Root of the prep output the pipeline reads. |
|
str |
|
Subfolder to load from ( |
data.case_parse#
key |
type |
default |
why |
|---|---|---|---|
|
list[str] |
required |
Non-empty, no duplicates. Order matters: the last entry drives cutoffs and the sampled CSV that maps/thresholds consume. |
|
str |
required |
Inclusive start. |
|
str |
required |
Inclusive end; empty string → parser uses today. |
data.case_sufficiency#
Early abort when the parsed case data is too thin to model.
key |
type |
default |
why |
|---|---|---|---|
|
bool |
|
Turn off to run the pipeline on tiny/synthetic inputs. |
|
int |
|
Row-count floor. |
|
int |
|
Region-count floor. |
|
int |
|
Temporal span floor. |
|
str |
|
Which column carries the case count. |
|
str |
|
Empty → derived from |
|
str |
|
Empty → derived from |
|
int |
|
Max acceptable gap between |
cutoff#
key |
type |
default |
why |
|---|---|---|---|
|
int |
|
Minimum regions with observations before the case cutoff is honoured. |
|
int |
|
Same, for weather. |
thresholds#
key |
type |
default |
why |
|---|---|---|---|
|
str |
|
Region tier the thresholds are computed for. |
|
list[str] |
|
Which methods to compute; each writes its own threshold rows. Registered
names: |
|
str |
|
Zone-labelling scheme: |
|
list[float] |
|
For |
|
int |
|
Prev-N-weeks window. |
|
int | null |
|
Historical lookback in years. |
|
list[int] |
|
Years dropped from the historical baseline (COVID gaps). |
|
list[int] |
|
Empty → no restriction; non-empty → whitelist. |
|
list[float] |
|
Sigma multipliers for the WHO/ICMR banding. |
|
int |
|
|
|
int |
|
|
|
float |
|
|
|
float |
|
|
|
dict |
inherit |
Per-method overrides for |
model#
key |
type |
default |
why |
|---|---|---|---|
|
str |
|
Region tier the models train and predict on. |
|
list[str] |
|
Subset of |
|
str |
|
Registered ensemble strategy or |
|
str |
|
|
|
bool | str |
|
|
|
int |
|
Optuna trials when tuning runs. |
|
bool |
|
Emit per-model intermediate CSVs under |
|
list[str] |
|
Columns fed to the tabular models. |
|
list[int] |
|
Training years dropped. |
|
list[int] |
|
Empty → no restriction; non-empty → whitelist. |
|
list[int] |
|
Temperature lag weeks fed as features. |
|
list[int] |
|
Precipitation lags. |
|
list[int] |
|
Dewpoint lags. |
|
list[int] |
|
Case-count lags (autoregressive). |
|
float | null |
|
Upper clip in recursive forecast: cap each step at
|
|
bool |
|
Persistence: freeze weather/exogenous lag features at the forecast origin for every future week. Matches upstream vbd-modelbench. Set false only for hindcasts that deliberately leak future weather. |
model_configs.<model>#
Per-model overrides. Keys mirror the model block: data_features,
years_to_exclude, years_to_include, tune, n_trials, debug,
clip_multiplier, freeze_weather_at_origin, and the lag.* sub-keys.
Unspecified keys inherit from model. Any key not listed in model.models
is rejected at build time (fail-fast; the error message names both the YAML fix
and the --set CLI trap that re-creates a removed key).
model_configs.timesfm#
TimesFM 2.5 foundation model settings. All optional — omit the whole block and defaults apply.
key |
type |
default |
why |
|---|---|---|---|
|
str |
|
HF repo the checkpoint is pulled from. |
|
str |
env |
Must be a full 40-hex commit SHA. Tags/branches are rejected — checkpoints can move under a floating ref. |
|
str |
|
Project-local, gitignored. |
|
int |
|
Truncate each region’s series to this many trailing weeks before inference. |
|
int |
|
Torch batch size inside the worker. |
|
int |
|
Regions with fewer weeks of history are skipped (all-zero regions still get zero predictions). |
|
float |
|
Subprocess wall-clock timeout. |
|
int |
|
Cap on regions per worker call — bounds worker memory. |
assess#
total_<region>_regions (int) — denominator for assess ratios. Recognised
keys: total_corp_regions, total_zone_regions, total_ward_regions,
total_district_regions, total_subdistrict_regions.
maps#
key |
type |
default |
why |
|---|---|---|---|
|
bool |
|
Set |
|
str |
|
Where PNG choropleths land. |
|
str |
|
Suptitle line 1; line 2 is the prediction date. |
report#
key |
type |
default |
why |
|---|---|---|---|
|
str |
|
Report |
|
str |
|
Which prediction feeds maps and the report. Accepts |
|
str |
|
Threshold method the report tables and headline bands use. |
report_distribution#
Free-form dict rendered into the report header (system_name,
organization, state, region, department, contact_email,
footer_note). All fields are strings; empty strings are omitted.
3. dengue_downscale#
Config sample: configs/ka_district_to_subdistrict.yaml. Dataclasses:
pipelines/dengue_downscale/configs.py.
run#
source_run_id (str, required) — run ID whose parent-level predictions are
downscaled. Sentinel "latest" picks the newest artifact matching
parent_level and the finer brief tolerance (fixed in commit 6d96610).
downscale#
key |
type |
default |
why |
|---|---|---|---|
|
str |
required |
Singular region tier the source predictions live at (e.g.
|
|
str |
required |
Singular child tier to split onto (e.g. |
|
int |
|
Look-back window (weeks of child-level cases) used to derive per-child shares of parent cases. |
|
int | null |
|
Longer window tried when the primary window has zero cases across all
children of a parent (issue #86). Must strictly exceed |
|
str |
|
Child-level case history used to derive shares. |
|
str |
|
Root of the geojson layer used for the child map. |
|
str |
|
|
thresholds#
Same schema as the dengue pipeline’s thresholds block, applied to
child-level predictions. method_configs.<name> overrides are supported
identically.
downscale_maps#
key |
type |
default |
why |
|---|---|---|---|
|
bool |
|
Set false to skip child-level PNG choropleths (interactive maps still render). |
|
str |
|
Where PNGs land. |
|
str |
|
Suptitle. |
Common top-level keys#
state#
Two-letter state slug used in artifact paths and report copy. Free-form.
pipeline#
key |
type |
default |
why |
|---|---|---|---|
|
str |
— |
Selects the pipeline: |
|
str |
|
Human title used in the report header when |
|
str |
|
Alternate hint used the same way as |
run#
run_date (str, default "" → today) — anchor date for the pipeline.
Blank tracks wall clock.
logging#
level (str, default INFO) — Python logging level (DEBUG, INFO,
WARNING, ERROR).
storages.artifacts#
Where the pipeline writes per-run artifacts.
key |
type |
default |
why |
|---|---|---|---|
|
str |
— |
|
|
str |
— |
Root path when |
|
str |
— |
Bucket / key prefix when |
email#
enabled (bool, default false) — turn on to have the report step send
the rendered HTML via SMTP. Other keys (smtp_host, smtp_port, to,
from, subject, credentials via env) are consumed by the email step
directly.