oovanger/aorc-texas-downscaling
AORC Texas Climate Downscaling Benchmark A benchmark dataset for statistical climate downscaling (super-resolution) based on NOAA AORC 1 km reanalysis data over Texas (2021–2024). The dataset supports training and evaluating models that reconstruct high-resolution (1 km) meteorological fields from coarsened low-resolution inputs at five scaling factors (2×, 4×, 8×, 16×, 32×). Dataset Description Field Value Source NOAA Analysis of Record for Calibration… See the full description on the dataset page: https://huggingface.co/datasets/oovanger/aorc-texas-downscaling.
AORC Texas Climate Downscaling Benchmark
A benchmark dataset for statistical climate downscaling (super-resolution) based on NOAA AORC 1 km reanalysis data over Texas (2021–2024). The dataset supports training and evaluating models that reconstruct high-resolution (1 km) meteorological fields from coarsened low-resolution inputs at five scaling factors (2×, 4×, 8×, 16×, 32×).
Dataset Description
Variables
Normalization statistics were computed from the training split only and are stored in stats.json. Values stored in the zarr arrays are already normalized (approximately zero-mean, unit-variance).
To recover physical values:
import numpy as np, json, zarr
with open("stats.json") as f:
stats = json.load(f)
z = zarr.open("processed/train/temp.zarr", "r")
y_norm = z[0] # (512, 512), normalized
# Temperature (K)
temp_K = y_norm * stats["temp"]["std"] + stats["temp"]["mean"]
# Humidity (kg/kg)
hum = y_norm * stats["humidity"]["std"] + stats["humidity"]["mean"]
# Precipitation (mm/h) — undo z-score then undo log1p
precip_log = y_norm * stats["precip"]["std"] + stats["precip"]["mean"]
precip_mmh = np.expm1(precip_log)Degradation Operator
Low-resolution inputs are generated from the high-resolution targets using a Gaussian blur → strided subsampling → bicubic upsample operator:
from scipy.ndimage import gaussian_filter, zoom
def degrade(y_hr, scale):
"""y_hr: (512,512) normalized HR field → (512,512) degraded LR-upsampled field."""
sigma = 0.5 * scale
y_blur = gaussian_filter(y_hr, sigma=sigma)
x_lr = y_blur[::scale, ::scale] # (512//scale, 512//scale)
x_up = zoom(x_lr, scale, order=3)[:512, :512] # bicubic upsample back to 512×512
return x_upSupported scaling factors: 2×, 4×, 8×, 16×, 32×.
Splits
The train/val/testtemporal splits share the SW Texas domain (in-distribution spatially) while testspatial and testood use an unseen NE Texas domain. testood is the hardest split: unseen region and unseen year.
Directory Structure
processed/
├── stats.json ← normalization statistics (training split)
├── train/
│ ├── temp.zarr/ ← (29334, 512, 512) float32 z-score normalized
│ ├── precip.zarr/ ← (29451, 512, 512) float32 log1p + z-score normalized
│ └── humidity.zarr/ ← (29316, 512, 512) float32 z-score normalized
├── val/
│ └── ... ← same structure, (8760, 512, 512)
├── test_temporal/
│ └── ... ← (8784, 512, 512)
├── test_spatial/
│ └── ... ← (17520, 512, 512)
└── test_ood/
└── ... ← (8784, 512, 512)Usage Example
import zarr, numpy as np
from scipy.ndimage import gaussian_filter, zoom
# Load a batch of HR temperature patches from training split
z = zarr.open("processed/train/temp.zarr", mode="r")
y_batch = z[:32] # (32, 512, 512) normalized
# Generate 8× LR input on the fly
scale = 8
y_lr_batch = np.stack([
zoom(gaussian_filter(y, 0.5 * scale)[::scale, ::scale], scale, order=3)[:512, :512]
for y in y_batch
]) # (32, 512, 512) — bicubic upsampled LRResponsible AI
Intended use: Climate downscaling research benchmark. Designed for training and evaluating statistical downscaling / super-resolution models for meteorological fields.
Limitations:
- Geographic scope limited to Texas, USA; models may not generalize to other regions.
- Temporal scope 2021–2024 only; does not include extreme historical events before this window.
- Based on reanalysis (model-derived gridded product), not direct observations; inherits AORC v1.1 biases.
- Spatial resolution is 1 km; sub-kilometer dynamics are not represented.
Sensitive attributes: None. No personally identifiable information; purely gridded geophysical fields.
Prohibited uses: None formally. We discourage use as a sole basis for operational weather forecasting or safety-critical decisions without independent validation.
Citation
If you use this dataset, please cite:
@dataset{ovanger2025aorc,
author = {Ovanger, Oscar},
title = {{AORC Texas Climate Downscaling Benchmark}},
year = {2025},
publisher = {Hugging Face},
url = {https://huggingface.co/datasets/oovanger/aorc-texas-downscaling}
}