sncosmo.Bandpass

class sncosmo.Bandpass(wave, trans, wave_unit=Unit("Angstrom"), trans_unit=Unit(dimensionless), normalize=False, name=None, trim_level=None)[source]

Transmission as a function of spectral wavelength.

Parameters:
wave : list_like

Wavelength. Monotonically increasing values.

trans : list_like

Transmission fraction.

wave_unit : Unit or str, optional

Wavelength unit. Default is Angstroms.

trans_unit : Unit, optional

Transmission unit. Can be dimensionless_unscaled, indicating a ratio of transmitted to incident photons, or units proportional to inverse energy, indicating a ratio of transmitted photons to incident energy. Default is ratio of transmitted to incident photons.

normalize : bool, optional

If True, normalize fractional transmission to be 1.0 at peak. It is recommended to set normalize=True if transmission is in units of inverse energy. (When transmission is given in these units, the absolute value is usually not significant; normalizing gives more reasonable transmission values.) Default is False.

trim_level : float, optional

If given, crop bandpass to region where transmission is above this fraction of the maximum transmission. For example, if maximum transmission is 0.5, trim_level=0.001 will remove regions where transmission is below 0.0005. Only contiguous regions on the sides of the bandpass are removed.

name : str, optional

Identifier. Default is None.

Examples

Construct a Bandpass and access the input arrays:

>>> b = Bandpass([4000., 4200., 4400.], [0.5, 1.0, 0.5])
>>> b.wave
array([ 4000.,  4200.,  4400.])
>>> b.trans
array([ 0.5,  1. ,  0.5])

Bandpasses act like continuous 1-d functions (linear interpolation is used):

>>> b([4100., 4300.])
array([ 0.75,  0.75])

The effective (transmission-weighted) wavelength is a property:

>>> b.wave_eff
4200.0

The trim_level keyword can be used to remove “out-of-band” transmission upon construction. The following example removes regions of the bandpass with tranmission less than 1 percent of peak:

>>> band = Bandpass([4000., 4100., 4200., 4300., 4400., 4500.],
...                 [0.001, 0.002,   0.5,   0.6, 0.003, 0.001],
...                 trim_level=0.01)
>>> band.wave
array([ 4100.,  4200.,  4300.,  4400.])
>>> band.trans
array([ 0.002,  0.5  ,  0.6  ,  0.003])

While less strictly correct than including the “out-of-band” transmission, only considering the region of the bandpass where transmission is significant can improve model-bandpass overlap as well as performance.

__init__(self, wave, trans, wave_unit=Unit("Angstrom"), trans_unit=Unit(dimensionless), normalize=False, name=None, trim_level=None)[source]

Initialize self. See help(type(self)) for accurate signature.

Methods

__init__(self, wave, trans[, wave_unit, …]) Initialize self.
maxwave(self)
minwave(self)
shifted(self, factor[, name]) Return a new Bandpass instance with all wavelengths multiplied by a factor.

Attributes

wave_eff Effective wavelength of bandpass in Angstroms.
shifted(self, factor, name=None)[source]

Return a new Bandpass instance with all wavelengths multiplied by a factor.

wave_eff

Effective wavelength of bandpass in Angstroms.