lines - Emission/absorption line adjustment

GaussianNormed1D(flux, mean, stddev, **kwargs) Flux-normalized 1D-Gaussian.
ComplexHa(wHa, iHa, iNII, sigma, **kwargs) [NII] + Hα complex fittable model.
DoubletOIII(wOIII, iOIII, sigma, **kwargs) [OIII] doublet fittable model.
class inspec.lines.GaussianNormed1D(flux, mean, stddev, **kwargs)[source]

Flux-normalized 1D-Gaussian.

\[G_N(\lambda; f, \mu, \sigma) = \frac{f}{\sigma\sqrt{2\pi}} \exp\left(-\frac{(\lambda - \mu)^2}{2\sigma^2}\right)\]
flux = Parameter('flux', value=nan)

Gaussian integrated flux

mean = Parameter('mean', value=nan)

Gaussian mean

stddev = Parameter('stddev', value=nan)

Gaussian stddev

static evaluate(x, flux, mean, stddev)[source]

Evaluate the model on some input variables.

static fit_deriv(x, flux, mean, stddev)[source]
param_names = ('flux', 'mean', 'stddev')
class inspec.lines.ComplexHa(wHa, iHa, iNII, sigma, **kwargs)[source]

[NII] + Hα complex fittable model.

The [NII] + Hα complex is modeled as a tied sum of three astropy.modeling.models.Gaussian1D:

\[\begin{split}P(\lambda) &= I_{H\alpha} \times G(\lambda; \lambda_{H\alpha}, \sigma) \\ & \quad + 3/4\, I_{NII} \times G(\lambda; \lambda_{NIIa}, \sigma) \\ & \quad + 1/4\, I_{NII} \times G(\lambda; \lambda_{NIIb}, \sigma) \\ G(\lambda; \mu, \sigma) &= \exp\left(-\frac{(\lambda - \mu)^2}{2\sigma^2}\right)\end{split}\]

where the 4 adjustable parameters are:

  • \(\lambda_{H\alpha}\) = wHa: Hα wavelength [Å]
  • \(I_{H\alpha}\) = iHa: Hα amplitude
  • \(I_{NII}\) = iNII: [NII] amplitude
  • \(\sigma\) = sigma: line width [Å]

and where [NII] doublet wavelengths \(\lambda_{NIIa}\) and \(\lambda_{NIIa}\) are tied to the Hα wavelength \(\lambda_{H\alpha}\).

Warning

the amplitudes iHa and iNII are not the line fluxes, since the standard astropy.modeling.models.Gaussian1D is not flux-normalized. Still, the amplitude ratio holds since the stddev is common to all lines.

Halpha = 6564.614

Hα reference wavelength [Å]

NIIa = 6585.27

NIIa reference wavelength [Å]

NIIb = 6549.86

NIIb reference wavelength [Å]

rNIIa = 1.0031465673381559
rNIIb = 0.997752495424712
fNIIa = 0.75

Intensity ratio wrt NII amplitude

fNIIb = 0.25

Intensity ratio wrt NII amplitude

wHa = Parameter('wHa', value=nan)

Hα wavelength [Å]

iHa = Parameter('iHa', value=nan)

Hα amplitude

iNII = Parameter('iNII', value=nan)

[NII] amplitude

sigma = Parameter('sigma', value=nan)

Line width [Å]

static Ha_line(x, wHa, iHa, iNII, sigma)[source]

Hα line modeled as a single astropy.modeling.models.Gaussian1D.

static NII_lines(x, wHa, iHa, iNII, sigma)[source]

[NII] doublet modeled as a tied sum of two astropy.modeling.models.Gaussian1D.

static evaluate(x, wHa, iHa, iNII, sigma)[source]

Functional form of [NII]+Hα complex.

static fit_deriv(x, wHa, iHa, iNII, sigma)[source]

Derivatives of [NII]+Hα complex.

param_names = ('wHa', 'iHa', 'iNII', 'sigma')
class inspec.lines.DoubletOIII(wOIII, iOIII, sigma, **kwargs)[source]

[OIII] doublet fittable model.

The [OIII] doublet is modeled as a tied sum of two astropy.modeling.models.Gaussian1D:

\[\begin{split}P(\lambda) &= 3/4\, I_{OIII} \times G(\lambda; \lambda_{OIII}, \sigma) \\ & \quad + 1/4\, I_{OIII} \times G(\lambda; \lambda_{OIIIb}, \sigma) \\ G(\lambda; \mu, \sigma) &= \exp\left(-\frac{(\lambda - \mu)^2}{2\sigma^2}\right)\end{split}\]

where the 3 adjustable parameters are:

  • \(\lambda_{OIII}\) = wOIII: OIIIa wavelength [Å]
  • \(I_{OIII}\) = iOIII: [OIII] doublet amplitude
  • \(\sigma\) = sigma: line width [Å]

and where \(\lambda_{OIIIb}\) wavelength is tied to the OIIIa wavelength \(\lambda_{OIII}\).

Warning

the amplitude iOIII is not the integrated line flux, since the standard astropy.modeling.models.Gaussian1D is not flux-normalized. Still, the amplitude ratio holds since the stddev is common to all lines.

OIII = 5008.24

[OIIIa] reference wavelength [Å]

OIIIb = 4960.295

[OIIIb] reference wavelength [Å]

rOIIIb = 0.9904267766720445
fOIII = 0.75

Intensity ratio wrt OIII amplitude

fOIIIb = 0.25

Intensity ratio wrt OIII amplitude

wOIII = Parameter('wOIII', value=nan)

OIIIa wavelength [Å]

iOIII = Parameter('iOIII', value=nan)

[OIII] amplitude

sigma = Parameter('sigma', value=nan)

Line width [Å]

static evaluate(x, wOIII, iOIII, sigma)[source]

Functional form of [OIII] doublet.

static fit_deriv(x, wOIII, iOIII, sigma)[source]

Derivatives of [OIII] doublet.

param_names = ('wOIII', 'iOIII', 'sigma')
class inspec.lines.FitterWithPrior(model, priors=None)[source]

LevMarLSQFitter with additional bayesian priors on parameters.

priors = None

List of prior functions (or None)

objective_function(fps, *args)[source]

Standard objective function, with additional bayesian prior terms.

set_priors(priors)[source]

Set priors {param_name: prior_fn}.

get_hterms(param_names=[])[source]

Compute prior hypter-terms.