Operator’s Guide¶
This guide is for pilots, flight operators, and anyone running the fire detection software without needing to understand the underlying physics. For algorithm details, see Science and Algorithm Guide.
Quick Start¶
Install dependencies:
pip install pyhdf numpy matplotlib torch scikit-learn pandas scipy earthaccess
pyhdfrequires HDF4 C libraries. On macOS with conda:conda install -c conda-forge pyhdf
Download the data (requires a free NASA Earthdata account):
python download_data.py # all 4 flights (~9 GB) python download_data.py --flight 04 # just one flight (~4 GB) python download_data.py --list # list files without downloading
The script will prompt for your Earthdata credentials on first run and cache them for future use. Alternatively, place MASTER L1B HDF4 files manually in
ignite_fire_data/.Run a script:
python mosaic_flight.py # standard mosaic + fire overlay python realtime_fire.py # real-time sweep simulation python plot_burn_locations.py # per-flight burn analysis python plot_vegetation.py # NDVI vegetation maps (daytime) python detect_fire.py # single-file fire detection python fire_ml.py # train ML fire detector
All output goes to the plots/ directory.
Flights in the Dataset¶
Flight |
Date |
Description |
Day/Night |
Files |
Fire Present? |
|---|---|---|---|---|---|
24-801-03 |
Oct 18, 2023 |
Pre-burn data collection |
Day |
9 |
No – collected before the burn |
24-801-04 |
Oct 19, 2023 |
First fire flight |
Day |
40 |
Yes – USFS Blowdown Prescribed Burn |
24-801-05 |
Oct 20, 2023 |
Second fire flight (nighttime) |
Night |
16 |
Yes – USFS Lakes Unit Prescribed Burn |
24-801-06 |
Oct 20, 2023 |
Third fire flight |
Day |
18 |
Yes – USFS Blowdown Prescribed Burn |
What Each Script Produces¶
Script |
Purpose |
Output Files |
|---|---|---|
|
Download MASTER L1B data from NASA Earthdata |
|
|
Assemble flight lines into georeferenced mosaic with fire overlay |
|
|
Simulate real-time sweep-by-sweep fire detection |
|
|
Per-flight 2x2 analysis (fire map, T4, SWIR, scatter) |
|
|
2x2 NDVI vegetation maps with fire overlay (daytime only) |
|
|
Single-file fire detection comparing pre-burn vs burn |
|
|
Train MLP fire detector, produce prediction maps |
|
Reading the Outputs¶
Fire Overlay Colors¶
Red dots: Fire detections that passed the absolute temperature threshold (T4 > 325 K daytime, 310 K nighttime).
Orange dots (in
realtime_fire.py): Vegetation-confirmed fire – pixels where thermal fire is independently confirmed by NDVI drop (vegetation loss). Higher confidence than red-only.Orange dots (in
detect_fire.py): Contextual anomaly detections – pixels that are anomalously warm relative to their neighbors but below the absolute threshold.
Background Layer¶
The display automatically adapts based on available sunlight data:
Daytime (NDVI background): Green tones show healthy vegetation, brown/red tones show bare soil or stressed vegetation. Fire appears as red dots overlaid on the vegetation map.
Nighttime (T4 thermal background): Warm colors show terrain temperature. Fire appears as bright spots against the cooler background.
The system detects day/night per pixel from actual NIR radiance levels, not from clock time. This handles cloud cover correctly – if clouds block sunlight, those pixels show thermal background even during geometric daytime.
Stats Box (Real-Time Simulation)¶
The realtime_fire.py output includes a stats box showing:
Sweep N/M [NDVI or T4]: Current sweep number and background type.
Coverage: Percentage of grid cells with data so far.
Fire pixels: Total confirmed fire pixels (after multi-pass filter).
Veg-confirmed: Fire pixels independently confirmed by vegetation loss (NDVI drop from baseline). These are shown as orange dots.
Total fire area: Estimated area in m2 or hectares.
Fire zones: Number of spatially connected fire regions.
Zone breakdown: Top 5 zones by size with individual areas.
What “Multi-Pass Confirmed” Means¶
When a pixel is observed by multiple flight lines (overlapping passes), the system requires fire to be detected in at least 2 passes before confirming it as fire. This eliminates false positives from solar reflection, which are angle-dependent and only trigger from one direction. Real fire emits in all directions and triggers consistently.
Real-Time Simulation¶
realtime_fire.py processes one sweep at a time, building the mosaic
incrementally. Each sweep produces a PNG frame showing the current state.
To create an animated GIF from the frames:
convert -delay 50 -loop 0 plots/realtime_2480104/frame_*.png animation.gif
This requires ImageMagick.
Data Requirements¶
The HDF4 files should be placed in ignite_fire_data/. They are
MASTER Level 1B files from the FireSense 2023 campaign, publicly
available from the NASA ASAP Data Archive.
File Naming Convention¶
MASTERL1B_2480104_20_20231019_2031_2033_V01.hdf
| | | | | | |
| | | | | | +-- Version
| | | | | +------- End time (HHMM UTC)
| | | | +------------ Start time (HHMM UTC)
| | | +--------------------- Date (YYYYMMDD)
| | +------------------------ Flight line number
| +-------------------------------- Flight ID
+------------------------------------------ Product: MASTER Level 1B
Troubleshooting¶
- “No module named ‘pyhdf’”
Install HDF4 C libraries first, then
pip install pyhdf. On macOS:conda install -c conda-forge pyhdf.- “No module named ‘lib’”
Ensure the
lib/directory is present in the project root. If you cloned from git andlib/is missing, check that.gitignoredoes not contain a barelib/entry.- No HDF files found
Place MASTER L1B files in
ignite_fire_data/relative to the project root. Files must matchMASTERL1B_*.hdf.