WDmodel.WDmodel module¶
DA White Dwarf Atmosphere Models and SED generator.
Model grid originally from J. Holberg using I. Hubeny’s Tlusty code (v200) and custom Synspec routines, repackaged into HDF5 by G. Narayan.

class
WDmodel.WDmodel.
WDmodel
(grid_file=None, grid_name=None, rvmodel='f99')[source]¶ Bases:
object
DA White Dwarf Atmosphere Model and SED generator
Base class defines the routines to generate and work with DA White Dwarf model spectra. Requires a grid file of DA White Dwarf atmospheres. This grid file is included along with the package 
TlustyGrids.hdf5
 and is the default. Parameters
grid_file (str, optional) – Filename of the HDF5 grid file to read. See
WDmodel.io.read_model_grid()
for format of the grid file. Default isTlustyGrids.hdf5
, included with theWDmodel
package.grid_name (str, optional) – Name of the HDF5 group containing the white dwarf model atmosphere grids in
grid_file
. Default isdefault
rvmodel (
{'ccm89','od94','f99','custom'}
, optional) –Specify parametrization of the reddening law. Default is
'f99'
.rvmodel
parametrization
'ccm89'
Cardelli, Clayton and Mathis (1989, ApJ, 345, 245)
'od94'
O’Donnell (1994, ApJ, 422, 158)
'f99'
Fitzpatrick (1999, PASP, 111, 63)
'custom'
Custom law from Jay Holberg (email, 20180424)

_lines
¶ dictionary mapping Hydrogen Balmer series line names to line number, central wavelength in Angstrom, approximate line width and continuum region width around line. Used to extract Balmer lines from spectra for visualization.
 Type

_wave
¶ Array of model grid wavelengths in Angstroms, sorted in ascending order
 Type
arraylike

_ggrid
¶ Array of model grid surface gravity values in dex, sorted in ascending order
 Type
arraylike

_tgrid
¶ Array of model grid temperature values in Kelvin, sorted in ascending order
 Type
arraylike

_flux
¶ Array of model grid fluxes, shape
(_nwave, _ntemp, _ngrav)
 Type
arraylike

_lwave
¶ Array of model grid
log10
wavelengths for interpolation Type
arraylike

_lflux
¶ Array of model grid
log10
fluxes for interpolation, shape(_ntemp, _ngrav, _nwave)
 Type
arraylike

_law
¶  Type
extinction function corresponding to
rvmodel
 Returns
out
 Return type
WDmodel.WDmodel.WDmodel
instance Raises
ValueError – If the supplied rvmodel is unknown
Notes
Virtually none of the attributes should be used directly since it is trivially possible to break the model by redefining them. Access to them is best through the functions connected to the models.
A custom userspecified grid file can be specified. See
WDmodel.io.read_model_grid()
for the format of the grid file.Uses
scipy.interpolate.RegularGridInterpolator
to interpolate the models.The class contains various convenience methods that begin with an underscore (_) that will not be imported by default. These are intended for internal use, and do not have the sanity checking and associated overhead of the public methods.

_WDmodel__init__rvmodel
(rvmodel='f99')¶

_WDmodel__init__tlusty
(grid_file=None, grid_name=None)¶

__call__
(teff, logg, wave=None, log=False, strict=True)¶ Returns the model flux given
teff
andlogg
at wavelengthswave
Wraps
WDmodel.WDmodel.WDmodel._get_model()
adding checking of inputs. Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
wave (arraylike, optional) – Desired wavelengths at which to compute the model atmosphere flux. If not supplied, the full model wavelength grid is returned.
log (bool, optional) – Return the log10 flux, rather than the flux
strict (bool, optional) – If strict,
teff
andlogg
out of model grid range raise aValueError
, otherwise raise aRuntimeWarning
and setteff
,logg
to the nearest grid value.
 Returns
wave (arraylike) – Valid output wavelengths
flux (arraylike) – Interpolated model flux at
teff
,logg
and wavelengthswave
 Raises
ValueError – If
teff
orlogg
are out of range of model grid andstrict
is True or if there are any invalid wavelengths, or the requested wavelengths to do not overlap with the model grid
Notes
Unlike the corresponding private methods, the public methods implement checking of the inputs and returns the wavelengths in addition to the flux. Internally, we only use the private methods as the inputs only need to be checked once, and their state is not altered anywhere after.

__init__
(grid_file=None, grid_name=None, rvmodel='f99')[source]¶ Initialize self. See help(type(self)) for accurate signature.

