jwspecfit Logo

Getting started

  • Installation
    • From PyPI (recommended)
    • From source (development)
    • Optional extras
    • Requirements
    • Verifying the install
    • Conda
  • Quick start
    • 1. Load a spectrum
    • 2. Fit emission lines
    • 3. MCMC sampling
    • 4. Chemical abundances
    • 5. DLA fitting (optional)
    • Quick interactive view
    • Next steps

jwspecfit

  • jwspecfit — least-squares fitting
    • Loading spectra
      • Quick interactive view
    • Fitting
    • Inspecting results
    • Broad Balmer components
    • UV and absorption lines
    • DLA fitting
      • Standard call
      • Useful options
      • D_Lyα equivalent-width statistic (Heintz+25)
      • Caveats at PRISM resolution
    • Plotting
    • Save / load
    • Why resolution-aware?
  • jwspecfit API
    • jwspecfit
      • BroadFitResult
        • BroadFitResult.best_fit
        • BroadFitResult.selected_model
        • BroadFitResult.bic_narrow
        • BroadFitResult.bic_broad1
        • BroadFitResult.bic_broad2
        • BroadFitResult.bic_both
        • BroadFitResult.all_fits
        • BroadFitResult.bic_bootstrap
        • BroadFitResult.all_fits
        • BroadFitResult.best_fit
        • BroadFitResult.bic_bootstrap
        • BroadFitResult.bic_both
        • BroadFitResult.bic_broad1
        • BroadFitResult.bic_broad2
        • BroadFitResult.bic_hei_bootstrap
        • BroadFitResult.bic_hei_both
        • BroadFitResult.bic_hei_broad1
        • BroadFitResult.bic_hei_broad2
        • BroadFitResult.bic_hei_off
        • BroadFitResult.bic_narrow
        • BroadFitResult.bic_oiii_bootstrap
        • BroadFitResult.bic_oiii_both
        • BroadFitResult.bic_oiii_broad1
        • BroadFitResult.bic_oiii_broad2
        • BroadFitResult.bic_oiii_off
        • BroadFitResult.chi2
        • BroadFitResult.constraints
        • BroadFitResult.continuum
        • BroadFitResult.hei_broad_selected
        • BroadFitResult.hei_selected
        • BroadFitResult.line_names
        • BroadFitResult.lines
        • BroadFitResult.model_flux
        • BroadFitResult.oiii_broad_selected
        • BroadFitResult.oiii_selected
        • BroadFitResult.params
        • BroadFitResult.residuals
        • BroadFitResult.selected_model
        • BroadFitResult.spectrum
        • BroadFitResult.success
      • DLAResult
        • DLAResult.log_NHI
        • DLAResult.log_NHI_err
        • DLAResult.beta_UV
        • DLAResult.beta_UV_err
        • DLAResult.log_F0
        • DLAResult.log_F0_err
        • DLAResult.Sigma_HI
        • DLAResult.samples
        • DLAResult.wave_fit
        • DLAResult.flux_fit
        • DLAResult.flux_err_fit
        • DLAResult.model_best
        • DLAResult.z
        • DLAResult.Av
        • DLAResult.log_evidence
        • DLAResult.Av
        • DLAResult.Sigma_HI
        • DLAResult.beta_UV
        • DLAResult.beta_UV_err
        • DLAResult.corner()
        • DLAResult.fit_x_HI
        • DLAResult.flux_err_fit
        • DLAResult.flux_fit
        • DLAResult.igm_z_min
        • DLAResult.is_upper_limit
        • DLAResult.lam_pivot_A
        • DLAResult.log_F0
        • DLAResult.log_F0_err
        • DLAResult.log_NHI
        • DLAResult.log_NHI_err
        • DLAResult.log_NHI_upper95
        • DLAResult.log_evidence
        • DLAResult.lya_params
        • DLAResult.model_best
        • DLAResult.plot()
        • DLAResult.samples
        • DLAResult.summary()
        • DLAResult.wave_fit
        • DLAResult.x_HI
        • DLAResult.x_HI_err
        • DLAResult.z
      • FitResult
        • FitResult.lines
        • FitResult.params
        • FitResult.model_flux
        • FitResult.continuum
        • FitResult.residuals
        • FitResult.chi2
        • FitResult.spectrum
        • FitResult.line_names
        • FitResult.constraints
        • FitResult.success
        • FitResult.chi2
        • FitResult.constraints
        • FitResult.continuum
        • FitResult.flux_upper_limit()
        • FitResult.flux_upper_limits()
        • FitResult.line_names
        • FitResult.lines
        • FitResult.lya_params
        • FitResult.model_flux
        • FitResult.params
        • FitResult.residuals
        • FitResult.spectrum
        • FitResult.success
      • LineResult
        • LineResult.name
        • LineResult.rest_wave_A
        • LineResult.amplitude
        • LineResult.centroid_A
        • LineResult.sigma_A
        • LineResult.flux
        • LineResult.flux_err
        • LineResult.ew_A
        • LineResult.snr_int_err
        • LineResult.snr_int_cont
        • LineResult.snr_peak_err
        • LineResult.snr_peak_cont
        • LineResult.amplitude
        • LineResult.centroid_A
        • LineResult.ew_A
        • LineResult.flux
        • LineResult.flux_err
        • LineResult.name
        • LineResult.rest_wave_A
        • LineResult.sigma_A
        • LineResult.snr
        • LineResult.snr_int_cont
        • LineResult.snr_int_err
        • LineResult.snr_peak_cont
        • LineResult.snr_peak_err
        • LineResult.upper_limit()
      • Peak
        • Peak.ci68
        • Peak.ci95
        • Peak.dchi2
        • Peak.lines_used
        • Peak.n_lines_used
        • Peak.prob
        • Peak.z
      • R_from_pixels()
      • R_prism()
      • RedshiftResult
        • RedshiftResult.P_z_coarse
        • RedshiftResult.P_z_fine
        • RedshiftResult.chi2_coarse
        • RedshiftResult.chi2_fine
        • RedshiftResult.grating
        • RedshiftResult.is_decisive
        • RedshiftResult.lines_used
        • RedshiftResult.peaks
        • RedshiftResult.plot()
        • RedshiftResult.spec
        • RedshiftResult.z_best
        • RedshiftResult.z_ci68
        • RedshiftResult.z_ci95
        • RedshiftResult.z_grid_coarse
        • RedshiftResult.z_grid_fine
      • Spectrum
        • Spectrum.wave_um
        • Spectrum.flux_ujy
        • Spectrum.err_ujy
        • Spectrum.grating
        • Spectrum.z
        • Spectrum.R
        • Spectrum.meta
        • Spectrum.sci_2d
        • Spectrum.R
        • Spectrum.copy()
        • Spectrum.dlam_A
        • Spectrum.err_flam
        • Spectrum.err_ujy
        • Spectrum.flux_flam
        • Spectrum.flux_ujy
        • Spectrum.grating
        • Spectrum.mask_valid()
        • Spectrum.meta
        • Spectrum.n_pix
        • Spectrum.sci_2d
        • Spectrum.wave_A
        • Spectrum.wave_edges_A
        • Spectrum.wave_um
        • Spectrum.z
      • compute_D_Lya()
      • export_lines_txt()
      • fit_NHI()
      • fit_lines()
      • fit_redshift()
      • fit_with_broad()
      • get_line_list()
      • igm_transmission()
      • load_result()
      • lya_model()
      • observable_lines()
      • plot_2d_1d()
      • plot_fit()
      • plot_fit_interactive()
      • plot_spectrum_interactive()
      • read_dict()
      • read_fits()
      • read_npz()
      • resolve_R()
      • save_result()
      • show_lines()
      • sigma_inst_A()
      • tau_DLA()
      • tau_IGM_DW()
      • jwspecfit.broad
        • BroadFitResult
        • fit_with_broad()
      • jwspecfit.constraints
        • ConstraintSet
      • jwspecfit.continuum
        • fit_continuum()
      • jwspecfit.data
      • jwspecfit.dla
        • DLAResult
        • compute_D_Lya()
        • fit_NHI()
        • tau_DLA()
        • tau_IGM_DW()
        • voigt_H()
      • jwspecfit.fitter
        • FitResult
        • LineResult
        • fit_lines()
      • jwspecfit.io
        • Spectrum
        • export_lines_txt()
        • load_result()
        • read_dict()
        • read_fits()
        • read_npz()
        • save_result()
      • jwspecfit.lines
        • get_line_list()
        • observable_lines()
        • observed_wave_A()
        • observed_wave_um()
        • rest_wave_A()
        • show_lines()
      • jwspecfit.lyman_alpha
        • igm_transmission()
        • lya_model()
        • skewed_gaussian_binned()
      • jwspecfit.models
        • asymmetric_gaussian()
        • build_model()
        • gaussian_binned()
        • pixel_weight()
        • skewed_gaussian_binned()
      • jwspecfit.plotting
        • plot_2d_1d()
        • plot_fit()
        • plot_fit_interactive()
        • plot_spectrum_interactive()
      • jwspecfit.redshift
        • Peak
        • RedshiftResult
        • fit_redshift()
      • jwspecfit.resolution
        • R_from_pixels()
        • R_grating()
        • R_prism()
        • resolve_R()
        • sigma_inst_A()
        • sigma_inst_kms()

