FM90_B3

class dust_extinction.shapes.FM90_B3[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

n_outputs

param_names

Names of the parameters that describe models of this type.

x_range

xo

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, 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
n_outputs = 1
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__()

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 – E(x-V)/E(B-V) extinction curve [mag]

Return type:

np array (float)

Raises:

ValueError – Input x values outside of defined range