Changelog
This project does not yet follow a formal release schedule. Key additions are listed below in reverse chronological order. Commit history on GitHub is the authoritative source.
Unreleased
Line database additions
Seven UV interstellar absorption lines added to
REST_LINES_A(vacuum, Morton 2003): the O I λ1302 + Si II λ1304 blend (abs_OISiII1303, single feature), Si II λ1526 (abs_SiII1526), Fe II λ1608 (abs_FeII1608), the Al III λλ1854,1862 doublet (abs_AlIII1854,abs_AlIII1862), and the C IV λλ1548,1550 doublet (abs_CIV1548,abs_CIV1550). All but the C IV pair are included in the default prism and grating line lists.abs_CIV1548/1550are in the database but not the default lists, because they coincide exactly with theCIV_1/CIV_2emission components — fit them explicitly vialines=[...]when C IV is in absorption / P-Cygni.
Behaviour changes
Multi-Balmer A_V now uses only lines bluer than the anchor.
balmer_anchor="HBETA"(default) uses Hγ/Hβ, Hδ/Hβ, H9/Hβ, H10/Hβ and excludes Hα/Hβ;balmer_anchor="Ha"uses every other Balmer line (all are bluer than Hα). Previously the Hβ anchor also included Hα/Hβ. Anchor on Hα to include Hα; on Hβ to use only the bluer Balmer series.
New
balmer_pairoption incompute_abundances(and the publiccompute_Av_balmer_pair). Forces the A_V derivation onto a single Balmer decrement, e.g.balmer_pair=("Ha", "HBETA")for Hα/Hβ only, instead of the multi-line fit — useful to avoid low-SNR Balmer lines. Overridesbalmer_anchor/snr_balmerfor the A_V step; ignored whenAvis supplied directly.
1.1.3 — 2026-06-01
Behaviour changes
O²⁺ and Ne²⁺ are decoupled from the N IV] density.
T_e([O III])and the O²⁺/H⁺ and Ne²⁺/H⁺ abundances are now evaluated at the intermediate-ionisation density (C III] λ1907/1909, with a low-zone fallback) instead of the high-ionisation N IV] density. The [O III] 5007/Hβ and [Ne III] 3869/Hβ abundances are density-insensitive below ~10⁴–10⁵ cm⁻³, and C III] (24–48 eV) overlaps the O²⁺ zone (35–55 eV), whereas N IV] (47–77 eV) traces more highly-ionised gas and can spuriously spike — draggingT_edown and inflating O/H. N³⁺ and C³⁺ keep the high-ionisation density, so the Martinez+25 ICF 5 ((N²⁺+N³⁺)/O²⁺) still uses the correct density for each nitrogen ion.log(U) from O32 / N43 now takes an electron-density input. The Martinez+25 O32 and N43 log(U) diagnostics are evaluated at the measured density rather than a fixed default.
Documentation
New Plotting & visualisation section consolidating all static (matplotlib) and interactive (plotly) plotting helpers across the suite, with a backend-choice guide and line-marker reference.
Fixes
DLAResult.plot()no longer emits atight_layoutwarning on the two-panel (data + residual) figure (now uses constrained layout).
1.1.2 — 2026-05-29
Behaviour changes
Martinez+2025 ICF/log(U) bounds are now enforced by rejection, not extrapolation. Inputs outside the calibration domain (
log(O32),log(N43),Z/Z_sun, or the resultinglog(U)) are set toNaNinstead of being extrapolated or clipped to the boundary, so uncalibrated values no longer enter the reported N/O.Direct-
T_eMC and MCMC loops resample to the requested count. The loop keeps drawing untiln_mc/n_posteriorin-bounds N/O draws are collected (capped at 20× attempts; aWARNINGis logged and N/O is left under-sampled if an object is centred outside the bounds).O/H is decoupled from the N/O bounds. Only N/O is gated on the Martinez calibration; O/H,
T_e, and the C/O, S/O, Ne/O, Ar/O ratios (which do not use the Martinez ICF) are recorded for every drawn sample. As a result the O/H posterior generally holds more finite draws than the N/O posterior — the two arrays are independent and need not share a length. Seeabundance_methodology§8.2 and §11.3.
1.1.0 — 2026-05-20
New public API
jwspecfit.fit_redshift— strong-line redshift fitter spanning z = 0–20, with auto-detected spectral resolution (spec.R→grating→ pixel-spacing fallback).jwspecfit.show_lines()— discovery helper for the line database;plot_spectrum_interactiveandplot_2d_1dacceptadd_lines=[…]for ad-hoc marker additions.jwspecfit.plot_2d_1d— matplotlib panel showing the 2D SCI image and 1D extraction for a single FITS file, auto-scaled to the brightest emission line in view.jwspecmcmc.fit_with_broad+jwspecfit.fit_hei_broad— two-tier BIC selection for HeI broad components (analogous to the Balmer pipeline).
Behaviour changes
Broad-component control moved from
mode="…"to dedicated boolean kwargsfit_balmer_broad=andfit_oiii_broad=; both default toFalse. Two-tier BIC selects between off / single broad / double broad / both, with kinematics tied across [O III] doublet components.fit_redshiftexcludes [N II] and [S II] from the default line list (avoids false matches in low-metallicity high-z spectra).Resolution-aware centroid bounds: σ-instrument-scaled limits on narrow-line centroid drift to prevent collapse into a neighbouring line.
plot_spectrum_interactiveoverhaul — emission-line markers, staggered labels, step error band, multi-spectrum legend, customadd_lines=[…], configurable y-range.
Line database additions
He II 4200 (Pickering 11→4, vacuum 4201.013 Å)
He I: 4027, 4145, 6680, 7065 (vacuum-converted from NIST air values)
[O I] 6302
[Ar III] 7138
jwspecabund additions
balmer_anchoroption oncompute_abundancesandcompute_Av_multi_balmer— A_V can be derived with Hα as the anchor (using Hβ/Hα, Hγ/Hα, Hδ/Hα, H9/Hα, H10/Hα) instead of the default Hβ anchor.ciii_doublet_ratioto fix the C III] ratio from a user-supplied density.niv_doublet_ratioto fix the N IV] ratio from the C III] density.Cardelli extinction curve extended to the far-UV; DLA fitter overhaul.
snr_balmerparameter for the Balmer-line SNR floor used in A_V derivation.
Fixes
Centroid-bounds collapse for [O III] broad components in the MCMC engine (mirrored from the LS fitter).
HEI_7067 marker label corrected to air-convention “HeI 7065” (vacuum wavelength 7067.138 Å unchanged).
Hard IGM cutoff blueward of Lyα (Gunn–Peterson trough), smoothed by the LSF convolution.
Docs / branding
Adopted a hex + Gaussian logo; wired into RTD sidebar (
html_logo), browser favicon (html_favicon), and README header. SVG source + PNG fallbacks (16/32/64/128/256 px) underdocs/_static/logos/.New notebook walkthrough for
jwspecfit.fit_redshift.
1.0.2 — 2026-05-14
Maintenance release; see commit history for details.
1.0.1 — 2026-04-21
Patch release to retry Zenodo DOI minting. The v1.0.0 deposit failed
validation because CITATION.cff contained a placeholder ORCID; the
ORCID field has been removed and the citation metadata cleaned up. No
functional code changes.
1.0.0 — initial public development release
jwspecfit— resolution-aware least-squares fitting with bootstrap uncertainties and BIC broad-Balmer selection.jwspecmcmc— NUTS / emcee / nautilus MCMC fitting.jwspecabund— direct-T_e, forward-model, and strong-line abundance pathways.