_custom_extinction
(wave, av, rv=3.1, unit='aa')[source]¶ Return the extinction for
av
,rv
at wavelengthswave
for the custom reddening law defined by J. HolbergMimics the interface provided by
WDmodel.WDmodel.WDmodel._law
to calculate the extinction as a function of wavelength (in Angstroms), \(A_{\lambda}\). Parameters
 Returns
out – Extinction at wavelengths
wave
forav
andrv
 Return type
arraylike
Notes
av
should be >= 0.

_extract_from_indices
(w, f, ZE, df=None)[source]¶ Extracts slices of multiple arrays for the same set of indices.
Convenience function to extract elements of wavelength
w
, fluxf
and optionally flux uncertaintydf
using indicesZE
 Parameters
w (arraylike) – Wavelength array from which to extract indices
ZE
f (arraylike) – Flux array from which to extract indices
ZE
ZE (arraylike) – indices to extract
df (None or arraylike, optional) – If arraylike, extracted elements of this array are also returned
 Returns
w (arraylike) – elements of input wavelength array at indices
ZE
f (arraylike) – elements of input flux array at indices
ZE
[df] (arraylike) – elements of input flux uncertainty array at indices
ZE
if optional inputdf
is supplied

_extract_spectral_line
(w, f, line, df=None)[source]¶ Extracts slices of multiple arrays corresponding to a hydrogen Balmer line
Convenience function to extract elements of wavelength
w
, fluxf
and optionally flux uncertaintydf
for a hydrogen Balmerline
. WrapsWDmodel.WDmodel.WDmodel._get_line_indices()
andWDmodel.WDmodel.WDmodel._extract_from_indices()
, both of which have their own reasons for existence as well. Parameters
w (arraylike) – Wavelength array from which to extract elements corresponding to hydrogen Balmer
line
f (arraylike) – Flux array from which to extract elements corresponding to hydrogen Balmer
line
line (
{'alpha', 'beta', 'gamma', 'delta', 'zeta', 'eta'}
) – Name of hydrogen Balmer line to extract. Properties are predefined inWDmodel.WDmodel.WDmodel._lines
df (None or arraylike, optional) – If arraylike, extracted elements of this array are also returned
 Returns
w (arraylike) – elements of input wavelength array for hydrogen Balmer feature
line
f (arraylike) – elements of input flux array for hydrogen Balmer feature
line
[df] (arraylike) – elements of input flux uncertainty array for hydrogen Balmer feature
line
if optional inputdf
is supplied
Notes
Same as
WDmodel.WDmodel.WDmodel.extract_spectral_line()
without checking of inputs and therefore corresponding overhead. Used internally.

_get_full_obs_model
(teff, logg, av, fwhm, wave, rv=3.1, log=False, pixel_scale=1.0)[source]¶ Returns the observed model flux given
teff
,logg
,av
,rv
,fwhm
(for Gaussian instrumental broadening) at wavelengths,wave
as well as the full SED.Convenience function that does the same thing as
WDmodel.WDmodel.WDmodel._get_obs_model()
, but also returns the full SED without any instrumental broadening applied, appropriate for synthetic photometry.Uses
WDmodel.WDmodel.WDmodel._get_model()
to get the unreddened model, and reddens it withWDmodel.WDmodel.WDmodel.reddening()
and convolves it with a Gaussian kernel usingscipy.ndimage.filters.gaussian_filter1d()
 Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
av (float) – Extinction in the V band, \(A_V\)
fwhm (float) – Instrumental FWHM in Angstrom
wave (arraylike) – Desired wavelengths at which to compute the model atmosphere flux.
rv (float, optional) – The reddening law parameter, \(R_V\), the ration of the V band extinction \(A_V\) to the reddening between the B and V bands, \(E(BV)\). Default is
3.1
, appropriate for stellar SEDs in the Milky Way.log (bool, optional) – Return the log10 flux, rather than the flux (what’s actually interpolated)
pixel_scale (float, optional) – Jacobian of the transformation between wavelength in Angstrom and pixels. In principle, this should be a vector, but virtually all spectral reduction packages resample the spectrum onto a uniform wavelength scale that is close to the native pixel scale of the spectrograph. Default is
1.
 Returns
flux (arraylike) – Interpolated model flux at
teff
,logg
with reddening parametrized byav
,rv
and broadened by a Gaussian kernel defined byfwhm
at wavelengthswave
mod (
numpy.recarray
withdtype=[('wave', '<f8'), ('flux', '<f8')]
) – Full model SED atteff
,logg
with reddening parametrized byav
,rv
Notes
fwhm
andpixel_scale
must be > 0

