from __future__ import (absolute_import, print_function, division)
import numpy as np
from .helpers import (_get_x_in_wavenumbers, _test_valid_x_range)
from .baseclasses import BaseExtAveModel
from .shapes import (P92, _curve_F99_method)
__all__ = ['G03_SMCBar', 'G03_LMCAvg', 'G03_LMC2',
'GCC09_MWAvg']
x_range_G03 = [0.3, 10.0]
x_range_GCC09 = [0.3, 1.0/0.0912]
[docs]class G03_SMCBar(BaseExtAveModel):
"""
G03 SMCBar Average Extinction Curve
Parameters
----------
None
Raises
------
None
Notes
-----
SMCBar G03 average extinction curve
From Gordon et al. (2003, ApJ, 594, 279)
Example showing the average curve
.. plot::
:include-source:
import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u
from dust_extinction.averages import G03_SMCBar
fig, ax = plt.subplots()
# define the extinction model
ext_model = G03_SMCBar()
# generate the curves and plot them
x = np.arange(ext_model.x_range[0], ext_model.x_range[1],0.1)/u.micron
ax.plot(x,ext_model(x),label='G03 SMCBar')
ax.plot(ext_model.obsdata_x, ext_model.obsdata_axav, 'ko',
label='obsdata')
ax.set_xlabel(r'$x$ [$\mu m^{-1}$]')
ax.set_ylabel(r'$A(x)/A(V)$')
ax.legend(loc='best')
plt.show()
"""
x_range = x_range_G03
Rv = 2.74
obsdata_x = np.array([0.455, 0.606, 0.800,
1.235, 1.538,
1.818, 2.273, 2.703,
3.375, 3.625, 3.875,
4.125, 4.375, 4.625, 4.875,
5.125, 5.375, 5.625, 5.875,
6.125, 6.375, 6.625, 6.875,
7.125, 7.375, 7.625, 7.875,
8.125, 8.375, 8.625])
obsdata_axav = np.array([0.110, 0.169, 0.250,
0.567, 0.801,
1.000, 1.374, 1.672,
2.000, 2.220, 2.428,
2.661, 2.947, 3.161, 3.293,
3.489, 3.637, 3.866, 4.013,
4.243, 4.472, 4.776, 5.000,
5.272, 5.575, 5.795, 6.074,
6.297, 6.436, 6.992])
# accuracy of the observed data based on published table
obsdata_tolerance = 6e-2
[docs] def evaluate(self, in_x):
"""
G03 SMCBar function
Parameters
----------
in_x: float
expects either x in units of wavelengths or frequency
or assumes wavelengths in wavenumbers [1/micron]
internally wavenumbers are used
Returns
-------
axav: np array (float)
A(x)/A(V) extinction curve [mag]
Raises
------
ValueError
Input x values outside of defined range
"""
C1 = -4.959
C2 = 2.264
C3 = 0.389
C4 = 0.461
xo = 4.6
gamma = 1.0
optnir_axav_x = 1./np.array([2.198, 1.65, 1.25, 0.81, 0.65,
0.55, 0.44, 0.37])
# values at 2.198 and 1.25 changed to provide smooth interpolation
# as noted in Gordon et al. (2016, ApJ, 826, 104)
optnir_axav_y = [0.11, 0.169, 0.25, 0.567, 0.801,
1.00, 1.374, 1.672]
# return A(x)/A(V)
return _curve_F99_method(in_x, self.Rv, C1, C2, C3, C4, xo, gamma,
optnir_axav_x, optnir_axav_y,
self.x_range, 'G03')
[docs]class G03_LMCAvg(BaseExtAveModel):
"""
G03 LMCAvg Average Extinction Curve
Parameters
----------
None
Raises
------
None
Notes
-----
LMCAvg G03 average extinction curve
From Gordon et al. (2003, ApJ, 594, 279)
Example showing the average curve
.. plot::
:include-source:
import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u
from dust_extinction.averages import G03_LMCAvg
fig, ax = plt.subplots()
# define the extinction model
ext_model = G03_LMCAvg()
# generate the curves and plot them
x = np.arange(ext_model.x_range[0], ext_model.x_range[1],0.1)/u.micron
ax.plot(x,ext_model(x),label='G03 LMCAvg')
ax.plot(ext_model.obsdata_x, ext_model.obsdata_axav, 'ko',
label='obsdata')
ax.set_xlabel(r'$x$ [$\mu m^{-1}$]')
ax.set_ylabel(r'$A(x)/A(V)$')
ax.legend(loc='best')
plt.show()
"""
x_range = x_range_G03
Rv = 3.41
obsdata_x = np.array([0.455, 0.606, 0.800,
1.818, 2.273, 2.703,
3.375, 3.625, 3.875,
4.125, 4.375, 4.625, 4.875,
5.125, 5.375, 5.625, 5.875,
6.125, 6.375, 6.625, 6.875,
7.125, 7.375, 7.625, 7.875,
8.125])
obsdata_axav = np.array([0.100, 0.186, 0.257,
1.000, 1.293, 1.518,
1.786, 1.969, 2.149,
2.391, 2.771, 2.967, 2.846,
2.646, 2.565, 2.566, 2.598,
2.607, 2.668, 2.787, 2.874,
2.983, 3.118, 3.231, 3.374,
3.366])
# accuracy of the observed data based on published table
obsdata_tolerance = 6e-2
[docs] def evaluate(self, in_x):
"""
G03 LMCAvg function
Parameters
----------
in_x: float
expects either x in units of wavelengths or frequency
or assumes wavelengths in wavenumbers [1/micron]
internally wavenumbers are used
Returns
-------
axav: np array (float)
A(x)/A(V) extinction curve [mag]
Raises
------
ValueError
Input x values outside of defined range
"""
C1 = -0.890
C2 = 0.998
C3 = 2.719
C4 = 0.400
xo = 4.579
gamma = 0.934
optnir_axav_x = 1./np.array([2.198, 1.65, 1.25,
0.55, 0.44, 0.37])
# value at 2.198 changed to provide smooth interpolation
# as noted in Gordon et al. (2016, ApJ, 826, 104) for SMCBar
optnir_axav_y = [0.10, 0.186, 0.257,
1.000, 1.293, 1.518]
# return A(x)/A(V)
return _curve_F99_method(in_x, self.Rv, C1, C2, C3, C4, xo, gamma,
optnir_axav_x, optnir_axav_y,
self.x_range, 'G03')
[docs]class G03_LMC2(BaseExtAveModel):
"""
G03 LMC2 Average Extinction Curve
Parameters
----------
None
Raises
------
None
Notes
-----
LMC2 G03 average extinction curve
From Gordon et al. (2003, ApJ, 594, 279)
Example showing the average curve
.. plot::
:include-source:
import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u
from dust_extinction.averages import G03_LMC2
fig, ax = plt.subplots()
# generate the curves and plot them
x = np.arange(0.3,10.0,0.1)/u.micron
# define the extinction model
ext_model = G03_LMC2()
# generate the curves and plot them
x = np.arange(ext_model.x_range[0], ext_model.x_range[1],0.1)/u.micron
ax.plot(x,ext_model(x),label='G03 LMC2')
ax.plot(ext_model.obsdata_x, ext_model.obsdata_axav, 'ko',
label='obsdata')
ax.set_xlabel(r'$x$ [$\mu m^{-1}$]')
ax.set_ylabel(r'$A(x)/A(V)$')
ax.legend(loc='best')
plt.show()
"""
x_range = x_range_G03
Rv = 2.76
obsdata_x = np.array([0.455, 0.606, 0.800,
1.818, 2.273, 2.703,
3.375, 3.625, 3.875,
4.125, 4.375, 4.625, 4.875,
5.125, 5.375, 5.625, 5.875,
6.125, 6.375, 6.625, 6.875,
7.125, 7.375, 7.625, 7.875,
8.125])
obsdata_axav = np.array([0.101, 0.150, 0.299,
1.000, 1.349, 1.665,
1.899, 2.067, 2.249,
2.447, 2.777, 2.922, 2.921,
2.812, 2.805, 2.863, 2.932,
3.060, 3.110, 3.299, 3.408,
3.515, 3.670, 3.862, 3.937,
4.055])
# accuracy of the observed data based on published table
obsdata_tolerance = 6e-2
[docs] def evaluate(self, in_x):
"""
G03 LMC2 function
Parameters
----------
in_x: float
expects either x in units of wavelengths or frequency
or assumes wavelengths in wavenumbers [1/micron]
internally wavenumbers are used
Returns
-------
axav: np array (float)
A(x)/A(V) extinction curve [mag]
Raises
------
ValueError
Input x values outside of defined range
"""
C1 = -1.475
C2 = 1.132
C3 = 1.463
C4 = 0.294
xo = 4.558
gamma = 0.945
optnir_axav_x = 1./np.array([2.198, 1.65, 1.25,
0.55, 0.44, 0.37])
# value at 1.65 changed to provide smooth interpolation
# as noted in Gordon et al. (2016, ApJ, 826, 104) for SMCBar
optnir_axav_y = [0.101, 0.15, 0.299,
1.000, 1.349, 1.665]
# return A(x)/A(V)
return _curve_F99_method(in_x, self.Rv, C1, C2, C3, C4, xo, gamma,
optnir_axav_x, optnir_axav_y,
self.x_range, 'G03')
[docs]class GCC09_MWAvg(BaseExtAveModel):
"""
G09 MW Average Extinction Curve
Parameters
----------
None
Raises
------
None
Notes
-----
MW G09 average extinction curve
From Gordon, Cartledge, & Clayton (2009, ApJ, 705, 1320)
Example showing the average curve
.. plot::
:include-source:
import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u
from dust_extinction.averages import GCC09_MWAvg
fig, ax = plt.subplots()
# generate the curves and plot them
x = np.arange(0.3,1.0/0.0912,0.1)/u.micron
# define the extinction model
ext_model = GCC09_MWAvg()
# generate the curves and plot them
x = np.arange(ext_model.x_range[0], ext_model.x_range[1],0.1)/u.micron
ax.plot(x,ext_model(x),label='GCC09_MWAvg')
ax.errorbar(ext_model.obsdata_x_fuse, ext_model.obsdata_axav_fuse,
yerr=ext_model.obsdata_axav_unc_fuse,
fmt='ko', label='obsdata (FUSE)')
ax.errorbar(ext_model.obsdata_x_iue, ext_model.obsdata_axav_iue,
yerr=ext_model.obsdata_axav_unc_iue,
fmt='bs', label='obsdata (IUE)')
ax.errorbar(ext_model.obsdata_x_bands, ext_model.obsdata_axav_bands,
yerr=ext_model.obsdata_axav_unc_bands,
fmt='g^', label='obsdata (Opt/NIR)')
ax.set_xlabel(r'$x$ [$\mu m^{-1}$]')
ax.set_ylabel(r'$A(x)/A(V)$')
ax.legend(loc='best')
plt.show()
"""
x_range = x_range_GCC09
Rv = 3.1
# GCC09 sigma clipped average of 75 sightlines
# FUSE range
obsdata_x_fuse = [10.9546, 10.9103, 10.8662, 10.8223,
10.7785, 10.7349, 10.6915, 10.6483, 10.6052, 10.5623,
10.5196, 10.4771, 10.4347, 10.3925, 10.3087, 10.267,
10.2255, 10.1841, 10.1019, 10.0611, 10.0204, 9.97986,
9.93951, 9.89931, 9.85929, 9.81942, 9.77971, 9.70078,
9.66155, 9.62249, 9.58357, 9.54482, 9.50623, 9.46779,
9.4295, 9.39137, 9.3534, 9.31557, 9.27791, 9.24039,
9.20302, 9.16581, 9.12875, 9.09183, 9.05507, 9.01845,
8.98199, 8.94567, 8.90949, 8.87346, 8.83758, 8.80185,
8.76626, 8.73081, 8.6955, 8.66034, 8.62532, 8.59044,
8.55571, 8.52111, 8.48665, 8.45234, 8.41816]
obsdata_x_fuse = np.array(obsdata_x_fuse)
obsdata_axav_fuse = [5.66618, 6.40194, 5.77457, 5.79106,
5.70592, 5.72051, 5.49183, 5.41765, 5.51848, 5.41397,
5.31807, 5.32059, 5.31287, 5.08549, 5.40957, 5.10527,
4.9687, 4.90159, 4.80515, 4.87271, 4.93841, 4.72152,
4.87334, 4.93926, 4.53512, 4.76922, 4.78194, 4.72528,
4.56487, 4.48517, 4.46397, 4.43617, 4.54009, 4.42218,
4.3535, 4.24038, 4.31097, 4.20365, 3.99197, 4.17342,
4.06771, 4.06164, 4.07516, 4.05083, 3.99641, 3.93076,
3.94753, 3.90736, 3.8829, 3.851, 3.80554, 3.77639,
3.77054, 3.71965, 3.69324, 3.68308, 3.62794, 3.57599,
3.62095, 3.51596, 3.48092, 3.45548, 3.45695]
obsdata_axav_fuse = np.array(obsdata_axav_fuse)
obsdata_axav_unc_fuse = [0.841267, 0.564267, 0.14915,
0.168216, 0.148527, 0.453437, 0.15257, 0.186925,
0.144917, 0.542937, 0.144074, 0.154166, 0.139096,
0.142622, 0.149361, 0.152435, 0.138154, 0.22776,
0.152251, 0.137892, 0.128214, 0.210881, 0.132385,
0.532321, 0.234241, 0.130432, 0.141754, 0.126149,
0.135772, 0.133049, 0.113491, 0.112876, 0.130662,
0.112918, 0.112409, 0.134404, 0.108662, 0.110052,
0.127927, 0.105854, 0.101012, 0.101105, 0.103142,
0.100781, 0.0992076, 0.100922, 0.0980583, .095052,
0.0977723, 0.0999428, 0.0968485, 0.0935959,
0.0962254, 0.0934298, 0.0901496, 0.0914562,
0.0869283, 0.0827114, 0.0839611, 0.0824688,
0.0881894, 0.0836739, 0.0927445]
obsdata_axav_unc_fuse = np.array(obsdata_axav_unc_fuse)
# IUE range
obsdata_x_iue = [8.67238, 8.63766, 8.60307, 8.56862, 8.53431, 8.50013,
8.46609, 8.43219, 8.39843, 8.06812, 8.03582, 8.00364,
7.97159, 7.93967, 7.90787, 7.87621, 7.84467, 7.81326,
7.78197, 7.75081, 7.71977, 7.68886, 7.65807, 7.6274,
7.59686, 7.56644, 7.53614, 7.50596, 7.47591, 7.44597,
7.41616, 7.38646, 7.35688, 7.32742, 7.29808, 7.26886,
7.23975, 7.21076, 7.18189, 7.15313, 7.12448, 7.09595,
7.06754, 7.03924, 7.01105, 6.98298, 6.95501, 6.92716,
6.89943, 6.8718, 6.84428, 6.81687, 6.78958, 6.76239,
6.73531, 6.70834, 6.68148, 6.65472, 6.62807, 6.60153,
6.5751, 6.54877, 6.52255, 6.49643, 6.47041, 6.4445,
6.4187, 6.393, 6.3674, 6.3419, 6.3165, 6.29121,
6.26602, 6.24093, 6.21594, 6.19105, 6.16625, 6.14156,
6.11697, 6.09247, 6.06808, 6.04378, 6.01958, 5.99547,
5.97147, 5.94755, 5.92374, 5.90002, 5.87639, 5.85286,
5.82942, 5.80608, 5.78283, 5.75968, 5.73661, 5.71364,
5.69076, 5.66797, 5.64528, 5.62267, 5.60016, 5.57773,
5.5554, 5.53315, 5.51099, 5.48893, 5.46695, 5.44505,
5.42325, 5.40153, 5.3799, 5.35836, 5.33691, 5.31553,
5.29425, 5.27305, 5.25193, 5.2309, 5.20996, 5.18909,
5.16832, 5.14762, 5.12701, 5.10648, 5.08603, 5.06566,
5.04538, 5.02517, 5.00505, 4.98501, 4.96505, 4.94517,
4.92536, 4.90564, 4.886, 4.86643, 4.84695, 4.82754,
4.80821, 4.78895, 4.76978, 4.75068, 4.73165, 4.71271,
4.69383, 4.67504, 4.65632, 4.63767, 4.6191, 4.60061,
4.58218, 4.56383, 4.54556, 4.52736, 4.50923, 4.49117,
4.47319, 4.45528, 4.43744, 4.41967, 4.40197, 4.38434,
4.36678, 4.3493, 4.33188, 4.31454, 4.29726, 4.28005,
4.26291, 4.24584, 4.22884, 4.21191, 4.19504, 4.17824,
4.16151, 4.14485, 4.12825, 4.11172, 4.09525, 4.07886,
4.06252, 4.04626, 4.03005, 4.01391, 3.99784, 3.98183,
3.96589, 3.95001, 3.93419, 3.91844, 3.90275, 3.88712,
3.87155, 3.85605, 3.84061, 3.82523, 3.80991, 3.79466,
3.77946, 3.76433, 3.74925, 3.73424, 3.71929, 3.70439,
3.68956, 3.67479, 3.66007, 3.64541, 3.63082, 3.61628,
3.6018, 3.58737, 3.57301, 3.5587, 3.54445, 3.53026,
3.51612, 3.50204, 3.48802, 3.47405, 3.46014, 3.44628,
3.43248, 3.41874, 3.40505, 3.39141, 3.37783, 3.36431,
3.35084, 3.33742, 3.32405, 3.31074, 3.29749, 3.28428,
3.27113, 3.25803, 3.24499, 3.23199, 3.21905, 3.20616,
3.19332, 3.18053, 3.1678, 3.15511, 3.14248, 3.1299]
obsdata_x_iue = np.array(obsdata_x_iue)
obsdata_axav_iue = [3.65928, 3.63298, 3.62795, 3.6208, 3.64341, 3.53765,
3.53677, 3.5427, 3.56652, 3.29218, 3.23503, 3.2238,
3.22317, 3.22866, 3.20417, 3.15837, 3.16327, 3.1708,
3.1334, 3.12145, 3.11992, 3.07658, 3.08156, 3.04455,
3.02463, 3.01345, 3.02961, 2.9983, 2.97199, 2.97655,
2.95303, 2.92917, 2.9315, 2.90957, 2.92098, 2.89773,
2.9216, 2.96812, 2.92843, 2.84994, 2.76261, 2.77898,
2.79977, 2.80212, 2.75931, 2.75237, 2.74339, 2.75293,
2.75406, 2.73118, 2.71888, 2.7038, 2.69887, 2.69127,
2.67574, 2.68104, 2.67549, 2.67603, 2.64334, 2.65192,
2.65471, 2.63698, 2.79805, 2.81398, 2.61601, 2.52357,
2.56245, 2.57612, 2.57371, 2.57366, 2.58391, 2.56651,
2.53891, 2.5498, 2.547, 2.52921, 2.53505, 2.53957,
2.49688, 2.50546, 2.5158, 2.53622, 2.51002, 2.51476,
2.50015, 2.51407, 2.49824, 2.50799, 2.49206, 2.51322,
2.53216, 2.49304, 2.50232, 2.49258, 2.49553, 2.49845,
2.48743, 2.49823, 2.51739, 2.51013, 2.51298, 2.5099,
2.51117, 2.50904, 2.50831, 2.52974, 2.52566, 2.53674,
2.55254, 2.542, 2.53676, 2.54664, 2.54644, 2.55759,
2.5741, 2.58273, 2.61147, 2.61443, 2.62011, 2.62936,
2.63393, 2.65589, 2.66957, 2.68421, 2.70437, 2.70523,
2.70803, 2.7383, 2.76815, 2.78111, 2.77637, 2.78608,
2.79124, 2.84364, 2.84704, 2.84201, 2.91489, 2.89018,
2.91718, 2.94838, 2.98511, 2.98107, 3.03746, 2.99576,
3.05553, 3.07511, 3.07822, 3.06783, 3.09312, 3.05633,
3.05563, 3.09865, 3.05498, 3.06246, 3.02764, 2.99527,
3.00572, 2.95838, 2.95917, 2.91366, 2.88411, 2.85771,
2.82407, 2.77112, 2.73591, 2.72641, 2.68104, 2.62841,
2.63436, 2.57767, 2.58473, 2.54006, 2.51824, 2.4764,
2.45969, 2.43959, 2.41843, 2.37988, 2.36786, 2.33728,
2.31928, 2.29395, 2.27981, 2.28779, 2.22856, 2.23069,
2.19755, 2.20688, 2.19122, 2.1896, 2.15048, 2.11892,
2.10666, 2.10841, 2.11195, 2.08599, 2.07774, 2.06357,
2.04322, 2.04653, 2.05064, 2.02805, 2.01393, 2.0147,
1.98255, 1.96987, 1.97065, 1.9445, 1.93309, 1.95049,
1.92026, 1.8823, 1.90472, 1.91047, 1.90488, 1.87021,
1.88634, 1.87464, 1.88597, 1.84753, 1.86308, 1.8393,
1.83982, 1.81921, 1.81612, 1.79369, 1.82415, 1.80237,
1.80587, 1.7588, 1.77455, 1.76309, 1.76982, 1.73848,
1.74919, 1.73011, 1.7181, 1.70523, 1.69983, 1.70104,
1.67963, 1.69661, 1.69288, 1.64255, 1.69986, 1.64438]
obsdata_axav_iue = np.array(obsdata_axav_iue)
axav_unc_iue = [0.0872464, 0.0870429, 0.0884721, 0.0856429, 0.085733,
0.0870081, 0.0868195, 0.0824011, 0.0831442, 0.0700169,
0.0753427, 0.0706412, 0.0708828, 0.0725433, 0.0718813,
0.0733914, 0.0746335, 0.070549, 0.0701482, 0.0751515,
0.0703968, 0.0704839, 0.0716527, 0.0665725, 0.0645906,
0.0646839, 0.0667977, 0.0638441, 0.0644936, 0.0646092,
0.0632691, 0.062183, 0.0614076, 0.0609257, 0.062895,
0.0621621, 0.0616836, 0.0667685, 0.0637902, 0.0628244,
0.06145, 0.0599388, 0.0582835, 0.0588209, 0.0552912,
0.0570526, 0.0570427, 0.0551712, 0.0551769, 0.0532115,
0.0537545, 0.05434, 0.0542661, 0.0532496, 0.052242,
0.0526348, 0.0528077, 0.0543117, 0.0530651, 0.0543711,
0.0535841, 0.0527281, 0.0615197, 0.0744345, 0.0604337,
0.0540828, 0.0502652, 0.0493793, 0.0493413, 0.0494069,
0.0490926, 0.0485171, 0.0476265, 0.0488545, 0.048111,
0.0465552, 0.0456084, 0.0465916, 0.0438029, 0.0443429,
0.0436129, 0.0431271, 0.0438585, 0.0437505, 0.0432799,
0.0428038, 0.0418432, 0.0427744, 0.0426111, 0.0430678,
0.043576, 0.0449369, 0.0427624, 0.0420389, 0.0433408,
0.0431901, 0.0408719, 0.0410534, 0.0432204, 0.0428762,
0.0412307, 0.0434997, 0.0390442, 0.0404766, 0.0409797,
0.0407884, 0.0407895, 0.0418381, 0.0441335, 0.0435533,
0.0417593, 0.0411644, 0.0394862, 0.0421479, 0.0443296,
0.0444373, 0.0450305, 0.0445311, 0.0444786, 0.0454764,
0.0437134, 0.0434556, 0.0441117, 0.045317, 0.0426919,
0.0407817, 0.0415202, 0.0436795, 0.0460842, 0.0441931,
0.0429678, 0.0416575, 0.0405409, 0.0449516, 0.0422263,
0.04354, 0.0447088, 0.0427848, 0.0427436, 0.0454757,
0.0459811, 0.0452352, 0.0473206, 0.0440146, 0.0460769,
0.0476268, 0.0476545, 0.0466497, 0.0461933, 0.0468001,
0.0456869, 0.0484227, 0.0460075, 0.0460413, 0.0450113,
0.0462236, 0.0468239, 0.0438579, 0.0437953, 0.0440855,
0.0427247, 0.0428557, 0.040375, 0.0404052, 0.038604,
0.0383919, 0.0376932, 0.0359274, 0.0366497, 0.0347373,
0.0364086, 0.0331321, 0.0339372, 0.0342494, 0.0340913,
0.0320641, 0.0325347, 0.03207, 0.0303993, 0.0301872,
0.0304542, 0.0295561, 0.0285186, 0.0300075, 0.0277648,
0.0288373, 0.0272505, 0.0259275, 0.026904, 0.0273099,
0.0270734, 0.0255038, 0.0250177, 0.0253357, 0.0243852,
0.0235365, 0.0243051, 0.0234035, 0.0243984, 0.0238785,
0.0233703, 0.0230637, 0.0237698, 0.0217698, 0.0231451,
0.0234694, 0.0221487, 0.0220043, 0.0225651, 0.0218849,
0.0214238, 0.0226075, 0.0199234, 0.0210254, 0.0208846,
0.0208468, 0.021534, 0.0201173, 0.0219919, 0.019761,
0.0205099, 0.0203457, 0.0206186, 0.0210671, 0.0209995,
0.0201318, 0.0199858, 0.0191492, 0.0185285, 0.0190833,
0.0181813, 0.0176767, 0.0188425, 0.0177012, 0.0170917,
0.0177921, 0.0158575, 0.0162902, 0.0180801, 0.0178876,
0.0183926, 0.0195394, 0.0186493, 0.0179556, 0.0174061,
0.017488]
obsdata_axav_unc_iue = np.array(axav_unc_iue)
# Opt/NIR range
obsdata_x_bands = np.array([2.73224, 2.28311, 0.819672, 0.613497,
0.456621])
obsdata_axav_bands = np.array([1.53296, 1.30791, 0.291042, 0.188455,
0.095588])
obsdata_axav_unc_bands = np.array([0.0105681, 0.00506663, 0.00407895,
0.00307513, 0.00371036])
# put them together
obsdata_x = np.concatenate((obsdata_x_fuse, obsdata_x_iue,
obsdata_x_bands))
obsdata_axav = np.concatenate((obsdata_axav_fuse, obsdata_axav_iue,
obsdata_axav_bands))
obsdata_axav_unc = np.concatenate((obsdata_axav_unc_fuse,
obsdata_axav_unc_iue,
obsdata_axav_unc_bands))
# accuracy of the observed data based on published table
obsdata_tolerance = 5e-1
[docs] def evaluate(self, in_x):
"""
GCC09_MWAvg function
Parameters
----------
in_x: float
expects either x in units of wavelengths or frequency
or assumes wavelengths in wavenumbers [1/micron]
internally wavenumbers are used
Returns
-------
axav: np array (float)
A(x)/A(V) extinction curve [mag]
Raises
------
ValueError
Input x values outside of defined range
"""
x = _get_x_in_wavenumbers(in_x)
# check that the wavenumbers are within the defined range
_test_valid_x_range(x, x_range_GCC09, 'GCC09')
# P92 parameters fit to the data using uncs as weights
p92_fit = P92(BKG_amp=203.805939127, BKG_lambda=0.0508199427208,
BKG_b=88.0591826413, BKG_n=2.0,
FUV_amp=5.33962141873, FUV_lambda=0.08,
FUV_b=-0.777129536415, FUV_n=3.88322376926,
NUV_amp=0.0447023090042, NUV_lambda=0.217548391182,
NUV_b=-1.95723797612, NUV_n=2.0,
SIL1_amp=0.00264935064935, SIL1_lambda=9.7,
SIL1_b=-1.95, SIL1_n=2.0,
SIL2_amp=0.00264935064935, SIL2_lambda=18.0,
SIL2_b=-1.80, SIL2_n=2.0,
FIR_amp=0.01589610389, FIR_lambda=25.0,
FIR_b=0.0, FIR_n=2.0)
# return A(x)/A(V)
return p92_fit(in_x)