<?xml version="1.0" encoding="UTF-8" ?><OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2026-10-11T21:12:52Z</responseDate><request identifier="10.35097/90bz7h2avfuxb8nb" metadataPrefix="oai_dc" verb="GetRecord">https://www.radar-service.eu/oai/OAIHandler</request><GetRecord><record><header><identifier>10.35097/90bz7h2avfuxb8nb</identifier><datestamp>2026-10-09T11:03:33Z</datestamp><setSpec>radar4kit</setSpec></header><metadata><oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/"
           xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ https://www.openarchives.org/OAI/2.0/oai_dc.xsd">
   <dc:identifier>https://dx.doi.org/10.35097/90bz7h2avfuxb8nb</dc:identifier>
   <dc:creator>Krikau, Svea</dc:creator>
   <dc:title>Software pipeline for the high-resolution estimation of air temperatures and probabilistic heat hazards in urban regions</dc:title>
   <dc:publisher>Karlsruhe Institute of Technology</dc:publisher>
   <dc:date>2026</dc:date>
   <dc:subject>Geological Science</dc:subject>
   <dc:type>dataset</dc:type>
   <dc:subject>Software</dc:subject>
   <dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
   <dc:rights>https://creativecommons.org/licenses/by/4.0/legalcode</dc:rights>
   <dc:description>Accurately assessing localized heat hazards requires capturing complex spatial and temporal environmental dynamics. To address this, the proposed architecture employs a two-branch fusion approach: a temporal branch that encodes lagged meteorological sequences (such as ERA5 data) and a spatial convolutional branch that processes local geospatial embedding patches. Rather than outputting single deterministic values, the model utilizes quantile regression to estimate conditional predictive distributions for daily minimum and maximum air temperatures. This probabilistic approach enables the generation of uncertainty-aware temperature maps and allows for the direct derivation of critical heat hazard event probabilities, specifically tropical nights and hot days. The accompanying open-source codebase includes the complete machine learning pipeline and trained models.</dc:description>
   <dc:description># Software pipeline for the high-resolution estimation of air temperatures and probabilistic heat hazards in urban regions&#xD;
