CASCADE (An Onboard Crop Anomaly Screening, Confirmation, and Alert Downlink Engine) turns crop-stress monitoring into an onboard scheduling problem: a Bayesian belief gate drives a finite-horizon MDP over four actions (SKIP, MOD13, FUSE, FUSE_PRIORITY) while fusing MOD13A1 EVI, MOD11A1 LST, and MOD09A1-derived NDWI into a three-channel Crop Stress Composite (CSC).
- Paper-aligned headline metrics (100-seed Monte Carlo): 99.1% downlink reduction, 38.3% energy saving, 0.6% FP rate, 92.5% / 49.2% CPU (peak / seasonal).
- Real-scene replay anchors (Westlands/Firebaugh, CA):
- 2024 quiet season: peak CSC
0.412vs threshold0.615→ noFUSE_PRIORITYexpected. - 2014 D4 drought: peak CSC
0.869,FUSE_PRIORITYat 6/6 windows →2.1×the 2024 peak (no retuning).
- 2024 quiet season: peak CSC
- One-command reproducibility:
make repro-2014,make repro-2024,make test. - Canonical claims protected by tests: failing a paper anchor fails CI.
Watch the CASCADE video on Vimeo
CASCADE is a NASA Space to Soil submission repository containing:
- Synthetic benchmark: a 100-seed Monte Carlo study (ROC sweep + ablations + sensitivity).
- Real-scene MODIS replay: AppEEARS-backed replays over the Westlands AOI.
- CSC calibration: offline parameter search with accepted calibration fixtures.
- Economics model: a rollout model and accepted baseline fixtures.
- Paper source:
paper/EmilLambert_CASCADE.texand the compiled PDF.
| vs raw downlink | vs fixed onboard | Recall | FP rate | CPU (peak / seasonal) |
|---|---|---|---|---|
| 99.1% downlink reduction 38.3% energy saving |
77.6% downlink reduction 25.4% energy saving |
100.0% | 0.6% | 92.5% / 49.2% |
Reviewer target: Python >=3.10,<3.13 (fresh virtual environment).
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt -r requirements-dev.txtThe source-tree shim supports python -m cascade.* directly from a checkout. If
you want an editable package install as well, run:
python -m pip install -e .Run the synthetic benchmark (skips slow “additional ablations” by default):
python -m cascade.simulateRun the paper-anchor replays. These prefer tracked artifacts when present, so they work offline and return the same JSON payloads used by tests:
python -m cascade.replay --year 2014
python -m cascade.replay --year 2024Run tests:
python -m pytest -qRun only the accepted-artifact validation checks:
python -m pytest -m validationmake test
make repro-2014
make repro-2024After reviewing regenerated files under build/, promote selected outputs into
tracked artifacts/ and paper/figures/:
make figuresThe Makefile uses .venv/bin/python when available and otherwise falls back to python3; pass PYTHON=/path/to/python to override it.
For live downloads, set Earthdata credentials in .env or your shell:
export EARTHDATA_USERNAME='your-username'
read -s EARTHDATA_PASSWORD
export EARTHDATA_PASSWORDTest AppEEARS login:
curl -i -u "$EARTHDATA_USERNAME:$EARTHDATA_PASSWORD" \
-X POST https://appeears.earthdatacloud.nasa.gov/api/loginRun the lower-level live replay workflow directly:
python real_modis_replay.py --helpThe offline reviewer replay commands above are preferred for quick evaluation;
live replay writes fresh outputs to build/replay/ and may reuse data/cache/.
Regenerate CSC calibration outputs:
python scripts/calibrate_csc.pyRegenerate unit-economics outputs:
python scripts/unit_economics.py- Package code:
src/cascade/ - Replay:
src/cascade/replay/modis.py - Benchmark:
src/cascade/simulation.py - Calibration:
src/cascade/calibration.py - Economics:
src/cascade/economics.py - Tracked outputs:
artifacts/ - Transient outputs:
build/ - Paper:
paper/EmilLambert_CASCADE.tex(source of truth)
More detail: docs/repo_structure.md
- Read Highlights + the metrics table above.
- Open
artifacts/benchmark/roc.png. - Run
make repro-2014ormake repro-2024(orpython -m cascade.simulate). - For artifact regression checks, run
python -m pytest -m validation. - Open the tracked replay metrics under
artifacts/replay/or read docs/replay_anchors.md.
If you use this repository, please cite it via CITATION.cff.
Released under the MIT License. See LICENSE.
