Ignopticon
Short-range wildfire spread forecasts (3–24 h) for fires already burning in the lower 48 US states. A physics fire model is restarted from what MODIS/VIIRS satellites see at each overpass. Built for the NASA Space Apps Challenge 2026 (Harmonization of MODIS and VIIRS Hot Spots).
Experimental research output, not an official forecast. Don't use it for evacuation or tactical decisions.
Forecast pipeline
- Observe. VIIRS 375 m active-fire detections (S-NPP, NOAA-20, NOAA-21) with fire radiative power, the raw 3.7 µm fire band from L1B swaths, and NASA FEDS fire perimeters every 12 h.
- Fire state. Detections become pixel footprints on a 375 m grid, joined with the burned area. Which edges are burning comes from the latest passes. Hotspots are never joined into a polygon.
- Spread. ELMFIRE (Rothermel surface spread plus crown fire, level set) on 37.5–75 m cells: LANDFIRE fuels and canopy, 3DEP terrain, HRRR hourly wind and dead-fuel moisture.
- Update. At the first overpass after issue (plus 1 h data latency), the run restarts from the newly observed burning edges. This is model B; the plain run from issue time is model A.
- Score. An observation operator turns each run's arrival times and fireline intensity into the heat VIIRS should see on each later pass. Scores are CSI against observed hot cells (one cell of tolerance, cloud-masked) and IoU against FEDS perimeters. Forecasts use only data available at issue time.
Firefighter map (/ops, the front page)
A single-fire view for crews and planners, built to work on a phone or laptop in the field.
- Fire list: every fire in the latest FEDS snapshot, nearest to your GPS position first (A–Z without one), with acres, 12 h growth and WFIGS incident name and containment. A date picker goes back through past snapshots.
- Map layers: the current FEDS perimeter; earlier perimeters shaded brown to yellow; forecast fronts at +6/+12/+24 h, hatched; VIIRS hotspots from the last 12 h; a "likely tomorrow" watch area of 10 km cells from the next-day activity models (choose which); GFS wind particles at a chosen height. Predicted burnout inside the perimeter and spot growth more than 1 km out are optional layers.
- Timeline: past snapshots, now, and forecast hours, shown together or one at a time. "Actual" overlays later observed perimeters on the forecast; it's off by default because a forecaster wouldn't have had them.
- Conditions: mapped fuel type (LANDFIRE) and hourly wind, temperature, humidity and rain at the fire (Open-Meteo).
- Field tools: GPS position, Sentinel-2 satellite basemap with labels, 3D terrain, a dispatch access route loaded from a GeoJSON file, and saved offline areas (tiles and fire data kept on the device by a service worker).
- API:
GET /api/fires?time=lists the fires at a moment, andGET /api/fires/:id?time=returns one fire's perimeter history, forecast, later observations and hotspots. The page's state (time, fire, view) is kept in the URL.
Results so far
Restarting at an overpass helps (one-fire case study). Widemouth 2, Utah, 2–6 Aug 2026: four 24 h windows, 14 scored passes after the update.
| Run | Pooled CSI | False alarms |
|---|---|---|
| A: ELMFIRE from 12Z | 0.255 | 1,475 |
| B: restarted at 21Z from the observed state | 0.306 | 666 |
| No growth from the 21Z state | 0.079 | 58 |
One fire and 14 passes, so this isn't a general result. Most of the gain comes from 55% fewer false alarms at the same hits. A spread multiplier (×0.02) was chosen leaving one window out. Both runs miss night-time smouldering heat in the fire's interior.
Harmonizing MODIS with VIIRS didn't help next-day prediction. A boosted-tree model maps MODIS Terra/Aqua detections to the chance VIIRS would have seen fire in each 0.1° cell-day, which extends a VIIRS-like record back to 2000. A U-Net trained to predict next-day VIIRS fire activity, tested on 2021–2024 (three seeds):
| Training data | AP | AUC |
|---|---|---|
| VIIRS only (2012–2019) | 0.140 | 0.918 |
| Raw MODIS 2003–2011 + VIIRS | 0.139 | 0.918 |
| Harmonized MODIS 2003–2011 + VIIRS | 0.138 | 0.918 |
Exploratory: earlier rounds' test scores were seen before the final runs. Next-day weather is observed (gridMET), which assumes a perfect forecast. No significance testing.
Data
| Source | Used for |
|---|---|
| VIIRS active fire (VNP14IMG, VJ114IMG, VJ214IMG), L1B VJ202/03IMG via LAADS | Hotspots, FRP, fire band, cloud mask |
| MODIS MOD14A1 / MYD14A1, VIIRS VNP14A1 / VJ114A1 | Daily fire grids, harmonization |
| NASA FEDS (VEDA) | Fire perimeters every 12 h |
| NIFC WFIGS | Incident names, containment |
| Open-Meteo | Conditions at the fire on the firefighter map |
| LANDFIRE LF2025, USGS 3DEP | Fuels, canopy, terrain |
| NOAA HRRR, GFS; gridMET | Fire-model weather, globe wind; training weather |
| NASA GIBS, USGS National Map, EOX Sentinel-2 cloudless (CC BY-NC-SA 4.0), AWS Terrain Tiles | Map imagery and terrain |
Software
- Modelling: ELMFIRE (Fortran/MPI, CPU), Python (NumPy, rasterio, shapely, LightGBM, PyTorch). GPU training on the University of Washington's Hyak cluster.
- Globe: a fork of Cameron Beccario's earth (MIT): D3, Backbone, and WebGL for overlays and map tiles.
- Firefighter map: MapLibre GL, plain ES modules with no build step, offline areas through a service worker.
- Server: Node.js/Express (fire API, tile proxy and cache), Docker, Caddy for HTTPS, AWS EC2.
Limits
- US only. No suppression or firefighting effects are modelled.
- Spread-model calibration so far rests on a few fires. Agreement between ensemble members is not a calibrated probability.
- Fires missing from a FEDS snapshot (no detections that pass) are shown with their last known perimeter.