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.
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.