48-hour Saharan dust storm predictor for Algerian cities using XGBoost and open meteorological data.
# 🌪️ Chehili Alert
**48-hour Saharan dust storm predictor for Algerian cities.**
---
## The Problem
Algerian cities like Algiers, Oran, and Constantine are hit by **Saharan dust storms** (*Sirocco / Chehili*) that:
- Shut down airports and ports
- Spike asthma hospital admissions by 200–400%
- Reduce solar farm output and damage agriculture
There is **no open-source early warning tool** for Algerian urban centers. Hospitals and logistics operators react *after* the dust arrives.
## The Solution
A machine learning pipeline that predicts **PM10 spikes >150 µg/m³** 24–48 hours ahead using:
- **OpenAQ** ground-station air quality data
- **NASA MERRA-2** aerosol optical depth (AOD)
- **OpenWeatherMap** wind speed, direction, temperature, humidity
Deployed as an interactive Streamlit app with a risk gauge and Algeria map.
## Live Demo
🌐 **chehili-alert.streamlit.app**
## Data Sources
| Source | Variables | Coverage |
|--------|-----------|----------|
| OpenAQ | PM10, PM2.5 | Algiers, Oran, Constantine (2023–2024) |
| NASA POWER / MERRA-2 | AOD, dust column mass density | 0.5° lat/lon grid |
| OpenWeatherMap | Wind, temp, humidity, pressure | City-level hourly |
## Model
- **Algorithm:** XGBoost Classifier (one per region)
- **Target:** Dust spike in next 48h (PM10 > 50 µg/m³)
- **Coverage:** 9 Algerian cities — 🌊 Coastal (Algiers, Oran) · ⛰️ Inland (Constantine, Laghouat, Biskra) · 🏜️ Saharan (Ouargla, Adrar, Tindouf, Bechar)
- **Key Features:**
- Lagged PM10 (1d, 2d, 3d, 7d)
- Saharan Surge Index: wind speed > 3.5 m/s from 120°–270°
- Temperature differential (day/night)
- Seasonal sine/cosine encoding
- **Per-city models:** Separate XGBoost per region; Algiers & Oran share a coastal model, Sahara cities share a desert model
- **Performance (H2 2025/H1 2026 test set):**
| City | Region | Model | F1 | Precision | Recall |
|------|--------|-------|------|-----------|--------|
| Algiers | 🌊 Coastal | Coastal | **0.39** | 0.29 | 0.61 |
| Oran | …