classmethod
_get_indices_in_range
(wave, WA, WB, W0=None)[source]¶ Returns indices of wavelength between blue and red wavelength limits and the central wavelength
 Parameters
wave (arraylike) – Wavelengths array from which to extract indices
WA (float) – blue limit of wavelengths to extract
WB (float) – red limit of wavelenghts to extract
W0 (float or None, optional) –
None
or a central wavelength of range[WA, WB]
to return. IfNone
, the central wavelength is computed, else the input is simply returned.
 Returns
W0 (float) – central wavelength of range
[WA, WB]
ZE (arraylike) – indices of
wave
in range[WA, WB]

_get_line_indices
(wave, line)[source]¶ Returns the central wavelength and indices of wavelength corresponding to a hydrogen Balmer line
 Parameters
wave (arraylike) – Wavelengths array from which to extract indices
line (
{'alpha', 'beta', 'gamma', 'delta', 'zeta', 'eta'}
) – Name of hydrogen Balmer line to extract. Properties are predefined inWDmodel.WDmodel.WDmodel._lines
 Returns
W0 (float) – central wavelength of line
ZE (arraylike) – indices of wave of line
Notes
No checking of input  will throw
KeyError
if line is not accepted value

_get_model
(teff, logg, wave=None, log=False)[source]¶ Returns the model flux given
teff
andlogg
at wavelengthswave
Simple 3D interpolation of model grid. Computes unreddened, unnormalized, unconvolved, interpolated model flux. Uses
scipy.interpolate.RegularGridInterpolator
to generate the interpolated model. This output has been tested againstWDmodel.WDmodel.WDmodel._get_model_nosp()
. Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
wave (arraylike, optional) – Desired wavelengths at which to compute the model atmosphere flux. If not supplied, the full model wavelength grid is returned.
log (bool, optional) – Return the log10 flux rather than the flux.
 Returns
flux – Interpolated model flux at
teff
,logg
and wavelengthswave
. Return type
arraylike
Notes
Inputs
teff
,logg
andwave
must be within the bounds of the grid. SeeWDmodel.WDmodel.WDmodel._wave
,WDmodel.WDmodel.WDmodel._ggrid
,WDmodel.WDmodel.WDmodel._tgrid
, for grid locations and limits.

_get_model_nosp
(teff, logg, wave=None, log=False)[source]¶ Returns the model flux given
teff
andlogg
at wavelengthswave
Simple 3D interpolation of model grid. Computes unreddened, unnormalized, unconvolved, interpolated model flux. Not used, but serves as check of output of interpolation of
scipy.interpolate.RegularGridInterpolator
output. Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
wave (arraylike, optional) – Desired wavelengths at which to compute the model atmosphere flux. If not supplied, the full model wavelength grid is returned.
log (bool, optional) – Return the log10 flux, rather than the flux.
 Returns
flux – Interpolated model flux at
teff
,logg
and wavelengthswave
 Return type
arraylike
Notes
Inputs
teff
,logg
andwave
must be within the bounds of the grid. SeeWDmodel.WDmodel.WDmodel._wave
,WDmodel.WDmodel.WDmodel._ggrid
,WDmodel.WDmodel.WDmodel._tgrid
, for grid locations and limits.This restriction is not imposed here for performance reasons, but is implicitly set by routines that call this method. The user is expected to verify this condition if this method is used outside the context of the
WDmodel
package. Caveat emptor.

_get_obs_model
(teff, logg, av, fwhm, wave, rv=3.1, log=False, pixel_scale=1.0)[source]¶ Returns the observed model flux given
teff
,logg
,av
,rv
,fwhm
(for Gaussian instrumental broadening) and wavelengthswave
Uses
WDmodel.WDmodel.WDmodel._get_model()
to get the unreddened model, and reddens it withWDmodel.WDmodel.WDmodel.reddening()
and convolves it with a Gaussian kernel usingscipy.ndimage.filters.gaussian_filter1d()
 Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
av (float) – Extinction in the V band, \(A_V\)
fwhm (float) – Instrumental FWHM in Angstrom
wave (arraylike) – Desired wavelengths at which to compute the model atmosphere flux.
rv (float, optional) – The reddening law parameter, \(R_V\), the ration of the V band extinction \(A_V\) to the reddening between the B and V bands, \(E(BV)\). Default is 3.1, appropriate for stellar SEDs in the Milky Way.
log (bool, optional) – Return the log10 flux, rather than the flux (what’s actually interpolated)
pixel_scale (float, optional) – Jacobian of the transformation between wavelength in Angstrom and pixels. In principle, this should be a vector, but virtually all spectral reduction packages resample the spectrum onto a uniform wavelength scale that is close to the native pixel scale of the spectrograph. Default is
1.
 Returns
