SUEWS Hackathon — Practice Repo

This is a practice repository for the SUEWS Community Hackathon, run against the real challenge dataset, UMEP-dev/uda-city-hackathon, which is public ahead of/at kickoff. This is a rehearsal of the pipeline and the analysis approach, not a hackathon submission — the judged entry is a separate repository created under the UMEP-dev organisation on the day.

In one line: the hottest neighbourhoods in this city are not the highest-risk ones — low-income, densely populated districts rank highest on heat risk despite being cooler than the leafy periphery, because risk here is driven by who can't escape the heat, not by how hot it gets. See the chart below.

Pipeline smoke test

Before the real analysis, a minimal SUEWS run via supy (the Python interface suews-agent wraps) confirmed the tooling works end to end, using supy's own bundled sample dataset — see analysis/smoke_test.py and its output.

The question

Across UDA-city's ten neighbourhoods, is the hottest place also the highest-risk place? We ran SUEWS for the present hot-humid season and a +2.5 °C hotter-future pseudo-warming, derived a dangerous-heat-hours hazard layer, and bridged it to a socio-economic heat-risk indicator using the dataset's reference bridge (risk_bridge.py), following a UNDRR-style decomposition:

risk = (hazard × exposure × vulnerability) ^ (1/3)

each pillar min–max scaled to [0, 1] across the ten neighbourhoods. Hazard is dangerous-heat hours (hourly-mean 2 m air temperature, T2, above 35 °C, illustrative threshold, after a 14-day spin-up discard). Exposure is daytime population density. Vulnerability combines five proxies: elderly/under-5 share, lack of AC access, outdoor workers, and a deprivation index.

Method

Results

Dangerous-heat hours, present vs. +2.5 °C future (full tables: present, future):

Neighbourhood Type Hazard hrs (present) Hazard hrs (future) Risk rank (both)
Kampong Lama hotspot 42 249 1
Dhobi Lines hotspot 26 217 2–3
Fuzhou Lanes hotspot 22 212 2–3
Mlima Moto hotspot 5 149 4
Lusitano Square core 5 129 5
Victoria Exchange core 5 120 6
Jade Gardens refuge 62 260 7 (tied last)
Taman Melati refuge 47 243 7 (tied last)
Serendib Rise refuge 26 205 7 (tied last)
Zheng He Towers core 2 77 7 (tied last)

Heat hazard vs. heat risk per neighbourhood — hottest is not highest-risk

Two findings stand out:

  1. The hottest neighbourhoods are not the highest-risk ones. The refuge neighbourhoods (Jade Gardens, Taman Melati) post the most dangerous-heat hours in both scenarios — low building roughness means weaker turbulent mixing and warmer near-surface air under NARP — but with zero exposed daytime population they rank last on risk. The dense informal hotspot neighbourhoods (Kampong Lama, Dhobi Lines, Fuzhou Lanes) have markedly fewer hazard hours yet rank highest risk, driven by exposure (300 people/ha) and vulnerability (low AC access, high outdoor work, high deprivation).
  2. Warming amplifies the hazard sharply but barely reshuffles the risk ranking. Dangerous-heat hours rose 4–80× across neighbourhoods under +2.5 °C (e.g. Kampong Lama 42→249 hours), yet the risk-rank order is essentially unchanged — because exposure and vulnerability, not hazard, are what separate the top and bottom of the table here. That stability is itself informative: it suggests near-term adaptation priority (who needs protecting first) is robust to this warming scenario, even though the absolute hazard everyone faces is far higher.

What's actually driving this

Three separate mechanisms stack to produce the ranking above, and they don't all point the same way:

A scaling artifact worth naming explicitly. The bridge min–max scales each pillar across these ten neighbourhoods only, then takes a geometric mean. Whichever neighbourhood is the dataset's minimum on any single pillar gets scaled to exactly 0, which zeroes the whole risk index regardless of the other two pillars. That is mechanically why refuge (population minimum) and Zheng He Towers (hazard minimum) both land at risk = 0 — it reflects the scaling method, not a claim that those residents face zero real risk.

Two checks the model itself can't run, done with outside information:

Diurnal temperature swing, present vs. +2.5°C future

Where this bridge holds, and where it breaks

How this could inform risk reduction

Mapped to the three pillars that actually drive the ranking, rather than generic heat advice:

Citing SUEWS