Skip to content

JSON file catalog

SpectralBridge uses JSON for three different jobs: installed scientific parameters, run-specific correction/QA records, and validation or governance evidence. They should not be edited or interpreted in the same way.

This catalog documents active JSON files without inserting new keys into runtime schemas that existing loaders may not recognize.

Packaged scientific parameters

Installed code reads these files from src/spectralbridge/data/. This location is authoritative.

File What it controls Units and structure Loaded by How to validate a change
src/spectralbridge/data/landsat_band_parameters.json Target sensor band centers and Gaussian full widths at half maximum used for convolution/resampling Nanometers; every sensor entry has equal-length wavelengths and fwhms arrays standard_resample.py, pipeline convolution, sensor-panel plots Run resampling/convolution tests; inspect output band count, wavelengths, support, and QA
src/spectralbridge/data/hyperspectral_bands.json Reference hyperspectral wavelength axis for sensor-panel visualization Nanometers in one ordered bands array sensor_panel_plots.py Confirm ordering, numeric values, and expected panel wavelength range
src/spectralbridge/data/brightness/landsat_to_micasense.json Percent brightness adjustment coefficients for the general Landsat-to-MicaSense comparison system_pair, human-readable description, unit: percent, and string band indices brightness_config.py Run tests/test_brightness_coefficients.py; inspect the convolution stage's brightness*.png fitted-versus-configured coefficient profiles
src/spectralbridge/data/brightness/landsat_tm_etm_to_micasense.json Percent coefficients for the TM/ETM+-specific comparison Wavelength-aligned Landsat-like order; not native Landsat numbering brightness_config.py Run coefficient tests and the Python brightness_correction_metrics/render_brightness_diagnostics workflow before accepting scientific changes
src/spectralbridge/data/drone_translation_coefficients_v1.json (when generated and reviewed) Fixed site-balanced corrected-MicaSense to Landsat-like affine coefficients and compact bulk QA/provenance Versioned 18-record schema covering four wavelength-aware target relationships; not brightness coefficients or empirical calibration drone_translation_registry.py, drone_translation.py Generate only with scripts/build_drone_translation_registry.py from the exact compact bulk output; run registry, drone, and installed-data tests; absence is an explicit error

The same band-definition filenames under repository-root data/ are example/notebook copies. Installed package code does not load those copies. If a scientifically reviewed value changes, update both locations deliberately and keep the packaged file authoritative.

Example run configurations

These are intentionally self-documenting and are consumed only by the wrappers in examples/. Their about blocks are explanatory metadata; the wrappers pass only the nested pipeline object to SpectralBridge.

File Purpose Run safely
examples/config/neon_pipeline.example.json Complete NEON download-through-QA run python examples/run_neon_pipeline.py --check
examples/config/drone_pipeline.example.json Local drone HDF5 correction/extraction/QA run python examples/run_drone_pipeline.py --check

Copy an example before adapting it for a study. Record the copy with the output or analysis repository so parameters remain reproducible.

Validation and transparency records

File Meaning Edit policy
validation/campaigns/neon-live-100.example.json A proposed live campaign specification and resource checklist Populate deliberately before a live campaign; it is not evidence that runs occurred
validation/results/offline-contract.json Generated observations from deterministic offline function contracts Treat as generated evidence; regenerate with scripts/run_validation_campaign.py
docs/ai-transparency.json Generated machine-readable summary of PROMPT_LOG.md Do not hand edit; regenerate with scripts/generate_ai_transparency.py

JSON produced by a pipeline run

These files normally do not live in the repository because they belong to one flightline or run.

Filename pattern Meaning Consumer / check
*_brdfandtopo_corrected_envi.json Run-specific geometry, masks, paths, and correction parameters used to create the corrected ENVI pair stage_apply_brdf_topo_correction; must parse and match the flightline
*_brdf_model.json Fitted BRDF coefficient model for the scene Correction implementation and diagnose_brdf_topo_stage.py
*_qa.json Machine-readable diagnostic summary paired with the QA PNG Users, tests, publication/validation review
drone_qa_summary.json Batch-level drone provenance, status counts, paths, and failure details Drone users and QA review
*__working.stage.json, *__export.stage.json, *__correction.stage.json Drone stage input/config fingerprints, validated outputs, status, and timestamp Dependency-aware working-H5/ENVI/correction restart checks
qa/summary/drone_qa_summary.json, qa/report.stage.json Values shown on the first-page dashboard and the compact-input signature used to reuse/rebuild the final report Standalone final QA rendering without source rasters
*__translation.json Exact drone source-to-target equation, coefficient artifact fingerprint/run/weighting, wavelength-aware band mapping, source/output summaries, restart signature, and warnings Drone translation validation and restart checks
*__translation_qa.json Per-band corrected-MicaSense versus Landsat-like shifts, valid fractions, coefficient evidence, and unusual-value checks Standalone drone QA; no network or NEON required
landsat_cache/*.json Selected or supplied actual Landsat observation, sensor/date/cloud/temporal context, asset/scaling metadata, request fingerprint, and validated cached crop Optional Landsat comparison reuse and provenance; changed bounds/configuration or an invalid raster forces recropping
qa_common_support/*__comparison.json Common-grid specification, aggregation/support details, acquisition times, overlap, and pairwise drone/NEON/actual metrics Optional two- or three-way validation QA
qa_plots/*__MS_vs_Landsat_FIXED.json Per-flightline sampled synthetic MicaSense/Landsat regression diagnostic with spectral identity, separate source/target band indices, and center wavelengths QA inspection only; not a pooled coefficient source
coefficients/candidate_translation_coefficients.json Pixel-pooled and balanced synthetic regression candidates plus their evidence boundary Bulk analysis and reviewed downstream translation work
analyses/*/analysis_metadata.json Analysis settings, interpretation, run ID, and machine-readable results where appropriate Independent bulk analysis modules
analyses/bulk_results/bulk_results_summary.json Compact input hashes, screening configuration, dashboard metrics, priority cases, figure/report paths, and results-stage status Portable bulk QA/report regeneration
catalog/bulk_manifest.json Canonical catalog signature, source policy, settings, counts, and output names Restart validation for run_bulk_pipeline

Run-specific JSON is evidence. Keep it next to the artifacts it describes and do not reuse it for a different flightline merely because the filename looks similar.

Before changing any coefficient or band definition

  1. Identify the authoritative packaged JSON and the Python loader above.
  2. Record where the proposed value came from and its units.
  3. Confirm band indices are wavelength-aligned rather than assumed native sensor numbers.
  4. Add or update a focused test.
  5. Run the related convolution or coefficient plot and inspect the QA output.
  6. Keep the old and new values traceable in version control.

Changing scientific JSON is a scientific-method change, not a formatting task.