flux – Interpolated model flux at
teff
,logg
with reddening parametrized byav
,rv
and broadened by a Gaussian kernel defined byfwhm
at wavelengthswave
 Return type
arraylike
Notes
fwhm
andpixel_scale
must be > 0

_get_red_model
(teff, logg, av, wave, rv=3.1, log=False)[source]¶ Returns the reddened model flux given
teff
,logg
,av
,rv
at wavelengthswave
Uses
WDmodel.WDmodel.WDmodel._get_model()
to get the unreddened model, and reddens it withWDmodel.WDmodel.WDmodel.reddening()
 Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
av (float) – Extinction in the V band, \(A_V\)
wave (arraylike) – Desired wavelengths at which to compute the model atmosphere flux.
rv (float, optional) – The reddening law parameter, \(R_V\), the ration of the V band extinction \(A_V\) to the reddening between the B and V bands, \(E(BV)\). Default is 3.1, appropriate for stellar SEDs in the Milky Way.
log (bool, optional) – Return the log10 flux, rather than the flux (what’s actually interpolated)
 Returns
flux – Interpolated model flux at
teff
,logg
with reddening parametrized byav
,rv
at wavelengthswave
 Return type
arraylike

classmethod
_wave_test
(wave)[source]¶ Raises an error if wavelengths are not valid
 Parameters
wave (arraylike) – Array of wavelengths to test for validity
 Raises
ValueError – If wavelength array is empty, has negative values, or is not monotonic

extinction
(wave, av, rv=3.1)[source]¶ Return the extinction for
av
,rv
at wavelengthswave
Uses the extinction function corresponding to the
rvmodel
parametrization set asWDmodel.WDmodel.WDmodel._law
to calculate the extinction as a function of wavelength (in Angstroms), \(A_{\lambda}\). Parameters
wave (arraylike) – Array of wavelengths in Angstrom at which to compute extinction, sorted in ascending order
av (float) – Extinction in the V band, \(A_V\)
rv (float, optional) – The reddening law parameter, \(R_V\), the ration of the V band extinction \(A_V\) to the reddening between the B and V bands, \(E(BV)\). Default is
3.1
, appropriate for stellar SEDs in the Milky Way.
 Returns
out – Extinction at wavelengths
wave
forav
andrv
 Return type
arraylike
Notes
av
should be >= 0.

extract_spectral_line
(w, f, line, df=None)[source]¶ Extracts slices of multiple arrays corresponding to a hydrogen Balmer line
Convenience function to extract elements of wavelength
w
, fluxf
and optionally flux uncertaintydf
for a hydrogen Balmer line. WrapsWDmodel.WDmodel.WDmodel._extract_spectral_line()
adding checking of inputs. Parameters
w (arraylike) – Wavelength array from which to extract elements corresponding to hydrogen Balmer
line
f (arraylike) – Flux array from which to extract elements corresponding to hydrogen Balmer
line
line (
{'alpha', 'beta', 'gamma', 'delta', 'zeta', 'eta'}
) – Name of hydrogen Balmer line to extract. Properties are predefined inWDmodel.WDmodel.WDmodel._lines
df (None or arraylike, optional) – If arraylike, extracted elements of this array are also returned
 Returns
w (arraylike) – elements of input wavelength array for hydrogen Balmer feature
line
f (arraylike) – elements of input flux array for hydrogen Balmer feature
line
[df] (arraylike) – elements of input flux uncertainty array for hydrogen Balmer feature
line
if optional inputdf
is supplied
 Raises
ValueError – If
line
is not one of the first six of the Balmer series or If wavelengths are invalid of If there’s a difference in shape of any of the arrays

get_model
(teff, logg, wave=None, log=False, strict=True)[source]¶ Returns the model flux given
teff
andlogg
at wavelengthswave
Wraps
WDmodel.WDmodel.WDmodel._get_model()
adding checking of inputs. Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
wave (arraylike, optional) – Desired wavelengths at which to compute the model atmosphere flux. If not supplied, the full model wavelength grid is returned.
log (bool, optional) – Return the log10 flux, rather than the flux
strict (bool, optional) – If strict,
teff
andlogg
out of model grid range raise aValueError
, otherwise raise aRuntimeWarning
and setteff
,logg
to the nearest grid value.
 Returns
wave (arraylike) – Valid output wavelengths
flux (arraylike) – Interpolated model flux at
teff
,logg
and wavelengthswave
 Raises
