Skip to content

spectral-library 0.2.0

Highlights

  • Persistent ANN index support for prepared runtimes via faiss, pynndescent, and scann
  • Optional KNN query backends for single-sample, batch, and benchmark mapping
  • Heuristic confidence diagnostics and richer neighbor-review outputs
  • Full-library benchmark automation with thresholds and scheduled CI support
  • Official sensor examples now evaluated against the full prepared SIAC library with exact held-out row exclusion

Public Surface Changes

  • New optional KNN backends: scipy_ckdtree, faiss, pynndescent, scann
  • New prepare-time option: prepare_mapping_library(..., knn_index_backends=[...])
  • New prepared-runtime manifest field: knn_index_artifacts
  • New benchmark control: benchmark_mapping(..., max_test_rows=...)
  • New diagnostic fields in mapping results: confidence_score, confidence_components, neighbor source-band values, and estimator weights

Prepared Runtime Notes

  • Prepared-runtime schema version: 1.2.0
  • VNIR/SWIR overlap blend range: 800-1000 nm
  • SWIR retrieval uses nir as a bridge feature when the source sensor defines it
  • Persisted ANN indexes are optional artifacts and are validated as part of the runtime contract when present

Benchmark Snapshot

The full-library benchmark runner was executed locally against the prepared full SIAC runtime with:

  • neighbor_estimator = simplex_mixture
  • knn_backend = numpy
  • k = 10
  • max_test_rows = 128
  • all 12 ordered MODIS / Sentinel-2A / Landsat 8 / Landsat 9 source-target pairs

Observed target-sensor retrieval MAE across those runs ranged from approximately 0.00106 to 0.00226, with no threshold failures under benchmarks/default_thresholds.json.

Documentation

Compatibility Notes

  • Python support in CI: 3.9, 3.10, 3.11, 3.12
  • Package license: MIT
  • Public output modes remain: target_sensor, vnir_spectrum, swir_spectrum, full_spectrum