# ERA5 East Africa Weekly Temperature-Anomaly Benchmark
This repository contains a small benchmark project built from ERA5 reanalysis data over East Africa.
The project starts from raw hourly GRIB files and builds a full preprocessing and evaluation pipeline. The benchmark task is simple: predict the class of the next week's temperature anomaly for each subregion from recent past anomalies in the same subregion.
The point of the project is not to claim strong forecast skill. The point is to show that I can work with real geophysical data, build a clean preprocessing workflow, define a prediction task carefully, and evaluate simple models without leaking test information into the pipeline.
## Current state of the project
The repository currently includes:
- ERA5 data download
- weekly gridded dataset construction
- area-weighted weekly subregion temperature series
- training-only weekly anomaly construction
- supervised dataset construction for next-week prediction
- a persistence baseline
- a multinomial logistic-regression classifier
- a ridge-regression model on the continuous anomaly target
The persistence baseline remains the main reference benchmark. The two learned models are included as direct comparisons on the same held-out test year.
## Data
Source:
- ERA5 reanalysis, single levels
Variable:
- `2m_temperature` (`t2m`)
Spatial domain:
- East Africa
- latitude: `15.0` to `-12.0`
- longitude: `28.0` to `52.0`
Time coverage:
- `2019` to `2025`
Native temporal resolution:
- hourly
Raw format:
- GRIB
## What the pipeline does
The workflow has seven main steps.
### 1. Download ERA5 data
The script `download_data.py` downloads yearly ERA5 hourly `t2m` files for the East Africa domain and stores them in `data/raw/`.
Output pattern:
- `data/raw/era5_t2m_east_africa_hourly_YYYY-01_to_YYYY-12.grib`
This step requires local CDS API access.
### 2. Build the weekly gridded dataset
The script `build_weekly_gridded_dataset.py` loads the yearly GRIB fil …