cropmonitor-11 countries-Africa
# Crop-specific dekadal planting-window estimation — GHA / ICPAC (11 countries)
Estimates **per-pixel planting dekad** for **maize, teff, wheat** inside **crop-specific masks**,
by fusing **Sentinel-2 red-edge phenology + FPAR + Sentinel-1 SAR**, constrained by your
**long-term-normal (LTN) phenology**, cross-checked against **WRSI rainfall onset**, and
aggregated to admin units — **season-stratified** per country using a crop-specific calendar.
Countries: Ethiopia, Kenya, Uganda, Tanzania, Rwanda, Burundi, South Sudan, Sudan, Somalia,
Eritrea (Djibouti excluded — negligible cropping).
**Reference runs (maize 2024):** Kenya Long rains + Short rains, and Ethiopia Meher (unimodal).
**Production scale is 250 m** — two concurrent 10 m country exports do not sustain on GEE, so 250 m is
the operational scale for the multi-country rollout; 10 m is the single-AOI reference ceiling.
## Where this fits your existing stack
You already run: **generic crop mask, LTN phenology, FPAR, WRSI**. This pipeline adds the two
missing pieces — **crop-specific masks** and **red-edge + SAR fusion** — and turns the outputs
into a **crop-specific cropping calendar** that then *feeds back* into WRSI as a better onset.
```
generic crop mask ─┐ ┌─ LTN phenology (prior + anomaly baseline)
crop-specific mask ─┼─► [S2 red-edge + FPAR + S1 SAR fusion] ─► SOS ─► planting dekad ─┐
(maize/teff/wheat)│ (season-stratified, per crop) (─offset) │
FPAR (existing) ────┘ ▼
CHIRPS ─► WRSI onset ──────────────► cross-validate ◄────────────────────► WRSI (better onset in)
└─► zonal admin planting-window CSV + anomaly map
```
## Pipeline stages (code map)
| Stage | File | What it does |
|---|---|---|
| Config | `config/datasets.yaml`, `config/season_calendar.csv` | dataset IDs+APIs; crop-specific calendar |
| Optical | `src/s2_preprocess.py` | dekadal cloud-masked NDRE/VI composites (10 m) |
| …