Source code for pystellibs.basel

""" BaSeL 2.2 library """
import numpy as np
from .simpletable import SimpleTable
try:
    from astropy.io import fits as pyfits
except ImportError:
    import pyfits

from .stellib import Stellib
from .config import libsdir


[docs]class BaSeL(Stellib): """ BaSeL 2.2 library derived class This library + Rauch is used in Pegase.2 The BaSeL stellar spectral energy distribution (SED) libraries are libraries of theoretical stellar SEDs recalibrated using empirical photometric data. Therefore, we call them semi-empirical libraries. The BaSeL 2.2 library was calibrated using photometric data from solar metallicity stars. References ---------- * Lejeune, Cuisiner, and Buser, 1998 A&AS, 130, 65 * can be downloaded http://www.astro.unibas.ch/BaSeL_files/BaSeL2_2.tar.gz """ def __init__(self, *args, **kwargs): self.name = 'BaSeL 2.2' self.source = libsdir + '/stellib_BaSeL_v2.2.grid.fits' self._load_() Stellib.__init__(self, *args, **kwargs) def _load_(self): with pyfits.open(self.source) as f: # load data self._getWaveLength_(f) self._getTGZ_(f) self._getSpectra_(f) self._getWaveLength_units(f) def _getWaveLength_(self, f): self._wavelength = f[0].data[-1] def _getWaveLength_units(self, f): self.wavelength_unit = 'angstrom' def _getTGZ_(self, f): self.grid = SimpleTable(f[1].data) self.grid.header.update(f[1].header.items()) self.grid.header['NAME'] = 'TGZ'
[docs] def bbox(self, dlogT=0.05, dlogg=0.25): """ Boundary of Basel 2.2 library Parameters ---------- dlogT: float log-temperature tolerance before extrapolation limit dlogg: float log-g tolerance before extrapolation limit Returns ------- bbox: ndarray (logT, logg) edges of the bounding polygon """ bbox = [(3.301 - dlogT, 5.500 + dlogg), (3.301 - dlogT, 3.500 - dlogg), (3.544 - dlogT, 3.500 - dlogg), (3.544 - dlogT, 1.000), (3.477, 0.600 + dlogg), (3.447 - dlogT, 0.600 + dlogg), (3.398 - dlogT, 0.280 + dlogg), (3.398 - dlogT, -1.020 - dlogg), (3.398, -1.020 - dlogg), (3.447, -1.020 - dlogg), (3.505 + dlogT, -0.700 - dlogg), (3.544 + dlogT, -0.510 - dlogg), (3.574 + dlogT, -0.290 - dlogg), (3.602 + dlogT, 0.000 - dlogg), (3.778, 0.000 - dlogg), (3.778 + dlogT, 0.000), (3.875 + dlogT, 0.500), (3.929 + dlogT, 1.000), (3.954 + dlogT, 1.500), (4.021 + dlogT, 2.000 - dlogg), (4.146, 2.000 - dlogg), (4.146 + dlogT, 2.000), (4.279 + dlogT, 2.500), (4.415 + dlogT, 3.000), (4.491 + dlogT, 3.500), (4.544 + dlogT, 4.000), (4.602 + dlogT, 4.500), (4.699 + dlogT, 5.000 - dlogg), (4.699 + dlogT, 5.000 + dlogg), (3.525 + dlogT, 5.000 + dlogg), (3.525 + dlogT, 5.500 + dlogg), (3.301 - dlogT, 5.500 + dlogg) ] return np.array(bbox)
def _getSpectra_(self, f): self.spectra = f[0].data[:-1] @property def logg(self): return self.grid['logg'] @property def logT(self): return self.grid['logT'] @property def Teff(self): return self.grid['Teff'] @property def Z(self): return self.grid['Z'] @property def logZ(self): return self.grid['logZ'] @property def NHI(self): return self.grid['NHI'] @property def NHeI(self): return self.grid['NHeI'] @property def NHeII(self): return self.grid['NHeII']