This is a deep-learning framework for spatially resolved air-temperature prediction. It combines a temporal meteorological sequence with local geospatial embedding patches to estimate daily minimum ($T_{min}$) and maximum ($T_{max}$) air temperature. The quantile-regression models produce a conditional predictive distribution rather than a single deterministic value, enabling uncertainty-aware maps and heat-event probabilities.&#xD;
&#xD;
The framework contains data preparation, spatial and temporal model components, training and fine-tuning scripts, evaluation utilities, and practical spatial inference. Model settings are managed with Hydra, and experiment artefacts can be tracked with MLflow.&#xD;
&#xD;
This repository contains the accompanying codebase for the paper 'Multi-modal deep learning for generating high-resolution probabilistic maps of urban heat risk&#xD;
based on daily extreme air temperatures' by Svea Krikau, Susanne A. Benz and Sina Keller.&#xD;
## Model Framework&#xD;
&#xD;
The two-branch architecture consists of:&#xD;
&#xD;
- A temporal branch that encodes a lagged meteorological sequence.&#xD;
- A spatial convolutional branch that encodes a local patch of geospatial embeddings.&#xD;
- A fusion head that estimates quantiles for $T_{min}$ and $T_{max}$; cross-attention fusion is supported for compatible checkpoints.&#xD;
&#xD;
For a set of quantile levels $q$, the model output is ordered as&#xD;
&#xD;
$$&#xD;
[T_{min}^{(q_1)}, \ldots, T_{min}^{(q_Q)},&#xD;
T_{max}^{(q_1)}, \ldots, T_{max}^{(q_Q)}].&#xD;
$$&#xD;
&#xD;
The application workflow estimates tropical-night and hot-day probabilities from the interpolated quantile CDF:&#xD;
&#xD;
$$&#xD;
P(T &gt; \tau) = 1 - F_T(\tau),&#xD;
$$&#xD;
&#xD;
where $\tau=20\,^{\circ}\mathrm{C}$ for tropical nights ($T_{min}$) and $\tau=30\,^{\circ}\mathrm{C}$ for hot days ($T_{max}$) by default.&#xD;
&#xD;
## Installation&#xD;
&#xD;
Create the project environment from the supplied Conda specification:&#xD;
&#xD;
```bash&#xD;
conda env create -f environment_horeka.yaml&#xD;
conda activate heat-r&#xD;
```&#xD;
&#xD;
The inference application requires Python, PyTorch, PyTorch Lightning, Hydra/OmegaConf, NumPy, GeoPandas, Rasterio, Rioxarray, and TQDM. The supplied environment file includes these dependencies.&#xD;
&#xD;
## Applying A Trained Model&#xD;
&#xD;
`src/example_application.py` is a standalone spatial inference example. It does not create or load a datamodule. Instead, it loads the model architecture from the Hydra configuration adjacent to the checkpoint, uses saved min-max scaling statistics, and generates a synthetic meteorological sequence unless real meteorological data are supplied.&#xD;
&#xD;
The repository includes a Karlsruhe embedding raster and Innenstadt region of interest:&#xD;
&#xD;
- `data/example/embeddings_Karlsruhe_2024_3035_32.tif`&#xD;
- `data/example/Karlsruhe_Innenstadt.gpkg`&#xD;
- `data/scaling_karlsruhe.json`&#xD;
&#xD;
Run the bundled application on CPU:&#xD;
&#xD;
```bash&#xD;
python src/example_application.py --device cpu&#xD;
```&#xD;
&#xD;
By default, the script selects the first checkpoint found under `output/model_B/`, uses the bundled raster and ROI, and writes outputs to `output/example_application/`. For reproducible model selection, pass a checkpoint explicitly:&#xD;
&#xD;
```bash&#xD;
python src/example_application.py \&#xD;
  --device cpu \&#xD;
  --checkpoint output/path/to/model.ckpt \&#xD;
  --target-date 2024-07-15&#xD;
```&#xD;
&#xD;
Use a CUDA device when available:&#xD;
&#xD;
```bash&#xD;
python src/example_application.py --device cuda --checkpoint output/path/to/model.ckpt&#xD;
```&#xD;
&#xD;
### Real Meteorological Input&#xD;
&#xD;
Pass `--meteo-file` to use real ERA5-style data instead of the synthetic demonstration sequence. The input must be a `.npy` or comma-separated text file with shape `[time, features]`, containing raw, unscaled values in the same feature order used to train the checkpoint. Its feature count must match `hostrada_min` and `hostrada_max` in the selected scaling JSON. The script keeps the final `lag_size` rows and pads shorter input sequences with the first available row.&#xD;
&#xD;
The expected feature-column order is:&#xD;
&#xD;
```text&#xD;
t2m, pev, slhf, sshf, ssrd, tp, skt, swvl1, u10, v10&#xD;
```&#xD;
&#xD;
`data/example/era5_example_72h.csv` is a headerless, 72-hour ERA5-style demonstration file in this order. It represents three repeated warm, dry summer diurnal cycles: 2-m air temperature ranges from approximately $17.6$ to $29.9\,^{\circ}\mathrm{C}$, daytime radiation peaks at 157, precipitation is zero, soil water is approximately 0.30, and winds are light. It is synthetic data for verifying the inference pipeline, not an observed ERA5 extraction.&#xD;
&#xD;
Run the application with the bundled file:&#xD;
&#xD;
```bash&#xD;
python src/example_application.py \&#xD;
  --meteo-file data/example/era5_example_72h.csv \&#xD;
  --device cpu&#xD;
```&#xD;
&#xD;
```bash&#xD;
python src/example_application.py \&#xD;
  --checkpoint output/path/to/model.ckpt \&#xD;
  --meteo-file era5_sequence.npy \&#xD;
  --scaling-stats data/scaling_karlsruhe.json \&#xD;
  --target-date 2024-07-15 \&#xD;
  --device cpu&#xD;
```&#xD;
&#xD;
### Another Region&#xD;
&#xD;
Provide a georeferenced embedding raster, ROI vector layer, and scaling statistics compatible with the trained model. The raster must have the channel count expected by the checkpoint and the same embedding semantics used during training.&#xD;
&#xD;
```bash&#xD;
python src/example_application.py \&#xD;
  --checkpoint output/path/to/model.ckpt \&#xD;
  --raster data/example/embeddings_other_region.tif \&#xD;
  --roi data/example/other_region.gpkg \&#xD;
  --scaling-stats data/scaling_european.json \&#xD;
  --meteo-file era5_sequence.npy \&#xD;
  --output-dir output/other_region \&#xD;
  --device cpu&#xD;
```&#xD;
&#xD;
## Output Products&#xD;
&#xD;
All outputs are GeoTIFFs in the specified output directory. Pixels outside the ROI and pixels without a complete spatial input patch are encoded as `NaN`.&#xD;
&#xD;
| File | Contents |&#xD;
| --- | --- |&#xD;
| `tmin_quantiles_&lt;date&gt;.tif` | $T_{min}$ quantiles in degrees Celsius; one band per trained quantile level. |&#xD;
| `tmax_quantiles_&lt;date&gt;.tif` | $T_{max}$ quantiles in degrees Celsius; one band per trained quantile level. |&#xD;
| `prob_tropical_night_&lt;date&gt;.tif` | Estimated probability that $T_{min} &gt; 20\,^{\circ}\mathrm{C}$. |&#xD;
| `prob_hot_day_&lt;date&gt;.tif` | Estimated probability that $T_{max} &gt; 30\,^{\circ}\mathrm{C}$. |&#xD;
&#xD;
Use `--tmin-threshold` and `--tmax-threshold` to change the event thresholds.&#xD;
&#xD;
## Citation&#xD;
If you use this framework in academic work, cite the associated publication 'Multi-modal deep learning for generating high-resolution probabilistic maps of urban heat risk&#xD;
based on daily extreme air temperatures' by Svea Krikau, Susanne A. Benz and Sina Keller.</dc:description>
   <dc:subject>urban heat hazard</dc:subject>
   <dc:subject>deep learning</dc:subject>
   <dc:subject>air temperature</dc:subject>
   <dc:subject>tropical nights</dc:subject>
   <dc:subject>hot day</dc:subject>
   <dc:subject>probabilistic mapping</dc:subject>
   <dc:relation>https://publikationen.bibliothek.kit.edu/1000196784</dc:relation>
   <dc:format>application/x-tar</dc:format>
</oai_dc:dc></metadata></record></GetRecord></OAI-PMH>