Changelog#
All notable changes to this project are documented here. Format follows Keep a Changelog.
0.2.2 — 2026-05-06#
Added#
instrument_primer.ipynb— standalone notebook explaining NIRISS GR150R/F150W grism geometry: sensitivity curves, trace geometry and footprint table, dispersion solution, single-source and multi-source (10-source aggregate) per-order images, and a full-stamp source coverage map. Integrated into the Sphinx documentation under a new Background section.Sphinx API documentation — full autodoc coverage across five RST pages (
modules,instrument_basis,operators,solvers,overview); four Graphviz architecture diagrams; all cross-references resolve; zero new-Wwarnings.FISTA adaptive restart —
JAXProximalSolvergainstol(convergence tolerance),restart(gradient-condition adaptive momentum reset), andcallbackparameters.Comparison notebooks — pre-executed with outputs committed:
comparison_solver_accuracy.ipynb: LSQR vs FISTA on a crowded scene + RMSE sweep over source density.comparison_computational.ipynb: memory, runtime, and convergence benchmarks.
0.2.0 — 2026-05-05#
Added#
JAXOperator— JAX-based forward operator with compact trace representation (trace_indices[K,O,L]int32 +weights[O,L,M]float32); out-of-bounds wavelengths absorbed by a ghost pixel atn_pixrather than masked at call time.JAXProximalSolver— FISTA with group-L1 proximal operator (group_soft_threshold) andpower_iterationfor Lipschitz constant estimation.Both classes exposed in the public API (
spectrex.JAXOperator,spectrex.JAXProximalSolver).NoiseModel.sample()for mock Poisson + read-noise generation.analysis_rmse_vs_density.ipynb— RMSE vs source density sweep, pre-executed.mock_example.ipynb— end-to-end Phase 1 worked example with noiseless and noisy recovery.Package-level logger with
NullHandler(no output unless the caller configures logging).Slow integration test (
@pytest.mark.slow) for the full JAX pipeline with real testdata.
0.1.0 — 2026-05-05#
First installable release. The original codebase was a collection of standalone scripts for NIRISS WFSS spectral extraction — no package structure, no tests, no documentation.
Added#
src/spectrex/package layout withpyproject.toml/uvtoolchain.EigenspectraBasis— frozen dataclass; loads PCA components from CSV; read-only array views;reconstruct()andbroadband_image().InstrumentConfig— loads GR150R calibration files;get_trace()returns wavelength-resolved pixel positions; per-order sensitivity arrays.ForwardOperatorProtocol—@runtime_checkabletyping Protocol defining theapply()/apply_transpose()interface.SciPySparseOperator— CSR-backed implementation of the protocol; explicit sparse matrix construction from trace geometry.SpectralSolver— LSQR / LSMR with optional Tikhonov regularisation.NoiseModel— Poisson + Gaussian read noise model.pytestsuite: fast unit tests + slow integration tests against realtestdata/; slow tests skipped in default CI via@pytest.mark.slow.Sphinx documentation scaffold.