FM90_B3

class dust_extinction.shapes.FM90_B3(C1=0.1, C2=0.7, B3=3.23, C4=0.41, xo=4.59, gamma=0.95, **kwargs)[source]

Bases: BaseExtModel, Fittable1DModel

Fitzpatrick & Massa (1990) 6 parameter ultraviolet shape model Version with bump amplitude B3 = C3/gamma^2

Parameters:
C1: float

y-intercept of linear term

C2: float

slope of liner term

B3: float

amplitude of “2175 A” bump

C4: float

amplitude of FUV rise

xo: float

centroid of “2175 A” bump

gamma: float

width of “2175 A” bump

Notes

From Fitzpatrick & Massa (1990, ApJS, 72, 163)

Only applicable at UV wavelengths

Example showing a FM90 curve with components identified.

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

from dust_extinction.shapes import FM90_B3

fig, ax = plt.subplots()

# generate the curves and plot them
x = np.arange(3.8,8.6,0.1)/u.micron

ext_model = FM90_B3()
ax.plot(x,ext_model(x),label='total')

ext_model = FM90_B3(B3=0.0, C4=0.0)
ax.plot(x,ext_model(x),label='linear term')

ext_model = FM90_B3(C1=0.0, C2=0.0, C4=0.0)
ax.plot(x,ext_model(x),label='bump term')

ext_model = FM90_B3(C1=0.0, C2=0.0, B3=0.0)
ax.plot(x,ext_model(x),label='FUV rise term')

ax.set_xlabel(r'$x$ [$\mu m^{-1}$]')
ax.set_ylabel(r'$E(\lambda - V)/E(B - V)$')

# for 2nd x-axis with lambda values
axis_xs = np.array([0.12, 0.15, 0.2, 0.3])
new_ticks = 1 / axis_xs
new_ticks_labels = ["%.2f" % z for z in axis_xs]
tax = ax.twiny()
tax.set_xlim(ax.get_xlim())
tax.set_xticks(new_ticks)
tax.set_xticklabels(new_ticks_labels)
tax.set_xlabel(r"$\lambda$ [$\mu$m]")

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

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

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

Attributes Summary

B3

C1

C2

C4

gamma

n_inputs

The number of inputs.

n_outputs

The number of outputs.

param_names

Names of the parameters that describe models of this type.

x_range

xo

Methods Summary

__call__(*inputs[, model_set_axis, ...])

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

evaluate(x, C1, C2, B3, C4, xo, gamma)

FM90 function

Attributes Documentation

B3 = Parameter('B3', value=3.23, bounds=(-1.0, 6.0))
C1 = Parameter('C1', value=0.1, bounds=(-10.0, 5.0))
C2 = Parameter('C2', value=0.7, bounds=(-0.1, 5.0))
C4 = Parameter('C4', value=0.41, bounds=(-0.5, 1.5))
gamma = Parameter('gamma', value=0.95, bounds=(0.6, 1.7))
n_inputs = 1

The number of inputs.

n_outputs = 1

The number of outputs.

param_names = ('C1', 'C2', 'B3', 'C4', 'xo', 'gamma')

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 = [2.857142857142857, 11.11111111111111]
xo = Parameter('xo', value=4.59, bounds=(4.5, 4.9))

Methods Documentation

__call__(*inputs, model_set_axis=None, with_bounding_box=False, fill_value=nan, equivalencies=None, inputs_map=None, **new_inputs)

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

static evaluate(x, C1, C2, B3, C4, xo, gamma)[source]

FM90 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:
exvebv: np array (float)

E(x-V)/E(B-V) extinction curve [mag]

Raises:
ValueError

Input x values outside of defined range