P92

class dust_extinction.shapes.P92[source]

Bases: BaseExtModel, Fittable1DModel

Pei (1992) 24 parameter shape model

Parameters:
  • BKG_amp (float) – background term amplitude

  • BKG_lambda (float) – background term central wavelength

  • BKG_b (float) – background term b coefficient

  • BKG_n (float) – background term n coefficient [FIXED at n = 2]

  • FUV_amp (float) – far-ultraviolet term amplitude

  • FUV_lambda (float) – far-ultraviolet term central wavelength

  • FUV_b (float) – far-ultraviolet term b coefficent

  • FUV_n (float) – far-ultraviolet term n coefficient

  • NUV_amp (float) – near-ultraviolet (2175 A) term amplitude

  • NUV_lambda (float) – near-ultraviolet (2175 A) term central wavelength

  • NUV_b (float) – near-ultraviolet (2175 A) term b coefficent

  • NUV_n (float) – near-ultraviolet (2175 A) term n coefficient [FIXED at n = 2]

  • SIL1_amp (float) – 1st silicate feature (~10 micron) term amplitude

  • SIL1_lambda (float) – 1st silicate feature (~10 micron) term central wavelength

  • SIL1_b (float) – 1st silicate feature (~10 micron) term b coefficent

  • SIL1_n (float) – 1st silicate feature (~10 micron) term n coefficient [FIXED at n = 2]

  • SIL2_amp (float) – 2nd silicate feature (~18 micron) term amplitude

  • SIL2_lambda (float) – 2nd silicate feature (~18 micron) term central wavelength

  • SIL2_b (float) – 2nd silicate feature (~18 micron) term b coefficient

  • SIL2_n (float) – 2nd silicate feature (~18 micron) term n coefficient [FIXED at n = 2]

  • FIR_amp (float) – far-infrared term amplitude

  • FIR_lambda (float) – far-infrared term central wavelength

  • FIR_b (float) – far-infrared term b coefficent

  • FIR_n (float) – far-infrared term n coefficient [FIXED at n = 2]

Notes

From Pei (1992, ApJ, 395, 130)

Applicable from the extreme UV to far-IR

Example showing a P92 curve with components identified.

import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u

from dust_extinction.shapes import P92

fig, ax = plt.subplots()

# generate the curves and plot them
lam = np.logspace(-3.0, 3.0, num=1000)
x = (1.0/lam)/u.micron

ext_model = P92()
ax.plot(1/x,ext_model(x),label='total')

ext_model = P92(FUV_amp=0., NUV_amp=0.0,
                SIL1_amp=0.0, SIL2_amp=0.0, FIR_amp=0.0)
ax.plot(1./x,ext_model(x),label='BKG only')

ext_model = P92(NUV_amp=0.0,
                SIL1_amp=0.0, SIL2_amp=0.0, FIR_amp=0.0)
ax.plot(1./x,ext_model(x),label='BKG+FUV only')

ext_model = P92(FUV_amp=0.,
                SIL1_amp=0.0, SIL2_amp=0.0, FIR_amp=0.0)
ax.plot(1./x,ext_model(x),label='BKG+NUV only')

ext_model = P92(FUV_amp=0., NUV_amp=0.0,
                SIL2_amp=0.0)
ax.plot(1./x,ext_model(x),label='BKG+FIR+SIL1 only')

ext_model = P92(FUV_amp=0., NUV_amp=0.0,
                SIL1_amp=0.0)
ax.plot(1./x,ext_model(x),label='BKG+FIR+SIL2 only')

ext_model = P92(FUV_amp=0., NUV_amp=0.0,
                SIL1_amp=0.0, SIL2_amp=0.0)
ax.plot(1./x,ext_model(x),label='BKG+FIR only')

# Milky Way observed extinction as tabulated by Pei (1992)
MW_x = [0.21, 0.29, 0.45, 0.61, 0.80, 1.11, 1.43, 1.82,
        2.27, 2.50, 2.91, 3.65, 4.00, 4.17, 4.35, 4.57, 4.76,
        5.00, 5.26, 5.56, 5.88, 6.25, 6.71, 7.18, 7.60,
        8.00, 8.50, 9.00, 9.50, 10.00]
MW_x = np.array(MW_x)
MW_exvebv = [-3.02, -2.91, -2.76, -2.58, -2.23, -1.60, -0.78, 0.00,
             1.00, 1.30, 1.80, 3.10, 4.19, 4.90, 5.77, 6.57, 6.23,
             5.52, 4.90, 4.65, 4.60, 4.73, 4.99, 5.36, 5.91,
             6.55, 7.45, 8.45, 9.80, 11.30]
MW_exvebv = np.array(MW_exvebv)
Rv = 3.08
MW_axav = MW_exvebv/Rv + 1.0
ax.plot(1./MW_x, MW_axav, 'o', label='MW Observed')

ax.set_xscale('log')
ax.set_yscale('log')

ax.set_ylim(1e-3,10.)

ax.set_xlabel(r'$\lambda$ [$\mu$m]')
ax.set_ylabel(r'$A(x)/A(V)$')

ax.legend(loc='best')
plt.show()

(Source code, png, hires.png, pdf)

