Change Log

3.4.3 (not released yet)

  • VAC documentation overhaul: reorganize by data release; add Iron/fastphot and Loa/DR2 VAC pages; replace inaccurate QSO-redshift code block with prose [PR #260].

  • Propagate --constraintsfile through mpi-fastspecfit. Exclude amplitude-constrained doublet pairs from kinematic relaxation in the final optimization pass and update the default narrow-only final-pass configuration to free_sigma: false [PR #259].

3.4.2 (2026-06-03)

  • Introduce YAML-based emission-line constraint system via data/emline-constraints.yaml to define kinematic groups, doublet bounds, amplitude constraints, and fitting-strategy parameters; enable the final per-line optimization pass by default for narrow-only solutions; two new columns: DELTA_KINECHI2 and DELTA_KINENDOF [PR #257].

  • Use original resolution matrix for continuum-fitting; major bug fix in resolution matrix deconvolution [PR #256].

3.4.1 (2026-05-26)

  • Production logging and robustness fixes: replace desiutil logger with a custom getFastspecLogger() and _DynamicStdoutHandler that follows stdouterr_redirected without being reset by DESI library code; add _initialize_sc_data_worker() to suppress per-object INFO in SLURM logs while preserving them interactively; fix spawn-mode sc_data AttributeError by using a module-level pool initializer; fix mpi-fastspecfit always reporting SUCCESS when workers fail; add output basename and uniqueid to WARNING messages for traceability; report per-object per-core CPU timing in fit_all log; replace corner dependency with a self-contained _corner_plot() in qa.py; replace dump-all-columns debug print with a curated column subset; suppress repeated zero-coefficient WARNING (was firing once per Monte Carlo realization); fix RuntimeWarning from log10(0) in _get_sps_properties and photometry absmag/kcorr calculations [PR #254].

3.4.0 (2026-05-21)

  • Production infrastructure overhaul: hoist MPPool creation out of the per-file loop in mpi-fastspecfit (templates now loaded once per rank rather than once per file); replace joblib.Parallel with MPPool for --mp-per-file mode; auto-detect per-file vs per-object parallelism when average targets per file is less than --mp; add idempotency guard to Singletons.initialize(); fix --ignore-photometry bug in build_cmdargs; add bin/generate-fast-slurm for balanced Slurm job generation; add etc/ production run scripts and READMEs [PR #253].

  • Fix position-dependent flux bias in emission-line fitting: replace the Buhler per-bin CDF integration forward model with Gaussian point evaluation matched to the Gaussian pre-convolution expected by the deconvolved resolution matrix; switch reported line flux to the analytic formula sqrt(2π)·A·λ*·σ/c; update the Jacobian accordingly; remove dead norm_cdf/norm_pdf code; extend unit tests with flux-recovery and sub-pixel position-independence checks on a linear-lambda grid [PR #252].

  • Performance optimizations: replace TRF continuum optimizer with Variable Projection (VARPRO) for all fit_vdisp=False cases; vectorize the VARPRO inner loop (batched phi construction, spectroscopy, and photometry); use loose convergence tolerances for Monte Carlo and chi2-scan fits; warm-start Monte Carlo emission-line refits from the nominal best-fit values; add bin/profile-fastspec profiling harness [PR #251].

  • Add standalone build_stellar_continuum function and update tutorial notebooks to latest code API; add doc/technote/continuum-modeling.tex technote [PR #232].

3.3.0 (2026-05-18)

  • Fix Inoue14.full_IGM returning all-ones when lobs is an integer array; fix MW extinction correction not applied to FIBERFLUX and FIBERTOTFLUX in the output metadata table; fix FIBERTOTFLUX writeback in fastspec_one using wrong data source [PR #249].

  • Overhaul documentation: replace sphinx-toolbox with sphinx-design; remove stale Sphinx<8.2 pin; expand API docs to include fastspecfit.emline_fit subpackage; rewrite install.rst with simplified laptop setup, micromamba recommendation, and fleshed-out data dependency descriptions; restructure running.rst around three audience tiers; add new data.rst (“Working with FastSpecFit Data”) and tutorials.rst top-level pages [PR #248].

  • Add integration tests for stackfit and fastqa; fix stackfit incorrectly requiring dust-map and photometry environment variables; fix fastqa incorrectly requiring DESI_SPECTRO_REDUX when --redrockfiles is provided; fix fastqa KeyError: 'TARGETID' when running QA on stacked outputs by deriving the fitstack flag from the file header rather than the --stackfit CLI argument [PR #247].

  • Add unit tests for emline_fit, resolution, linemasker, continuum, emlines, and io modules; cache template download in CI; streamline Python version matrix [PR #246].

  • Rewrite all docstrings to uniform NumPy style for ReadTheDocs rendering [PR #245].

  • Deconvolve the resolution matrix before fitting, as recommended by S. Koposov and update config files [PR #244].

3.2.1 (2026-03-20)

  • Add vdisp-nominal and vdisp-bounds optional inputs [PR #231].

  • Remove python<3.13 constraint [PR #242].

3.2.0 (2025-06-19)

  • Add option to pass the reference to a custom linelist in mpi-fastspecfit [PR #225].

  • Bug due to clip level in ivar2var function caused poor line fits in very small number of strong emission lines. Issue described in [PR #227] and bug fixed in [PR #228].

  • Make sure upper bound is above the amplitude estimate [PR #229].

3.1.5 (2025-03-27)

  • Significant bug fix in how the flux and EW inverse variance estimates [PR #213]. Also adds option of merging main/dark and main/bright catalogs by healpix.

3.1.4 (2025-02-24)

  • Handle no ZWARN_NEW in Iron and older specprods; split large merge files into separate HDUs [PR #211].

3.1.3 (2025-02-01)

  • Eliminate the use of subcommunicators in mpi-fastspecfit [PR #210].

3.1.2 (2025-01-08)

  • A handful more bug fixes [PR #207].

  • Miscellaneous bug fixes revealed in Loa/Y3 processing [PR #206].

3.1.1 (2025-01-05)

  • Miscellaneous bug fixes [PR #205].

  • Pure-MPI implementation; new Podman container; bug fixes [PR #203].

  • Updated algorithm for updating QSO redshifts [PR #201].

  • Progress toward pure-MPI production code [PR #200].

  • Fix <1% bias in fluxes and EWs of tied and free doublet ratios [PR #198].

  • Backwards incompatible update to the data model; expanded unit tests [PR #197].

3.1.0 (2024-11-21)

  • Update theoretical [NII] 6548,84 and [OIII] 4959,5007 doublet ratios [PR #195].

  • Additional cleanups and speedups to the new Monte Carlo code [PR #194].

  • Implement a simplified idiom for Monte Carlo iteration [PR #193].

  • Merge two multiprocessing loops into one [PR #192].

  • Monte Carlo to estimate model parameters [PR #189].

  • Fix issues with log level retention [PR #187].

3.0.0 (2024-10-30)

  • Rewrite of the smooth continuum and continuum-flux algorithms [PR #186].

  • Miscellaneous bug fixes [PR #185].

  • Use Numba-based Resolution implementation with faster multiply. Also tweak parameters of continuum least_squares optimizer for speed. [PR #181]

  • Cache Fourier transforms of the templates for speed [PR #180].

  • Update line-list (drop broad HeI lines) and rest wavelengths [PR #179].

  • Near-total rewrite of both the continuum and emission-line fitting engines and major updates to the organizational infrastructure of the code, all with the goal of maximizing speed and accuracy [PR #177].

2.5.2 (2024-04-28)

  • Add support for processing a custom sample with full MPI [PR #168].

  • New optional inputs to mpi-fastspecfit: --no-smooth-continuum, --fphotodir, and --fphotofile.

  • Documentation bug in LOGLNU definitions (reported by R. Hada).

  • Add --zmin optional argument to fastspecfit.

  • Other miscellaneous changes committed directly to main.

2.5.1 (2024-01-18)

  • Bug fix: handle Lya falling in a masked camera (only for objects at z>5ish).

2.5.0 (2024-01-13)

  • Address stellar mass bias; more constrained broad+narrow fitting; and max velocity dispersion increased to 475 km/s (bump template version to 1.3.0) [PR #166].

2.4.3 (2023-12-03)

  • Expand velocity dispersion grid to 425 km/s and bump the template version to 1.2.0 [PR #158].

  • Handle variable pixel size in camera-overlap region bug [PR #157].

  • Fix minor bug that broke the stackfit functionality [PR #155].

2.4.2 (2023-08-30)

  • Fix incorrect syntax synthesizing photometry for highest-redshift targets bug [PR #152].

2.4.1 (2023-08-23)

  • Just two rounds of emission-line fitting [PR #151].

2.4.0 (2023-08-19)

  • Bug fixes and miscellaneous feature requests for next VACs, including modified SPS templates and a user-friendly refactor of the K-correction code [PR #148].

2.3.0 (2023-08-07)

  • Support non-DR9 photometry via a new photometric configuration file [PR #133].

  • Miscellaneous updates and bug fixes ahead of next version of VACs [PR #145].

2.2.0 (2023-08-02)

  • Allow the Redrock redshift to be overridden [PR #115].

  • Code to support fitting stacked spectra [PR #116].

  • Bug fix of reversed tied flux ratio of [OII]7320,7330 doublet [PR #120].

  • Do not constrain the SPS age by default [PR #132].

  • Bug fix of emission-line subtracted Dn(4000) measurement [PR #135].

  • Update IGM attenuation coefficients [PR #136].

  • Several significant changes [PR #137]:

    • Record the observed-space emission-line amplitude in _AMP and move the model-space amplitude to _MODELAMP.

    • Demand at least 12 pixels to measure the scatter in the pixels under the line (therefore _AMP_IVAR should be more reliable for narrow lines).

    • Major bug fix whereby the model emission-line spectra were not being convolved with the resolution matrix.

    • Redefine _CHI2 for an emission line as the observed not reduced chi2.

    • Switch from (deprecated) pkg_resources to importlib.

    • Updated documentation (data model) and several non-negligible speed-ups.

  • Improved modeling of galaxies with broad+narrow line-emission [PR #142]:

2.1.2 (2023-04-01)

  • Web-app updates needed for Fuji/v2.0 database load [PR #107].

  • Get target cutouts using image coadds on-disk [PR #108].

  • Initial hooks to fit stacked spectra [PR #113].

  • Updated documentation for v2.0 Fujilupe and v1.0 Iron VACs [PR #114].

2.1.1 (2023-02-22)

  • Be robust to synthesizing photometry of the highest-redshift targets [PR #101].

  • Fix another corner-case crash to the highest-redshift targets [PR #102].

  • Do not crash if there are no lines to optimize [PR #104].

2.1.0 (2023-02-17)

  • Tests, bug fixes, and speed-ups of version 2.0.0 [PR #99].

2.0.0 (2023-01-23)

  • Support custom coadds, update laboratory line-wavelengths, and fix major EW bug [PR #87].

  • Refactor fitting engine to not use fnnls or astropy.modeling [PR #92].

  • Additional Fujilupe documentation [PR #93].

  • Webapp updates to support latest data model [PR #94].

  • Joint spectrophotometric fitting and much more [PR #95].

  • Additional fujilupe v2.0 updates [PR #96].

1.0.1 (2022-08-11)

  • Additional cleanup needed to finish Fujilupe processing [PR #78].

  • Initial Fuji and Guadalupe VAC documentation [PR #77].

1.0.0 (2022-08-01)

  • Update Docker container and tag all dependencies [PR #76].

  • Numerous backwards-incompatible improvements and changes to the code engine and data model in preparation for processing Fuji (EDR)+Guadalupe [PR #69].

  • Initial set-up of GitHub Actions and unit tests [PR #61].

  • Initial version of the web-application [PR #60].

  • First round of development work in preparation for Fuji [PR #55].

0.3 (2022-01-19)

  • Additional updates needed to complete Everest release [PR #44].

0.2 (2021-09-04)

  • Major update to support Everest data release [PR #40].

0.1 (2021-07-29

  • Fix spectroscopic Dn(4000) calculation bug [PR #35].

  • Add UBV rest-frame photometry [PR #34].

  • Additional template work [PR #24].

  • Initial code to build spectrophotometric templates [PR #20].

  • Additional updates needed to finish fitting all of Denali [PR #18].

  • First set of updates for Denali data release [PR #16].

0.0.2 (2021-04-10)

  • More flexible line-fitting and data model updates to handle the Cascades data release [PR #15].