jwspecmcmc

  • jwspecmcmc — Bayesian MCMC fitting
    • Default sampler: NUTS
    • Alternative samplers
    • Results
    • Custom priors
    • Convergence
    • Plotting
    • HDF5 persistence
    • Broad Balmer + MCMC
    • Full parameter reference
      • Core
      • Instrument & line selection
      • Continuum
      • Initialisation
      • NUTS controls (sampler="nuts")
      • emcee controls (sampler="emcee")
      • nautilus controls (sampler="nautilus")
      • Broad-component selection (BIC; opt-in)
      • Kinematic ties & doublets
      • Line-bound overrides
      • Priors & misc
  • jwspecmcmc API
    • jwspecmcmc
      • GaussianPrior
        • GaussianPrior.hi
        • GaussianPrior.lo
        • GaussianPrior.log_prob()
        • GaussianPrior.mean
        • GaussianPrior.sample()
        • GaussianPrior.std
      • LogUniformPrior
        • LogUniformPrior.hi
        • LogUniformPrior.lo
        • LogUniformPrior.log_prob()
        • LogUniformPrior.sample()
      • MCMCBroadFitResult
        • MCMCBroadFitResult.bic_both
        • MCMCBroadFitResult.bic_broad1
        • MCMCBroadFitResult.bic_broad2
        • MCMCBroadFitResult.bic_hei_both
        • MCMCBroadFitResult.bic_hei_broad1
        • MCMCBroadFitResult.bic_hei_broad2
        • MCMCBroadFitResult.bic_hei_off
        • MCMCBroadFitResult.bic_narrow
        • MCMCBroadFitResult.bic_oiii_both
        • MCMCBroadFitResult.bic_oiii_broad1
        • MCMCBroadFitResult.bic_oiii_broad2
        • MCMCBroadFitResult.bic_oiii_off
        • MCMCBroadFitResult.chains
        • MCMCBroadFitResult.constraints
        • MCMCBroadFitResult.continuum
        • MCMCBroadFitResult.convergence
        • MCMCBroadFitResult.doublet_flux_posterior()
        • MCMCBroadFitResult.doublet_snr()
        • MCMCBroadFitResult.flat_chains
        • MCMCBroadFitResult.flat_chains_free
        • MCMCBroadFitResult.flat_log_prob
        • MCMCBroadFitResult.flux_ratio_posterior()
        • MCMCBroadFitResult.flux_upper_limit()
        • MCMCBroadFitResult.flux_upper_limits()
        • MCMCBroadFitResult.hei_broad_selected
        • MCMCBroadFitResult.hei_selected
        • MCMCBroadFitResult.line_names
        • MCMCBroadFitResult.lines
        • MCMCBroadFitResult.mcmc_result
        • MCMCBroadFitResult.model_flux
        • MCMCBroadFitResult.oiii_broad_selected
        • MCMCBroadFitResult.oiii_selected
        • MCMCBroadFitResult.params
        • MCMCBroadFitResult.sampler_meta
        • MCMCBroadFitResult.sampler_name
        • MCMCBroadFitResult.selected_model
        • MCMCBroadFitResult.spectrum
        • MCMCBroadFitResult.to_fit_result()
      • MCMCLineResult
        • MCMCLineResult.amplitude
        • MCMCLineResult.amplitude_err
        • MCMCLineResult.centroid_A
        • MCMCLineResult.centroid_err
        • MCMCLineResult.ew_A
        • MCMCLineResult.flux
        • MCMCLineResult.flux_err
        • MCMCLineResult.flux_posterior
        • MCMCLineResult.name
        • MCMCLineResult.rest_wave_A
        • MCMCLineResult.sigma_A
        • MCMCLineResult.sigma_err
        • MCMCLineResult.snr
      • MCMCResult
        • MCMCResult.chains
        • MCMCResult.constraints
        • MCMCResult.continuum
        • MCMCResult.convergence
        • MCMCResult.doublet_flux_posterior()
        • MCMCResult.doublet_snr()
        • MCMCResult.flat_chains
        • MCMCResult.flat_chains_free
        • MCMCResult.flat_log_prob
        • MCMCResult.flux_ratio_posterior()
        • MCMCResult.flux_upper_limit()
        • MCMCResult.flux_upper_limits()
        • MCMCResult.line_names
        • MCMCResult.lines
        • MCMCResult.lya_params
        • MCMCResult.model_flux
        • MCMCResult.params
        • MCMCResult.sampler_meta
        • MCMCResult.sampler_name
        • MCMCResult.spectrum
        • MCMCResult.to_fit_result()
      • PriorSet
        • PriorSet.log_prior()
        • PriorSet.n_dim
        • PriorSet.priors
        • PriorSet.sample()
      • UniformPrior
        • UniformPrior.hi
        • UniformPrior.lo
        • UniformPrior.log_prob()
        • UniformPrior.sample()
      • fit_lines()
      • fit_with_broad()
      • load_mcmc_result()
      • plot_corner()
      • plot_flux_posterior()
      • plot_traces()
      • priors_from_bounds()
      • save_mcmc_result()
      • jwspecmcmc.diagnostics
        • effective_sample_size()
        • gelman_rubin()
        • summarise_convergence()
      • jwspecmcmc.io
        • load_mcmc_result()
        • save_mcmc_result()
      • jwspecmcmc.jax_likelihood
        • make_jax_log_likelihood()
      • jwspecmcmc.likelihood
        • LikelihoodSpec
        • log_likelihood()
        • log_probability()
      • jwspecmcmc.plotting
        • plot_corner()
        • plot_flux_posterior()
        • plot_traces()
      • jwspecmcmc.priors
        • GaussianPrior
        • LogUniformPrior
        • Prior
        • PriorSet
        • UniformPrior
        • priors_from_bounds()
      • jwspecmcmc.result
        • MCMCBroadFitResult
        • MCMCLineResult
        • MCMCResult
      • jwspecmcmc.samplers
        • run_emcee()
        • run_nautilus()
        • run_nuts()