ValueError – If
teff
orlogg
are out of range of model grid andstrict
is True or if there are any invalid wavelengths, or the requested wavelengths to do not overlap with the model grid
Notes
Unlike the corresponding private methods, the public methods implement checking of the inputs and returns the wavelengths in addition to the flux. Internally, we only use the private methods as the inputs only need to be checked once, and their state is not altered anywhere after.

get_obs_model
(teff, logg, av, fwhm, rv=3.1, wave=None, log=False, strict=True, pixel_scale=1.0)[source]¶ Returns the observed model flux given
teff
,logg
,av
,rv
,fwhm
(for Gaussian instrumental broadening) and wavelengthswave
Uses
WDmodel.WDmodel.WDmodel.get_red_model()
to get the reddened model and convolves it with a Gaussian kernel usingscipy.ndimage.filters.gaussian_filter1d()
 Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
av (float) – Extinction in the V band, \(A_V\)
fwhm (float) – Instrumental FWHM in Angstrom
rv (float, optional) – The reddening law parameter, \(R_V\), the ration of the V band extinction \(A_V\) to the reddening between the B and V bands, \(E(BV)\). Default is
3.1
, appropriate for stellar SEDs in the Milky Way.wave (arraylike, optional) – Desired wavelengths at which to compute the model atmosphere flux. If not supplied, the full model wavelength grid is returned.
log (bool, optional) – Return the log10 flux, rather than the flux (what’s actually interpolated)
strict (bool, optional) – If strict,
teff
andlogg
out of model grid range raise aValueError
, otherwise raise aRuntimeWarning
and setteff
,logg
to the nearest grid value.pixel_scale (float, optional) – Jacobian of the transformation between wavelength in Angstrom and pixels. In principle, this should be a vector, but virtually all spectral reduction packages resample the spectrum onto a uniform wavelength scale that is close to the native pixel scale of the spectrograph. Default is
1.
 Returns
wave (arraylike) – Valid output wavelengths
flux (arraylike) – Interpolated model flux at
teff
,logg
with reddening parametrized byav
,rv
broadened by a Gaussian kernel defined byfwhm
at wavelengthswave
Notes
fwhm
andpixel_scale
must be> 0

get_red_model
(teff, logg, av, rv=3.1, wave=None, log=False, strict=True)[source]¶ Returns the reddened model flux given
teff
,logg
,av
,rv
at wavelengthswave
Uses
WDmodel.WDmodel.WDmodel.get_model()
to get the unreddened model, and reddens it withWDmodel.WDmodel.WDmodel.reddening()
 Parameters
teff (float) – Desired model white dwarf atmosphere temperature (in Kelvin)
logg (float) – Desired model white dwarf atmosphere surface gravity (in dex)
av (float) – Extinction in the V band, \(A_V\)
rv (float, optional) – The reddening law parameter, \(R_V\), the ration of the V band extinction \(A_V\) to the reddening between the B and V bands, \(E(BV)\). Default is
3.1
, appropriate for stellar SEDs in the Milky Way.wave (arraylike, optional) – Desired wavelengths at which to compute the model atmosphere flux. If not supplied, the full model wavelength grid is returned.
log (bool, optional) – Return the log10 flux, rather than the flux (what’s actually interpolated)
strict (bool, optional) – If strict,
teff
andlogg
out of model grid range raise aValueError
, otherwise raise aRuntimeWarning
and setteff
,logg
to the nearest grid value.
 Returns
wave (arraylike) – Valid output wavelengths
flux (arraylike) – Interpolated model flux at
teff
,logg
with reddening parametrized byav
,rv
at wavelengthswave
 Raises
ValueError – If
av < 0
orrv
not in[1.7, 5.1]

reddening
(wave, flux, av, rv=3.1)[source]¶ Redden a 1D spectrum with extinction
Uses the extinction function corresponding to the
rvmodel
parametrization set inWDmodel.WDmodel.WDmodel._WDmodel__init__rvmodel()
to calculate the extinction as a function of wavelength (in Angstroms), \(A_{\lambda}\). Parameters
wave (arraylike) – Array of wavelengths in Angstrom at which to compute extinction, sorted in ascending order
flux (arraylike) – Array of fluxes at
wave
at which to apply extinctionav (float) – Extinction in the V band, \(A_V\)
rv (float, optional) – The reddening law parameter, \(R_V\), the ration of the V band extinction \(A_V\) to the reddening between the B and V bands, \(E(BV)\). Default is
3.1
, appropriate for stellar SEDs in the Milky Way.
 Returns
out – The reddened spectrum
 Return type
arraylike
Notes
av
andflux
should be >= 0.