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
--constraintsfilethroughmpi-fastspecfit. Exclude amplitude-constrained doublet pairs from kinematic relaxation in the final optimization pass and update the default narrow-only final-pass configuration tofree_sigma: false[PR #259].
3.4.2 (2026-06-03)
Introduce YAML-based emission-line constraint system via
data/emline-constraints.yamlto 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_KINECHI2andDELTA_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
desiutillogger with a customgetFastspecLogger()and_DynamicStdoutHandlerthat followsstdouterr_redirectedwithout 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-modesc_dataAttributeErrorby using a module-level pool initializer; fixmpi-fastspecfitalways reporting SUCCESS when workers fail; add output basename anduniqueidto WARNING messages for traceability; report per-object per-core CPU timing infit_alllog; replacecornerdependency with a self-contained_corner_plot()inqa.py; replace dump-all-columns debug print with a curated column subset; suppress repeated zero-coefficient WARNING (was firing once per Monte Carlo realization); fixRuntimeWarningfromlog10(0)in_get_sps_propertiesand photometry absmag/kcorr calculations [PR #254].
3.4.0 (2026-05-21)
Production infrastructure overhaul: hoist
MPPoolcreation out of the per-file loop inmpi-fastspecfit(templates now loaded once per rank rather than once per file); replacejoblib.ParallelwithMPPoolfor--mp-per-filemode; auto-detect per-file vs per-object parallelism when average targets per file is less than--mp; add idempotency guard toSingletons.initialize(); fix--ignore-photometrybug inbuild_cmdargs; addbin/generate-fast-slurmfor balanced Slurm job generation; addetc/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 deadnorm_cdf/norm_pdfcode; 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=Falsecases; 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; addbin/profile-fastspecprofiling harness [PR #251].Add standalone
build_stellar_continuumfunction and update tutorial notebooks to latest code API; adddoc/technote/continuum-modeling.textechnote [PR #232].
3.3.0 (2026-05-18)
Fix
Inoue14.full_IGMreturning all-ones whenlobsis an integer array; fix MW extinction correction not applied toFIBERFLUXandFIBERTOTFLUXin the output metadata table; fixFIBERTOTFLUXwriteback infastspec_oneusing wrong data source [PR #249].Overhaul documentation: replace
sphinx-toolboxwithsphinx-design; remove staleSphinx<8.2pin; expand API docs to includefastspecfit.emline_fitsubpackage; rewriteinstall.rstwith simplified laptop setup,micromambarecommendation, and fleshed-out data dependency descriptions; restructurerunning.rstaround three audience tiers; add newdata.rst(“Working with FastSpecFit Data”) andtutorials.rsttop-level pages [PR #248].Add integration tests for
stackfitandfastqa; fixstackfitincorrectly requiring dust-map and photometry environment variables; fixfastqaincorrectly requiringDESI_SPECTRO_REDUXwhen--redrockfilesis provided; fixfastqaKeyError: 'TARGETID'when running QA on stacked outputs by deriving thefitstackflag from the file header rather than the--stackfitCLI argument [PR #247].Add unit tests for
emline_fit,resolution,linemasker,continuum,emlines, andiomodules; 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)
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
ivar2varfunction 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/darkandmain/brightcatalogs by healpix.
3.1.4 (2025-02-24)
Handle no
ZWARN_NEWin 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)
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
LOGLNUdefinitions (reported by R. Hada).Add
--zminoptional argument tofastspecfit.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)
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)
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
_AMPand move the model-space amplitude to_MODELAMP.Demand at least 12 pixels to measure the scatter in the pixels under the line (therefore
_AMP_IVARshould be more reliable for narrow lines).Major bug fix whereby the model emission-line spectra were not being convolved with the resolution matrix.
Redefine
_CHI2for an emission line as the observed not reduced chi2.Switch from (deprecated)
pkg_resourcestoimportlib.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)
2.1.1 (2023-02-22)
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)
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].