jwspecabund

  • jwspecabund — chemical abundances
    • Basic usage
    • Pipeline
      • 1 — Dust correction
      • 2 — Electron density
      • 3 — Method selection
      • 4 — Ionic and total abundances
      • 5 — T_e-T_e relation
    • Result fields
    • Lyα escape fraction
  • jwspecabund API
    • jwspecabund
      • AbundanceResult
        • AbundanceResult.ArO
        • AbundanceResult.ArO_err
        • AbundanceResult.Av
        • AbundanceResult.Av_err
        • AbundanceResult.Av_posterior
        • AbundanceResult.CO
        • AbundanceResult.CO_err
        • AbundanceResult.CO_posterior
        • AbundanceResult.NO
        • AbundanceResult.NO_err
        • AbundanceResult.NO_icf_name
        • AbundanceResult.NO_posterior
        • AbundanceResult.NO_tiers
        • AbundanceResult.NeO
        • AbundanceResult.NeO_err
        • AbundanceResult.OH
        • AbundanceResult.OH_err
        • AbundanceResult.OH_posterior
        • AbundanceResult.SO
        • AbundanceResult.SO_err
        • AbundanceResult.Te_high
        • AbundanceResult.Te_high_err
        • AbundanceResult.Te_low
        • AbundanceResult.Te_low_err
        • AbundanceResult.alt_results
        • AbundanceResult.chi2
        • AbundanceResult.diagnostics
        • AbundanceResult.excluded_lines
        • AbundanceResult.failures
        • AbundanceResult.icf_method
        • AbundanceResult.icf_values
        • AbundanceResult.ionic
        • AbundanceResult.ionic_ul_details
        • AbundanceResult.ionic_upper_limits
        • AbundanceResult.logU
        • AbundanceResult.logU_err
        • AbundanceResult.lya_f_esc
        • AbundanceResult.lya_f_esc_details
        • AbundanceResult.lya_f_esc_err
        • AbundanceResult.lya_f_esc_posterior
        • AbundanceResult.method
        • AbundanceResult.ne
        • AbundanceResult.ne_high
        • AbundanceResult.ne_low
        • AbundanceResult.ne_mid
        • AbundanceResult.ratios_used
        • AbundanceResult.summary()
      • Te_low_from_high()
      • cardelli_extinction()
      • compute_Av_balmer_pair()
      • compute_Av_from_balmer()
      • compute_Av_multi_balmer()
      • compute_NO_martinez25()
      • compute_Te_NII()
      • compute_Te_OIII()
      • compute_Te_OIII_1666()
      • compute_abundances()
      • compute_ionic_abundances()
      • compute_line_ratios()
      • compute_lya_escape_fraction()
      • compute_lya_escape_fraction_mc()
      • compute_ne()
      • compute_ne_CIII()
      • compute_ne_NIV()
      • compute_total_abundances()
      • dust_correct_fluxes()
      • forward_model()
      • hbeta_emissivity_aller84()
      • icf_argon()
      • icf_neon()
      • icf_nitrogen()
      • icf_sulfur()
      • log_U_from_N43()
      • log_U_from_O32()
      • salim_attenuation()
      • sanders25_metallicity()
      • jwspecabund.direct
        • Te_low_from_high()
        • ciii_ratio_at_density()
        • compute_Te_NII()
        • compute_Te_OIII()
        • compute_Te_OIII_1666()
        • compute_ionic_abundances()
        • compute_ne()
        • compute_ne_CIII()
        • compute_ne_NIV()
        • compute_total_abundances()
        • niv_ratio_at_density()
      • jwspecabund.dust
        • cardelli_extinction()
        • compute_Av_balmer_pair()
        • compute_Av_from_balmer()
        • compute_Av_multi_balmer()
        • compute_lya_escape_fraction()
        • compute_lya_escape_fraction_mc()
        • dust_correct_fluxes()
        • salim_attenuation()
      • jwspecabund.forward
        • forward_model()
        • hbeta_emissivity_aller84()
      • jwspecabund.icf
        • icf_argon()
        • icf_carbon()
        • icf_neon()
        • icf_nitrogen()
        • icf_sulfur()
      • jwspecabund.martinez25_icf
        • compute_NO_martinez25()
        • compute_NO_martinez25_locked()
        • icf_NpNpp_OpOpp()
        • icf_NpOp()
        • icf_NppNppp_Opp()
        • icf_NppOpp()
        • icf_NpppOpp()
        • log_U_from_N43()
        • log_U_from_O32()
      • jwspecabund.result
        • AbundanceResult
      • jwspecabund.strong_line
        • compute_line_ratios()
        • sanders25_metallicity()