../_images/dust_extinction-shapes-P92-1.png

Attributes Summary

AbAv

BKG_amp

BKG_b

BKG_lambda

BKG_n

FIR_amp

FIR_b

FIR_lambda

FIR_n

FUV_amp

FUV_b

FUV_lambda

FUV_n

NUV_amp

NUV_b

NUV_lambda

NUV_n

SIL1_amp

SIL1_b

SIL1_lambda

SIL1_n

SIL2_amp

SIL2_b

SIL2_lambda

SIL2_n

fit_deriv

Function (similar to the model's evaluate) to compute the derivatives of the model with respect to its parameters, for use by fitting algorithms.

n_inputs

n_outputs

param_names

Names of the parameters that describe models of this type.

x_range

Methods Summary

__call__

Evaluate this model using the given input(s) and the parameter values that were specified when the model was instantiated.

evaluate(x, BKG_amp, BKG_lambda, BKG_b, ...)

P92 function

Attributes Documentation

AbAv = 1.3246753246753247
BKG_amp = Parameter('BKG_amp', value=218.57142857142858, bounds=(0.0, None))
BKG_b = Parameter('BKG_b', value=90.0)
BKG_lambda = Parameter('BKG_lambda', value=0.047)
BKG_n = Parameter('BKG_n', value=2.0, fixed=True)
FIR_amp = Parameter('FIR_amp', value=0.015896103896103898, bounds=(0.0, None))
FIR_b = Parameter('FIR_b', value=0.0)
FIR_lambda = Parameter('FIR_lambda', value=25.0, bounds=(20.0, 30.0))
FIR_n = Parameter('FIR_n', value=2.0, fixed=True)
FUV_amp = Parameter('FUV_amp', value=18.545454545454547, bounds=(0.0, None))
FUV_b = Parameter('FUV_b', value=4.0)
FUV_lambda = Parameter('FUV_lambda', value=0.07, bounds=(0.06, 0.08))
FUV_n = Parameter('FUV_n', value=6.5)
NUV_amp = Parameter('NUV_amp', value=0.05961038961038961, bounds=(0.0, None))
NUV_b = Parameter('NUV_b', value=-1.95)
NUV_lambda = Parameter('NUV_lambda', value=0.22, bounds=(0.2, 0.24))
NUV_n = Parameter('NUV_n', value=2.0, fixed=True)
SIL1_amp = Parameter('SIL1_amp', value=0.0026493506493506496, bounds=(0.0, None))
SIL1_b = Parameter('SIL1_b', value=-1.95)
SIL1_lambda = Parameter('SIL1_lambda', value=9.7, bounds=(7.0, 13.0))
SIL1_n = Parameter('SIL1_n', value=2.0, fixed=True)
SIL2_amp = Parameter('SIL2_amp', value=0.0026493506493506496, bounds=(0.0, None))
SIL2_b = Parameter('SIL2_b', value=-1.8)
SIL2_lambda = Parameter('SIL2_lambda', value=18.0, bounds=(15.0, 21.0))
SIL2_n = Parameter('SIL2_n', value=2.0, fixed=True)
fit_deriv = None

Function (similar to the model’s evaluate) to compute the derivatives of the model with respect to its parameters, for use by fitting algorithms. In other words, this computes the Jacobian matrix with respect to the model’s parameters.

n_inputs = 1
n_outputs = 1
param_names = ('BKG_amp', 'BKG_lambda', 'BKG_b', 'BKG_n', 'FUV_amp', 'FUV_lambda', 'FUV_b', 'FUV_n', 'NUV_amp', 'NUV_lambda', 'NUV_b', 'NUV_n', 'SIL1_amp', 'SIL1_lambda', 'SIL1_b', 'SIL1_n', 'SIL2_amp', 'SIL2_lambda', 'SIL2_b', 'SIL2_n', 'FIR_amp', 'FIR_lambda', 'FIR_b', 'FIR_n')

Names of the parameters that describe models of this type.

The parameters in this tuple are in the same order they should be passed in when initializing a model of a specific type. Some types of models, such as polynomial models, have a different number of parameters depending on some other property of the model, such as the degree.

When defining a custom model class the value of this attribute is automatically set by the Parameter attributes defined in the class body.

x_range = [0.001, 1000.0]

Methods Documentation

__call__()

Evaluate this model using the given input(s) and the parameter values that were specified when the model was instantiated.

evaluate(x, BKG_amp, BKG_lambda, BKG_b, BKG_n, FUV_amp, FUV_lambda, FUV_b, FUV_n, NUV_amp, NUV_lambda, NUV_b, NUV_n, SIL1_amp, SIL1_lambda, SIL1_b, SIL1_n, SIL2_amp, SIL2_lambda, SIL2_b, SIL2_n, FIR_amp, FIR_lambda, FIR_b, FIR_n)[source]

P92 function

Parameters:

x (float) –

expects either x in units of wavelengths or frequency or assumes wavelengths in wavenumbers [1/micron]

internally wavenumbers are used

Returns:

axav – A(x)/A(V) extinction curve [mag]

Return type:

np array (float)

Raises:

ValueError – Input x values outside of defined range