Dataset supporting: Zone-Aware Evaluation of Sentinel-2 Spectral Indices for Chlorophyll-a-Defined Bloom-Risk Monitoring in Barr Lake, Colorado
Description
This repository contains the processed satellite–field matchup dataset and reproducible code supporting the manuscript “Zone-aware evaluation of Sentinel-2 spectral indices for chlorophyll-a-defined bloom-risk screening in Barr Lake, Colorado.” Laboratory-measured in situ chlorophyll-a (Chl-a) observations from 2019–2025 were paired with the closest valid Sentinel-2 MSI Level-2A acquisition within an inclusive ±5-day window after cloud, pixel-quality, water-mask, and valid-cell screening. The final dataset contains 70 retained matchups from 51 field-sampling dates and 45 Sentinel-2 acquisition dates. Included files: • BarrLake_Sentinel2_Chla50_dataset_2019_2025.xlsx • main_analysis.py • GEE_Sentinel2_Index_Extraction_BarrLake.js • GEE_Figure3_SpatialComparison_BarrLake.js • README.md • requirements.txt • CHANGELOG_V4.txt The evaluated indices are the Normalized Difference Chlorophyll Index (NDCI), Floating Algae Index (FAI), and Absorption-Band Difference Index (ABDI). The binary outcome Chla50 equals 1 when measured Chl-a is ≥50 µg L⁻¹ and 0 otherwise. It represents an elevated-biomass screening condition and does not confirm cyanobacterial dominance, cyanotoxin occurrence or concentration, bloom toxicity, or the need for a health advisory. Primary continuous analyses used uncapped log₁₀-transformed Chl-a. For sensitivity analysis only, the three values above 400 µg L⁻¹ were set to 400 before transformation. Classification analyses included ROC-AUC, average precision, Youden-threshold metrics, 2,000 class-stratified bootstrap iterations, acquisition-date-grouped five-fold cross-validation with training-only threshold selection, and temporal-matchup sensitivity. The data show pronounced nearshore–open-water variability. Continuous index–Chl-a relationships were statistically detectable but modest. NDCI provided the strongest and most balanced threshold-classification performance; ABDI had the highest mean grouped specificity, and FAI had the lowest grouped sensitivity. Version 4 aligns terminology, variable names, file names, figure numbering, validation procedures, and documentation with the submitted manuscript. The legacy HAB50 label was replaced by Chla50 without changing the underlying class assignments.
Files
Steps to reproduce
1. Open-water samples at the Dam and Outlet were collected during July–September 2019–2025 at approximately 1 m depth using a Van Dorn sampler. Nearshore samples at the Boat Ramp and Fishing Dock were added in 2025 and collected from the upper approximately 1 m with an open graduated cylinder; these were treated as upper-water grab samples. 2. For both zones, 200–1,000 mL of water was filtered through pre-combusted GF/F filters under low vacuum (<10 psi). Filters were protected from light, stored on ice, extracted in 90% acetone, and analyzed by acidification-corrected fluorometry following U.S. EPA Method 445.0. 3. Sentinel-2 MSI Level-2A harmonized surface reflectance (COPERNICUS/S2_SR_HARMONIZED) was processed in Google Earth Engine. Scenes were restricted to <30% cloud cover, and SCL masking removed cloud shadow, medium/high cloud, cirrus, and snow/ice. 4. Zone-adapted masking was used: open-water sites applied SCL masking plus MNDWI ≥0, whereas nearshore sites used SCL masking only to retain potentially valid shallow or turbid shoreline-water pixels. 5. NDCI, FAI, and ABDI were calculated from scaled reflectance and averaged within a 15 m-radius buffer around each sampling coordinate. ABDI used bands B3, B4, B6, and B8A. 6. Each field observation was paired with the closest valid Sentinel-2 acquisition within ±5 days. Ranking prioritized the smallest absolute day offset, then the greatest minimum valid-cell count across the three indices, and then the lowest scene cloud percentage. Seventy matchups were retained. 7. Chla50 was coded as 1 for measured Chl-a ≥50 µg L⁻¹ and 0 otherwise. Primary continuous analyses used uncapped log₁₀-transformed Chl-a. For sensitivity analysis only, the three values above 400 µg L⁻¹ were set to 400 before transformation. 8. Analyses included zone summaries; a 2025-only zone comparison; Pearson and Spearman correlations; OLS regression with HC3 standard errors; capped-response, Huber, and median-quantile sensitivity analyses; ROC-AUC and average precision; Youden-threshold metrics; 2,000 class-stratified bootstrap iterations; five-fold cross-validation grouped by Sentinel-2 acquisition date; temporal-window sensitivity; and inter-index correlations. 9. Install the packages in requirements.txt, then run: python main_analysis.py --input BarrLake_Sentinel2_Chla50_dataset_2019_2025.xlsx --outdir analysis_outputs 10. Run the two .js files in the Google Earth Engine Code Editor. Replace the placeholder sampling-point asset path with your Barr Lake FeatureCollection. To assemble the spatial figure, export the required GeoTIFFs and rerun main_analysis.py with --mapdir.
Institutions
- University of Colorado BoulderColorado, Boulder
- Colorado Parks and WildlifeColorado, Denver