Visualisation

  • Plotting & visualisation
    • At a glance
    • Static fit figures — plot_fit
    • Static 2-D + 1-D — plot_2d_1d
    • Interactive spectra — plot_spectrum_interactive
    • Interactive fits — plot_fit_interactive
    • Marking emission lines
    • MCMC diagnostics
      • Corner plots — plot_corner
      • Trace plots — plot_traces
      • Flux posteriors — plot_flux_posterior
    • Result-object convenience plots
      • Redshift scan — RedshiftResult.plot()
      • DLA fit — DLAResult.plot()
    • Choosing a backend

Methodology

  • Chemical Abundance Methodology
    • Table of Contents
    • 1. Overview
    • 2. Dust Correction
      • 2.1 Attenuation from the Balmer decrement
      • 2.2 Extinction / attenuation laws
      • 2.3 Multi-Balmer A_V
      • 2.4 Dust correction of line fluxes
      • 2.5 Error propagation
    • 3. Electron Temperature
      • 3.1 Primary diagnostic: [OIII] auroral-to-nebular ratio
      • 3.2 UV fallback diagnostic: O III] 1666 / ([OIII] 5007 + 4959)
      • 3.3 Secondary diagnostic: [NII] auroral-to-nebular ratio
      • 3.4 T_e–T_e relations for zone temperatures
    • 4. Electron Density
      • 4.1 Density-sensitive doublets
      • 4.2 Multi-phase density assignments (Berg et al. 2025, Section 4.1)
      • 4.3 Iterative T_e–n_e refinement
    • 5. Oxygen Abundance — 12 + log(O/H)
      • 5.1 Ionic abundance formula
      • 5.2 Hbeta emissivity
      • 5.3 O2+/H+ from [OIII] 5007
      • 5.4 O+/H+ from [OII] 3726+3729
      • 5.5 Total oxygen abundance
    • 6. Nitrogen-to-Oxygen Ratio — log(N/O)
      • 6.1 N+ from [NII] 6585
      • 6.2 N2+ from NIII] 1749+1752
      • 6.3 N3+ from NIV] 1483+1486
      • 6.4 N4+ from NV 1239+1243
      • 6.5 Direct-sum N/O (Berg et al. 2025, Eq. 5)
      • 6.6 ICF-corrected N/O
    • 7. Carbon-to-Oxygen Ratio — log(C/O)
      • 7.1 C2+ from CIII] 1907+1909
      • 7.2 C3+ from CIV 1548+1551
      • 7.3 C+ from CII] 2326
      • 7.4 Total C/O
    • 8. Ionisation Correction Factors
      • 8.1 Izotov et al. (2006) — classical optical ICFs
      • 8.2 Martinez et al. (2025) — density-dependent ICFs
        • Ionisation parameter diagnostics
        • Five N/O ICFs (Table 4)
        • Selection priority
        • Inputs outside the calibration bounds
    • 9. Strong-Line Calibrations
      • 9.1 Diagnostic ratios
      • 9.2 Simultaneous fit
      • 9.3 Monte Carlo uncertainty
    • 10. Bayesian Forward Model
    • 11. Uncertainty Propagation
      • 11.1 Monte Carlo approach (direct T_e method)
      • 11.2 MCMC posterior propagation
      • 11.3 Out-of-bounds resampling and the O/H–N/O decoupling
      • 11.4 Pre-computed emissivity grids
    • 12. Upper Limits for Non-Detected Ions
      • 12.1 Continuum-RMS flux upper limits
      • 12.2 Dust correction of upper limits
      • 12.3 Doublet upper limits
      • 12.4 Ionic abundance upper limits
      • 12.5 Abundance ratio upper limits
      • 12.6 Fallback to fit errors
    • 13. References
    • Appendix: Zone Assignment Summary
  • jwspecabund — Code Workflow and Logic
    • Package Structure
    • 1. Entry Point: compute_abundances()
      • High-level flow
    • 2. Flux Extraction
      • _extract_fluxes(result) -> (fluxes, errors, is_mcmc)
      • _extract_posteriors(result) -> {name: flux_posterior_array}
    • 3. Dust Correction
    • 4. SNR Gating: _filter_low_snr()
    • 5. Method Selection
    • 6. Direct Te Method: _run_direct() / _run_direct_mcmc()
      • Step 1 — Multi-phase electron density
      • Step 1b — Density overrides
      • Step 2 — Electron temperature
      • Step 3 — Ionic abundances
      • Step 4 — O/H and Z/Zsun
      • Step 5 — Ionisation parameter
      • Step 6 — Total abundances with ICFs
        • icf_method="direct_sum"
        • icf_method="martinez25" (or "auto" with logU available)
        • icf_method="izotov06"
        • Other elements (always computed)
      • Upper Limits for Non-Detected Ions
      • MC Error Propagation
    • 7. Forward Model: forward_model()
    • 8. Strong-Line Method: sanders25_metallicity()
    • 9. Key SNR Parameters
    • 10. Complete Function Call Graph
    • 11. AbundanceResult Fields
    • 12. N/O ICF Label Reference
  • References and methodology
    • Software dependencies
    • 1. Emission-line fitting (jwspecfit)
      • 1.1 Line profiles
      • 1.2 Spectral resolution
      • 1.3 Continuum subtraction
      • 1.4 Optimisation
      • 1.5 Parameter constraints
      • 1.6 Broad Balmer component detection
      • 1.7 Bootstrap uncertainties
      • 1.8 Lyman-alpha modelling
      • 1.9 Line database
    • 2. MCMC fitting (jwspecmcmc)
      • 2.1 Likelihood
      • 2.2 Priors
      • 2.3 Samplers
      • 2.4 Convergence diagnostics
      • 2.5 Posterior summaries
    • 3. Chemical abundances (jwspecabund)
      • 3.1 Overview of methods
      • 3.2 Dust correction
        • 3.2.1 AV from the Balmer decrement
        • 3.2.2 Salim+18 / Noll+09 attenuation (default)
        • 3.2.3 Cardelli+89 extinction
        • 3.2.4 Flux correction
      • 3.3 Direct Te method
        • 3.3.1 Two-zone ionisation model
        • 3.3.2 Electron temperature: Te([OIII])
        • 3.3.3 Electron temperature: Te([NII])
        • 3.3.4 Te–Te relations
        • 3.3.5 Electron density
        • 3.3.6 Ionic abundances
        • 3.3.7 Atomic data
        • 3.3.8 Total abundances and ICFs
        • 3.3.9 Uncertainty propagation
      • 3.4 Strong-line calibrations (Sanders+25)
        • 3.4.1 Diagnostic ratios
        • 3.4.2 Calibration polynomials
        • 3.4.3 Simultaneous chi-squared fit
        • 3.4.4 Three scatter components
        • 3.4.5 Uncertainty propagation
      • 3.5 Bayesian forward model (Cullen+25 approach)
        • 3.5.1 Free parameters and priors
        • 3.5.2 Model prediction
        • 3.5.3 Hβ emissivity
        • 3.5.4 Likelihood
        • 3.5.5 Sampling
        • 3.5.6 Total abundances from posteriors
        • 3.5.7 Current limitations and differences from Cullen+25
      • 3.6 Broad Balmer component handling
    • 4. Full bibliography
      • Atomic physics and emissivities
      • Dust attenuation and extinction
      • Electron temperature and Te–Te relations
      • Electron density
      • Ionic abundances and ICFs
      • Strong-line calibrations
      • Forward modelling
      • MCMC and sampling
      • IGM and Lyman-alpha
      • Line database
      • General

Project

  • Citation
    • Plain text
    • BibTeX
    • Other formats
    • Pinning a specific version
    • Citing the methods
  • Changelog
    • Unreleased
      • Line database additions
      • Behaviour changes
      • New
    • 1.1.3 — 2026-06-01
      • Behaviour changes
      • Documentation
      • Fixes
    • 1.1.2 — 2026-05-29
      • Behaviour changes
    • 1.1.0 — 2026-05-20
      • New public API
      • Behaviour changes
      • Line database additions
      • jwspecabund additions
      • Fixes
      • Docs / branding
    • 1.0.2 — 2026-05-14
    • 1.0.1 — 2026-04-21
    • 1.0.0 — initial public development release
jwspecfit
  • Search


© Copyright 2026, Raunaq Rai.

Built with Sphinx using a theme provided by Read the Docs.