PW-FouCast: Pangu-Weather-guided Fourier-domain foreCast
This is the official Hugging Face repository for PW-FouCast, a novel frequency-domain fusion framework designed to extend precipitation nowcasting horizons by integrating weather foundation model priors with radar observations.
The model was introduced in the paper Extending Precipitation Nowcasting Horizons via Spectral Fusion of Radar Observations and Foundation Model Priors.
π Model Overview
PW-FouCast addresses the challenge of representational heterogeneities between high-resolution radar imagery and large-scale meteorological data. By leveraging Pangu-Weather forecasts as spectral priors within a Fourier-based backbone, the model effectively bridges the gap between atmospheric dynamics and local convective patterns.
Key Features
- Pangu-Weather-guided Frequency Modulation (PFM): Aligning spectral magnitudes and phases with physical meteorological priors to ensure physically consistent forecasts.
- Frequency Memory (FM): A learned repository of ground-truth spectral patterns that dynamically corrects phase discrepancies and preserves complex temporal evolutions (e.g., expansion/contraction).
- Inverted Frequency Attention (IFA): A residual-reinjection mechanism designed to recover high-frequency details typically lost during spectral filtering, maintaining sharp structural fidelity in long-term predictions.
- Extended Horizon: Demonstrates superior performance on SEVIR and MeteoNet benchmarks, significantly mitigating performance decay in long-lead nowcasting.
π How to Use
You can load the model weights for inference or fine-tuning as follows:
import torch
from pw_foucast import PWFouCast
from safetensors.torch import load_model
from huggingface_hub import hf_hub_download
MODEL_REGISTRY = {
'pw_foucast': PW_FouCast,
}
ModelClass = MODEL_REGISTRY.get(args.model.lower())
model = ModelClass(**model_kwargs).to(args.device)
model = torch.nn.DataParallel(model)
# Load the model from Hugging Face
weights_path = hf_hub_download(repo_id=f"Onemiss/PW-FouCast", filename=f"{args.model}/{args.dataset}/model.safetensors")
load_model(model, weights_path)
# Eval
model.eval()
β¦β¦
βοΈ Citation
If you find this work or code useful for your research, please consider citing:
@article{qin2026extending,
title={Extending Precipitation Nowcasting Horizons via Spectral Fusion of Radar Observations and Foundation Model Priors},
author={Yuze Qin, Qingyong Li, Zhiqing Guo, Wen Wang, Yan Liu, Yangli-ao Geng},
journal={arXiv preprint arXiv:2603.21768},
year={2026}
}