CoolFace
Datasetpublic

oovanger/aorc-texas-downscaling-sample

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-sample.

sourceHugging Facecc-by-4.0updated 5mo agoView on Hugging Face
0likes23downloads
Dataset Card

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

FieldValue
SourceNOAA Analysis of Record for Calibration (AORC) v1.1
Spatial domainTexas (two sub-regions: SW and NE), 1 km grid
Temporal range2021–2024, hourly
Patch size512 × 512 pixels at 1 km resolution
Variables2 m air temperature, near-surface specific humidity, precipitation rate
FormatZarr v2, float32, chunks (32, 512, 512)
Total size~43 GB

Variables

Short nameLong namePhysical unitNormalization
temp2 m air temperatureKz-score: (T − 290.58) / 10.01
humidityNear-surface specific humiditykg kg⁻¹z-score: (q − 6.58×10⁻³) / 4.16×10⁻³
precipPrecipitation ratemm h⁻¹log1p then z-score: (log1p(p) − 0.01637) / 0.1322

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:

python
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:

python
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_up

Supported scaling factors: 2×, 4×, 8×, 16×, 32×.

Splits

SplitRegionYearsFrames (per variable)Purpose
trainSW Texas2021–2022~29 334Training
valSW Texas20238 760Validation / model selection
test_temporalSW Texas20248 784Temporal generalization
test_spatialNE Texas2021–202217 520Spatial generalization
test_oodNE Texas20248 784Spatio-temporal OOD

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

python
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 LR

Responsible 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:

bibtex
@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}
}

License

Creative Commons Attribution 4.0 International (CC BY 4.0)