Checking for missing content type metadata ...
This resource contains content types with missing metadata required to make it public or discoverable. Show missing content type metadata.
Click on the edit button ( ) below to edit this resource.
Checking for non-preferred file/folder path names (may take a long time depending on the number of files/folders) ...
This resource contains some files/folders that have non-preferred characters in their name. Show non-conforming files/folders.
This resource contains content types with files that need to be updated to match with metadata changes. Show content type files that need updating.
| Authors: |
|
|
|---|---|---|
| Owners: |
|
This resource does not have an owner who is an active HydroShare user. Contact CUAHSI (help@cuahsi.org) for information on this resource. |
| Type: | Resource | |
| Storage: | The size of this resource is 10.5 GB | |
| Created: | Aug 24, 2026 at 5:17 p.m. (UTC) | |
| Last updated: | Aug 24, 2026 at 9:14 p.m. (UTC) (Metadata update) | |
| Published date: | Aug 24, 2026 at 9:14 p.m. (UTC) | |
| DOI: | 10.4211/hs.d9fd82b3dbc343a893f30b4b3ef94814 | |
| Citation: | See how to cite this resource |
| Sharing Status: | Published |
|---|---|
| Views: | 121 |
| Downloads: | 34 |
| +1 Votes: | Be the first one to this. |
| Comments: | No comments (yet) |
Abstract
Wildfire burn severity manifests as impacts on above-ground vegetation, relevant to ecological processes, or on soil, including below-ground organic matter, with direct relevance to hydrological and geomorphological processes. While Vegetation Burn Severity (VBS) is typically estimated using remote sensing proxies, Soil Burn Severity (SBS) is generally assessed through expensive, time-consuming manual field measurements. We introduce the Burn Severity of Soil And Vegetation (BurnSAVe) dataset to not only enable descriptive understanding of SBS and VBS interconnections but also facilitate prescriptive models that translate VBS to SBS. BurnSAVe integrates 456 spatially and temporally harmonized attributes describing fire severity, vegetation condition, terrain, climate, weather, soil properties and moisture, and daily fire progression for 532 large fires mainly across the Western United States from 2012 through 2024. We evaluated dataset quality and consistency using multiple complementary approaches, including cross-source comparisons and statistical assessments. BurnSAVe provides analysis-ready, pixel-level information suitable for statistical and machine learning applications, supporting systematic investigation of wildfire severity patterns, fire progression, and post-fire ecosystem responses across broad spatial and temporal scales.
Subject Keywords
Coverage
Spatial
Temporal
| Start Date: | |
|---|---|
| End Date: |
Content
README.md
BurnSAVe Dataset
Each thematic category in the dataset contains one or more GeoTIFF (.tif) files. Individual GeoTIFF files may consist of either a single band or multiple bands, depending on the variable and its temporal representation (e.g., static layers versus event-centered time series).
Within each year folder, files are named using the following convention:
{n}L_{MTBS_ID}.tif
where:
{n}Lindicates the number of bands (layers) contained in the GeoTIFF file.MTBS_IDis the unique MTBS fire identifier.
Example
4L_AZ3237811092720200606.tif
This filename indicates:
4L: a four-band GeoTIFF file.AZ3237811092720200606: the MTBS fire ID.
The final eight digits of the MTBS fire ID encode the fire ignition date in the format:
YYYYMMDD
For the example above, the ignition date is June 6, 2020 (2020-06-06).
Nested File Structure
Base_Data
├── Burnseverity_fireintensity_metrics
│ ├── Soil Burn Severity Classes (SBS)
│ │ ├── 2012
│ │ │ ├── 1L_az3415011088320120614.tif
│ │ │ └── …
│ │ ├── 2013
│ │ │ ├── 1L_AZ3143511076720130517.tif
│ │ │ └── …
│ │ └── …
│ │
│ ├── Vegetation Burn Severity (VBS)
│ │ ├── 2012
│ │ │ ├── 4L_OR4227712061220200815.tif
│ │ │ └── …
│ │ └── …
│ │
│ └── Fire Intensity Proxy (FRP)
│ ├── 2012
│ │ ├── 3L_az3415011088320120614.tif
│ │ └── …
│ └── …
│
├── Landsurface Vegetation Topography
│ ├── Ecoregions_Level_1_2_3
│ │ ├── 2012
│ │ │ ├── 3L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ ├── Vegetation and Land Cover (LANDFIRE)
│ │ ├── 2012
│ │ │ ├── 2L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ ├── Landsurface Temperature (LST)
│ │ ├── 25L_Day_Median
│ │ │ ├── 2012
│ │ │ │ ├── 25L_az3415011088320120614.tif
│ │ │ │ └── …
│ │ │ └── …
│ │ │
│ │ ├── 25L_Day_Std
│ │ │ ├── 2012
│ │ │ │ ├── 25L_az3415011088320120614.tif
│ │ │ │ └── …
│ │ │ └── …
│ │ │
│ │ ├── 25L_Night_Median
│ │ │ ├── 2012
│ │ │ │ ├── 25L_az3415011088320120614.tif
│ │ │ │ └── …
│ │ │ └── …
│ │ │
│ │ └── 25L_Night_Std
│ │ ├── 2012
│ │ │ ├── 25L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ ├── Topography
│ │ ├── 2012
│ │ │ ├── 3L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ └── Vegetation Condition and Greenness
│ ├── EVC
│ │ ├── 2012
│ │ │ ├── 1L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ ├── EVH
│ │ ├── 2012
│ │ │ ├── 1L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ ├── EVI
│ │ ├── 2012
│ │ │ ├── 25L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ └── NDVI
│ ├── 2012
│ │ ├── 25L_az3415011088320120614.tif
│ │ └── …
│ └── …
│
├── Soil Characteristics
│ ├── 2012
│ │ ├── 25L_az3415011088320120614.tif
│ │ └── …
│ └── …
│
├── Weather and Climate
│ ├── Climate Normal (30 Year Averages)
│ │ ├── 2012
│ │ │ ├── 7L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ └── Event Centered Climate
│ ├── Pr
│ │ ├── 2012
│ │ │ ├── 25L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ ├── Tmmn
│ │ ├── 2012
│ │ │ ├── 25L_az3415011088320120614.tif
│ │ │ └── …
│ │ └── …
│ │
│ └── Tmmx
│ ├── 2012
│ │ ├── 25L_az3415011088320120614.tif
│ │ └── …
│ └── …
│
└── Daily Fire Progression Attributes
├── VIIRS based Data
│ ├── 2012
│ │ ├── 192L_az3415011088320120614.tif
│ │ └── …
│ └── …
│
└── FIRED Data
├── 2012
│ ├── 8L_az3415011088320120614.tif
│ └── …
└── …
Table of Contents
| Section | Subsection | Description |
|---|---|---|
| 1. Burn Severity and Fire Intensity Metrics | 1.1 Soil Burn Severity (SBS) | Soil burn severity classes |
| 1.2 Vegetation Burn Severity (VBS) | Vegetation burn severity metrics | |
| 1.3 Fire Radiative Power (FRP) | Fire intensity proxy | |
| 2. Landsurface, Vegetation, and Topography | 2.1 Ecoregions Level 1, 2, and 3 | Ecoregion classifications |
| 2.2 Vegetation and Land Cover (LANDFIRE) | Vegetation and land-cover information | |
| 2.3 Landsurface Temperature (LST) | Daytime and nighttime land-surface temperature | |
| 2.4 Terrain Data | Topographic attributes | |
| 2.5 Vegetation Condition and Greenness | Vegetation condition and greenness indices | |
| 3. Soil Characteristics | — | Soil physical and hydrological characteristics |
| 4. Weather and Climate | 4.1 Climate Normal (30-Year Averages) | Long-term climate averages |
| 4.2 Event-Centered Climate | Climate variables centered around each fire event | |
| 5. Daily Fire Progression Attributes | 5.1 VIIRS-Based Data | Daily fire progression derived from VIIRS |
| 5.2 FIRED Data | Daily fire progression derived from FIRED |
BurnSAVe Stacking App
Stack fire-related raster features (burn severity, fire intensity, climate, vegetation, topography, and daily fire-progression variables) into per-fire-event, multi-band GeoTIFFs — with real variable names and definitions on every band, not generic placeholders.
You download the public BurnSAVe dataset yourself from HydroShare (no account or login required), then give the app the path to the zip file or the extracted folder. The app takes it from there.
Contents
| File | Purpose |
|---|---|
app.py |
The application. Interactive prompts or CLI flags; this is what you run. |
stacker.py |
Core stacking engine (alignment, resampling, GeoTIFF writing). You shouldn't need to touch this. |
band_metadata.py |
Real variable names/definitions/units/sources for every band, transcribed from the dataset's metadata document. |
local_data.py |
Unzips your downloaded data (if needed) and locates the BurnSAVe folder automatically. |
environment.yml |
Conda environment spec (Python, numpy, rasterio). |
setup_env.sh / setup_env.ps1 |
One-time environment setup (Linux/macOS / Windows). |
run.sh / run.ps1 |
Convenience wrappers that activate the environment and run app.py, forwarding any arguments. |
README.md |
This file. |
Requirements
- Conda (Miniconda or Anaconda) — https://docs.conda.io/en/latest/miniconda.html
- A web browser, to download the public dataset from HydroShare
No extra Python packages beyond environment.yml are needed — there's no
API client involved.
Quick Start
1. Set up the environment
Linux/macOS:
``` chmod +x setup_env.sh run.sh
./setup_env.sh
```
conda activate sbs_app
Windows PowerShell:
.\setup_env.ps1
conda activate sbs_app
2. Download the dataset
Download the dataset from its public HydroShare page using your web browser. Save the downloaded .zip file to a location of your choice.
3. Run the application
Run the application and specify the path to the downloaded dataset:
python app.py --data-root "C:/Downloads/BurnSAVe.zip" --features VBS,NDVI --years 2020 --out-dir ./outputs
The app unzips the file automatically (next to where it already is), finds
the BurnSAVe folder inside, and produces stacked GeoTIFFs in ./outputs.
Re-running the same command later skips re-unzipping, since it detects the
data is already extracted.
Step-by-Step Setup
1. Install Conda
Download Miniconda for your OS, install with default options, then reopen
your terminal. Confirm it worked:
bash
conda --version
2. Get the app files
Put this whole folder somewhere convenient and open a terminal in it:
bash
cd sbs_app
ls
3. Create the environment (one-time)
Linux/macOS:
bash
chmod +x setup_env.sh run.sh
./setup_env.sh
conda activate sbs_app
Windows (PowerShell):
powershell
.\setup_env.ps1
conda activate sbs_app
Your prompt should now start with (sbs_app). This creates the environment
from environment.yml (Python 3.11, numpy, rasterio). You only need to do
this once per computer; re-run setup_env any time environment.yml
changes.
4. Download the dataset yourself
Open the dataset's public HydroShare page in a browser and download it as a zip — no account or login required, since it's public. Save it anywhere convenient; you don't need to unzip it yourself.
Pointing the App at Your Data
--data-root (or the SBS_DATA_ROOT environment variable) accepts either:
- A
.zipfile — the app unzips it automatically, into a new folder named after the zip, right next to it. For example,C:/Downloads/BurnSAVe.zipextracts toC:/Downloads/BurnSAVe/. - An already-extracted folder — used directly (or searched one level in,
if the
BurnSAVefolder is nested a level or two deeper, e.g. inside a folder HydroShare added around it).
Either way, the app automatically finds the folder literally named
BurnSAVe and uses that as the dataset root. This never requires internet
access — it only touches files already on your disk.
One-off, per run
bash
python app.py --data-root "C:/Downloads/BurnSAVe.zip" --features VBS,NDVI --out-dir ./outputs
Set once for the whole terminal session
bash
export SBS_DATA_ROOT=/full/path/to/BurnSAVe # Linux/macOS, already extracted
$env:SBS_DATA_ROOT = "C:\full\path\to\BurnSAVe" # Windows PowerShell, already extracted
Note:
SBS_DATA_ROOTexpects an already-extracted folder, not a zip. Use--data-rootif you want to point directly at a.zipfile.
Sanity-check before a real run
bash
python app.py --data-root "C:/Downloads/BurnSAVe.zip" --list-features
This unzips/locates the data (if needed) and runs the same path-existence
check the stacker uses, warning immediately if anything's missing instead of
failing partway through a run.
Extract/locate only, without stacking anything
bash
python local_data.py --path "C:/Downloads/BurnSAVe.zip"
Prints the resolved BurnSAVe folder path and the exact commands to use it,
without running the stacker.
If nothing is set
If you don't pass --data-root, don't set SBS_DATA_ROOT, and you're
running non-interactively, the app falls back to the built-in default path
in app.py (DEFAULT_DATA_ROOT). On a new computer this usually won't
exist, and the app fails fast with a clear error instead of silently
producing zero outputs:
[ERROR] The SBS reference folder does not exist:
<path>
Fix it with one of:
--data-root "C:/path/to/BurnSAVe.zip"
--data-root /path/to/already/extracted/BurnSAVe
export SBS_DATA_ROOT=/path/to/your/BurnSAVe
Running the App
Interactive mode
Run with no arguments at all:
bash
python app.py
You'll be prompted in order for: the path to your BurnSAVe data (a .zip or
an extracted folder — skipped if --data-root/SBS_DATA_ROOT is already
set), output folder, years, months, MTBS IDs, features (the full feature
list with descriptions is printed first), whether to include SBS, strict
mode, and debug logging. Press Enter at any prompt to accept its default.
Non-interactive / scripted mode
Pass any of --out-dir, --years, --months, --mtbs-ids, --features,
--include-sbs, --strict, --debug, or -y, and the app skips the
prompts and runs directly — useful for batch/HPC jobs:
bash
python app.py --data-root "C:/Downloads/BurnSAVe.zip" --years 2019,2020 --features VBS,NDVI --out-dir ./outputs --strict
run.sh/run.ps1 forward any arguments, so ./run.sh --list-features works
the same way.
Exploring Features and Bands
These need no data on disk — they just read the built-in metadata catalog:
List all available features
python app.py --list-features
Describe a specific feature
python app.py --describe-feature VBS
Available features
| Feature | Bands | Description |
|---|---|---|
SBS |
1 | Soil Burn Severity classes (categorical). Always used as the spatial reference grid. |
VBS |
4 | Vegetation Burn Severity: dNBR_BARC, dNBR_MTBS, dNBR6, RdNBR. |
FRP |
3 | Fire Radiative Power: max, cumulative, day/night flag. |
Climate_Normals |
7 | 30-year climate normals: wind, temperature, radiation, precipitation, ET. |
Pr |
25 | Monthly precipitation, event-centered (12mo pre-fire … fire month … 12mo post-fire). |
Tmmn / Tmmx |
25 each | Monthly min/max temperature, event-centered. |
Soil_Characteristics |
6 | Silt, sand, clay, organic matter, theta_r, theta_s. |
Ecoregions |
3 | EPA Level I/II/III ecoregion IDs (categorical). |
Landcover |
2 | LANDFIRE vegetation group + biophysical setting code (categorical). |
LST_Day_median / LST_Night_median / LST_Day_std / LST_Night_std |
25 each | Monthly land-surface temperature statistics, event-centered. |
Topography |
3 | Elevation, slope, aspect. |
EVC / EVH |
1 each | LANDFIRE Existing Vegetation Cover / Height class (categorical). |
EVI / NDVI |
25 each | Monthly vegetation indices, event-centered. |
VIIRS_daily |
192 | Daily/event-centered fire-progression and environmental driver variables. |
FIRED |
8 | FIRED daily fire-weather variables. |
VIIRS_dailyandFIREDwere previously namedDaily_zach/Daily_Jennifer. Both old names still work (auto-mapped internally) if you have older scripts referencing them.
Band naming in the output
Every band in a stacked GeoTIFF is named <feature>__<variable>, e.g.
VBS__dNBR6, Pr__pr_m-12 (12 months pre-fire), Pr__pr_m+00 (fire month).
This is stamped as the band description in the GeoTIFF itself (visible in
QGIS/ArcGIS/gdalinfo), along with tags for DEFINITION, UNITS, SOURCE,
and CLASSES where applicable.
CLI Reference
| Flag | What it does |
|---|---|
--list-features |
Print every available feature with a one-line description. No data needed. |
--describe-feature NAME |
Print the full band-by-band definition of one feature. No data needed. |
--data-root PATH |
Path to your BurnSAVe data — a .zip file (unzipped automatically) or an already-extracted folder. |
--out-dir PATH |
Output folder for stacked GeoTIFFs, band-legend CSVs, and logs (default: ./outputs). |
--years LIST |
Comma-separated years, or a range like 2012-2015. Default: all available. |
--months LIST |
Comma-separated months (1-12). Default: all. |
--mtbs-ids LIST |
Comma-separated MTBS fire identifiers, to restrict to specific fire events. |
--features LIST |
Comma-separated features to stack (default: VBS,NDVI). |
--include-sbs |
Include the Soil Burn Severity layer as an output band. |
--strict |
Stop with an error on any missing feature, instead of skipping it. |
--debug |
Verbose logs, including per-band resampling detail. |
-y, --yes |
Force non-interactive mode using defaults for anything not given as a flag. |
Run python app.py --help any time for the full, current list.
Output Structure
outputs/
STACK_<mtbs_id>.tif <- stacked, multi-band GeoTIFF for one fire event
STACK_<mtbs_id>_bands.csv <- plain-English legend: variable, definition, units, source, classes, per band
logs/
stack_log_<timestamp>.log <- full run log
stack_report_<timestamp>.csv <- FOUND / MISSING / ERROR, per feature per fire
Always check the _bands.csv first to know exactly what each band in the
GeoTIFF represents.
Troubleshooting
| Symptom | What to do |
|---|---|
conda: command not found |
Reopen your terminal after installing Miniconda, or confirm conda is on your PATH. |
ImportError: cannot import name '...' from 'band_metadata' (or similar) |
Your app.py/band_metadata.py/stacker.py/local_data.py are from different versions. Replace all of them together, not one at a time. |
[ERROR] Path not found: ... |
The path/zip you gave --data-root doesn't exist — check for typos, or that the file finished downloading. |
[ERROR] The SBS reference folder does not exist |
No data root is configured yet, or it's pointing at the wrong place. Set --data-root to your zip file or extracted folder. |
Could not find a 'BurnSAVe' folder inside the extracted contents |
The zip extracted with an unexpected layout. Inspect the extracted folder by hand, then pass --data-root pointed directly at the correct location. |
Outputs written: 0 with a warning |
Your --years/--months/--mtbs-ids filters excluded every fire, or every match failed — check logs/stack_report_<timestamp>.csv for FAIL/MISSING entries. |
setup_env.sh: No such file or directory |
The file is missing from your local folder — re-copy the full file set listed under Contents. |
--features SBS alone produces 0 outputs |
SBS is always the alignment reference, not a regular stackable feature — combine it with --include-sbs if you want it as an output band. |
Notes
- Nothing in this app ever connects to the internet or any API — all it
does is read a
.zipfile or folder you already downloaded yourself. find_data_root()searches case-insensitively forBurnSAVe, so variations in capitalization in the extracted folder name won't break auto-discovery.- Re-running the same
--data-root <zip>command is safe — it detects the zip is already extracted and skips redoing it.
Additional Metadata
| Name | Value |
|---|---|
| Application guideline | First, download both the dataset and the application. Instructions for installing and using the application are provided in the APP-README file. |
Credits
Funding Agencies
This resource was created using funding from the following sources:
| Agency Name | Award Title | Award Number |
|---|---|---|
| NASA Earth Science | NASA FINESST | 80NSSC24K1758 |
How to Cite
This resource is shared under the Creative Commons Attribution CC BY.
http://creativecommons.org/licenses/by/4.0/
Comments
There are currently no comments
New Comment