Flood: how HazardNet classifies and scores it

Riverine and monsoon flooding, scored from how much rain falls and how hard it falls.

How the model arrives at this class

The classifier labels the district-horizon unit from the same meteorological drivers (rainfall, temperature, wind, humidity, radiation, evapotranspiration). Its class and its severity index are separate outputs: the class says which hazard the drivers most resemble, the severity says how strong the resemblance is.

The published confidence is the model's own softmax over the eight classes and is reported as `uncalibrated_model_softmax`. It is not a probability of flooding and it is not derived from the physics cross-check.

Nothing above the WATCH level can be published automatically while no calibration map exists, and nothing at all can be published while the pipeline stamps no model version — the alert engine records that as `publication_blocked` rather than issuing the alert.

The independent physics cross-check

Both terms are required and must be different quantities. The pipeline this project inherited passed the horizon total twice, which made a wet fortnight indistinguishable from a three-day burst; the corrected signature is pinned by scripts/tests/test_physics_severity.py.

Drivers: precipitation accumulated over the horizon (P_total) · wettest 24 hours in that horizon (P_peak).

clip(x) clamps a term to [0, 1] — max(0, min(1, x)) — which is how every formula in the pipeline bounds its terms. Each term is clipped before it is weighted, so no single driver can run away with a score.

  • Expression: 0.5*clip(P_total/300) + 0.5*clip(P_peak/100)
  • That expression is executed against scripts/physics_severity.py by scripts/tests/test_content_engine.py — this page cannot silently describe a formula the pipeline no longer runs.

What the current run says about Flood

The run this deployment ships (prediction date 2026-09-16) classifies no district-horizon unit as Flood. An absence of flood in one run is not a statement that the hazard cannot occur this season.

Season and geography

Typical season: June–September (monsoon); peak in July–August. This describes when the hazard is climatologically plausible, not when this run flags it.

What this class cannot tell you

  • No hydrology: river levels, upstream release, embankment state and soil moisture are not inputs, so a high score means 'this much rain on this district', not 'this river will breach'.
  • The two rainfall classes (Flood and Flash Flood) share one physics proxy — distinguishing them needs drainage and terrain data the pipeline does not carry.
  • The soil-moisture channels in the current tensor are the fabricated constants this repository already flagged (`soil_channels_fabricated` on the snapshot); until a real ERA5-Land soil layer is wired in at the forecast timestep, the class is weaker than the rainfall alone would suggest.
  • Confidence bins (Certain ≥ 0.85, Probable 0.70–0.85, Uncertain < 0.70) describe the model's own certainty in the class it chose. They are not accuracy, and no accuracy figure is published because no held-out evaluation has been run on real labels.

Inputs behind it

Ground-truth reports (district, hazard, horizon, date, what was observed) are the only route by which this project can publish skill metrics. The contact page reaches the maintainers.

  • Open-Meteo forecast (rainfall, wind, temperature)
  • ERA5-Land daily aggregates (reanalysis, soil and radiation)
  • Sentinel-1 GRD (inundation context in the ETL, not in the live forecast path)

Questions and answers

Is a high Flood severity a prediction of damage?

No. The severity index is the model's continuous score for how strongly the drivers resemble this class, on a 0.00–1.00 scale. It is not a probability, not a percentage, and it does not model exposure. The physics cross-check is a second, independent estimate; where the two diverge, both numbers are shown rather than averaged.

Why is the confidence not a probability of Flood?

The published confidence is the model's own softmax over its eight classes, labelled uncalibrated_model_softmax in the data. It says how certain the classifier is about the class it picked, not how often that class actually materialises. No calibration map has been fitted yet, which is also why nothing above the WATCH level can be published automatically.

Which districts does this page cover?

The district pages cover all 64 districts. This page summarises the districts the current run covers — a run can be partial, and the coverage stamp on the snapshot says exactly how partial, which the status page reports.

Content reviewed 2026-09-16. HazardNet is decision support, not an official warning service — see the methodology for scope and limitations.

Loading the interactive HazardNet application…