Appendix A: Catalogs and Spectral Atlases

There are several spectral atlases consisting of both observed and model data, which are available in FITS table format for use with stsynphot. They are as tabulated below.

Current descriptions and access to all available calibration spectra and astronomical catalogs be found at HLSP Reference Atlases, which supersedes this documentation in case of conflicting information. The data files are available at STScI on all science computing clusters in the $PYSYN_CDBS directory. Off-site users can obtain these data via HTTP (see Installation and Setup).

Stellar models:

Atlas/Catalog

Installation Path

Interpolatable

Castelli-Kurucz Atlas

$PYSYN_CDBS/grid/ck04models

Yes

Kurucz Atlas

$PYSYN_CDBS/grid/k93models

Phoenix Models

$PYSYN_CDBS/grid/phoenix

HST Calibration Spectra

$PYSYN_CDBS/calspec

No

Pickles Library

$PYSYN_CDBS/grid/pickles

Buser-Kurucz Atlas

$PYSYN_CDBS/grid/bkmodels

Bruzual Atlas

$PYSYN_CDBS/grid/bz77

Gunn-Stryker Atlas

$PYSYN_CDBS/grid/gunnstryker

Bruzual-Persson-Gunn-Stryker Atlas

$PYSYN_CDBS/grid/bpgs

Jacoby-Hunter-Christian Atlas

$PYSYN_CDBS/grid/jacobi

Non-stellar models:

Atlas/Catalog

Installation Path

Interpolatable

Bruzual-Charlot Atlas

$PYSYN_CDBS/grid/bc95/templates

No

Kinney-Calzetti Atlas

$PYSYN_CDBS/grid/kc96

AGN Atlas

$PYSYN_CDBS/grid/agn

Galactic Atlas

$PYSYN_CDBS/grid/galactic

Brown Atlas

$PYSYN_CDBS/grid/brown

Other Non-Stellar Objects

$PYSYN_CDBS/etc/source

Castelli-Kurucz Atlas

The $PYSYN_CDBS/grid/ck04models directory contains ATLAS9 stellar atmosphere models by Castelli & Kurucz 2004. There are about 4300 models for a wide range of metallicities, effective temperatures and gravities. The ones available in CRDS are from “the Grids of ATLAS9-ODFNEW Models and Fluxes” from Dr. F. Castelli’s webpage (created on January 2007) and also available from Dr. R. Kurucz’s webpage. See Castelli-Kurucz 2004 atlas README file for more details. The atlas data files are organized in a similar naming convention as Kurucz Atlas, and are easily accessible using grid_to_spec() (also see Catalogs and Spectral Atlases).

The example below generates a spectrum with metallicity [M/H] = +0.1, temperature \(T_{\text{eff}} = 10000 \text{K}\), and gravity \(\log g = 3.0\):

>>> import stsynphot as stsyn
>>> sp = stsyn.grid_to_spec('ck04models', 10000, 0.1, 3.0)  

Kurucz Atlas

The $PYSYN_CDBS/grid/k93models directory contains the Kurucz 1993 Atlas of Model Atmospheres. The atlas contains about 7600 stellar atmosphere models for a wide range of metallicities, effective temperatures, and gravities. These LTE models have improved opacities and are computed with a finer wavelength and temperature resolution than the Buser-Kurucz Atlas. The micro-turbulent velocity is 2 km/s. This atlas is installed in CRDS from the Kurucz database at Goddard Space Flight Center. The original atlas (CD-ROM No. 13) was created on August 22, 1993 and can be obtained from Dr. R. Kurucz. Considering that the entire atlas occupies close to 70 MB of disk space, many applications could be satisfied by a copy of the solar metallicity spectra only (Table 2 of the README file). See Kurucz 1993 atlas README file for more details.

The models are in FLAM surface flux units. If the number of counts or the absolute flux is needed, the model spectrum must be renormalized appropriately.

The following example shows the header from one of the atlas data files. This file contains all the models for a star of metallicity [M/H] = 0.0 (p00) and effective temperature \(T_{\text{eff}} = 8000 \text{K}\) (8000), which cover a range of gravities from \(\log g = +1.0\) (g10) to \(\log g = +5.0\) (g50). In this example, \(\log g = +0.0\) and \(\log g = +0.5\) are unavailable, thus g00 and g05 are not listed in the header, and their corresponding columns in the file are filled with zeroes:

>>> import os
>>> from astropy.io import fits
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'k93models',
...     'kp00', 'kp00_8000.fits')  
>>> hdr = fits.getheader(filename)  
>>> hdr  
SIMPLE  =                    T / file does conform to FITS standard
BITPIX  =                   16 / number of bits per data pixel
NAXIS   =                    0 / number of data axes
EXTEND  =                    T / FITS dataset may contain extensions
COMMENT   FITS (Flexible Image Transport System) format defined in...
COMMENT   Astrophysics Supplement Series v44/p363, v44/p371, ...
COMMENT   Contact the NASA Science Office of Standards and...
COMMENT   FITS Definition document #100 and other FITS information.
ORIGIN  = 'STScI-STSDAS/TABLES' / Tables version 1999-03-22
FILENAME= 'kp00_8000.fits'     / name of file
TEFF    =                 8000
LOG_Z   = 0.00000000000000E+00
HISTORY   g10
HISTORY   g15
HISTORY   g20
HISTORY   g25
HISTORY   g30
HISTORY   g35
HISTORY   g40
HISTORY   g45
HISTORY   g50
HISTORY   Kurucz model atmospheres (1993)
HISTORY   Fluxes tabulated in units of erg/s/cm^2/A
HISTORY   are surface fluxes. To transform to observed
HISTORY   fluxes multiply by (R/D)^2 where R is the
HISTORY   radius of the star and D the distance.
HISTORY   Each column in the table represents the
HISTORY   spectrum of a star for the same metallicity
HISTORY   and effective temperature but different gravity.

The example below shows you how to manually select the flux for a specific model characterized by a given metallicity, effective temperature, and gravity. The filename kp01_10000 means [M/H] = +0.1 (p01) and \(T_{\text{eff}} = 10000 \text{K}\) (10000). The column name g30 means \(\log g = 3.0\):

>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'k93models',
...     'kp01', 'kp01_10000.fits')  
>>> spec = fits.getdata(filename)  
>>> wave = spec['WAVELENGTH']  
>>> flux = spec['g30']  

The easier way is to use grid_to_spec() (also see Catalogs and Spectral Atlases). Equivalent to the example above:

>>> import stsynphot as stsyn
>>> sp = stsyn.grid_to_spec('k93models', 10000, 0.1, 3.0)  

Phoenix Models

The $PYSYN_CDBS/grid/phoenix directory contains models provided by F. Allard et al. and can be found in the Star, Brown Dwarf, and Planet Simulator. They use static, spherical symmetric, 1D simulations to completely describe the atmospheric emission spectrum. The models account for the formation of molecular bands, such as those of water vapor, methane, or titanium dioxide, solving for the transfer equation over more than 20,000 wavelength points on average, producing synthetic spectra with 2 Angstrom resolution. The line selection is repeated at each iteration of the model until it has converged and the thermal structure obtained. The models here are calculated with a cloud model, valid across the entire parameter range. See Phoenix models README file for more details. The atlas data files are organized in a similar naming convention as Kurucz Atlas, and are easily accessible using grid_to_spec() (also see Catalogs and Spectral Atlases).

The example below generates a spectrum with metallicity [M/H] = +0.1, temperature \(T_{\text{eff}} = 10000 \text{K}\), and gravity \(\log g = 3.0\):

>>> import stsynphot as stsyn
>>> sp = stsyn.grid_to_spec('phoenix', 10000, 0.1, 3.0)  

HST Calibration Spectra

The $PYSYN_CDBS/calspec directory contains the composite stellar spectra that are the fundamental flux standards for HST calibrations. All files are in machine-independent binary FITS table format. Information about the pedigree of a given spectrum is in the header of the FITS table file, which can be read using astropy.io.fits. The example below reads the header from G191B2B spectrum and then loads it into stsynphot:

>>> import os
>>> from astropy.io import fits
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'calspec', 'g191b2b_mod_010.fits')  
>>> hdr = fits.getheader(filename)  
>>> hdr  
SIMPLE  =                    T / Fits standard
BITPIX  =                   16 / Bits per pixel
NAXIS   =                    0 / Number of axes
EXTEND  =                    T / File may contain extensions
ORIGIN  = 'NOAO-IRAF FITS Image Kernel July 2003' / FITS file originator
DATE    = '2015-01-06T17:00:20' / Date FITS file was generated
IRAF-TLM= '2015-01-06T17:00:24' / Time of last modification
SOURCE  = 'Bohlin, Gordon, Tremblay 2014, PASP, 126, 711' /
COMMENT = 'Rauch: METAL LINE BLANKETED NLTE MODEL' /
TEFFGRAV= '59000/7.60'         /Teff/log g for model
DESCRIP = 'MODEL Fluxes --------------------------------------------------'
DBTABLE = 'CRSPECTRUM'         /
TARGETID= 'G191B2B_MOD'        /
AIRMASS =              0.00000 /mean airmass of the observation
USEAFTER= 'Jan 01 2000 00:00:00' /
PEDIGREE= 'MODEL   '           /
WMIN    =        100.000000000 /Minimum Wavelength
WMAX    =        400104.068000 /Maximum Wavelength
FILENAME= 'g191b2b_mod_010.fits' /
HISTORY Model directory: /internal/1/models/rauch/
HISTORY Model 0059000_7.60_ABUND_015_LF_000100-400000
HISTORY Vega Flux at 5557.5A (5556 air) = 3.44e-9 erg s-1 cm-2 A-1
HISTORY Vega & Star elect/s= 12326689.78     237.70
HISTORY Model Reddened by E(B-V)=0.0005
HISTORY Model Normalization factor=   2.1760340e-30
HISTORY Written by newmakstd.pro 23-Dec-2014 10:15:43.00
HISTORY Vacuum Wavelengths
HISTORY UNITS: Wavelength(Angstroms), Flux(erg s-1 cm-2 Ang-1)
HISTORY Vega Flux(5556A)=3.44e-9 (Bohlin 2014, AJ, 147, 127)
HISTORY INPUT FILE: /internal/1/wd/dat/g191.rauch59000-nlte
HISTORY Written by MAKE_MOD_CALSPEC.pro  23-Dec-2014 10:20:09.00
>>> sp = SourceSpectrum.from_file(filename)  

Note that in some cases, the calibration spectrum is truncated in the blue or the red at wavelength longer or shorter, respectively, than the sensitivity limit of the instrument. As a result, stsynphot may underestimate the total counts. Users should check that the wavelength range of the spectrum they are using is compatible with the wavelength range of the calculation they require.

See CALSPEC Calibration Database for available spectra and their descriptions.

Pickles Library

The $PYSYN_CDBS/grid/pickles directory contains the stellar spectral flux library by Pickles (1998). This library of wide spectral coverage, consists of 131 flux calibrated stellar spectra, encompassing all normal spectral types and luminosity classes at solar abundance, and metal-weak and metal-rich F-K dwarf and G-K giant components. Each spectrum in the library is a combination of several sources overlapping in wavelength coverage. See Pickles library README file for more details.

The library data were obtained from its webpage and divided into two sub-directories below:

  • dat_uvi (a.k.a. UVILIB) groups all spectra derived from all UV, optical, and near-IR sources, in the wavelength range 1150-10620 Angstrom. It has complete spectral coverage for all components over this wavelength range. Its data files are named “pickles_ttt.fits”, where ttt is a number ranging from 1 to 131.

  • dat_uvk (a.k.a. UVKLIB) groups all spectra that were derived by combining the UVILIB spectra with additional IR data to a long wavelength limit of 25000 Angstrom. Its data files are named “pickles_uk_ttt.fits”, where ttt is a number ranging from 1 to 131.

The example below loads a source spectrum of spectral type G5V from the UVKLIB subset of the library:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'pickles',
...     'dat_uvk', 'pickles_uk_27.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Buser-Kurucz Atlas

The $PYSYN_CDBS/grid/bkmodels directory contains an extensive collection of Kurucz model atmosphere spectra provided by R. Buser, covering a wide range in metallicity, effective temperature, and gravity. For all the spectra, fluxes are given mostly with a resolution of 25 Angstrom on a uniform grid of wavelengths from the UV to the IR. Thus, the atlas is especially suited for synthetic photometry applications, including the calibration and the interpretation of HST observations (Koornneef et al. 1986). The atlas is grouped into different “blocks” (A, B, C, D, M, and S), corresponding to the physical distinctions of their underlying model atmospheres. It consists of 1434 files, each of which represents a metal-line blanketed flux spectrum for a theoretical stellar model atmosphere. Data files are named “bk_mnnnn.fits”, where m is the block code and nnnn the sequence number. See Buser-Kurucz atlas README file for more details, in including the mapping of filenames to their respective parameter specifications.

The example below loads Block S (models for the Sun and Vega) with \(T_{\text{eff}} = 5770 \text{K}\) and gravity \(\log g = 4.44\):

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'bkmodels', 'bk_s0001.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Bruzual Atlas

The $PYSYN_CDBS/grid/bz77 directory contains 77 stellar spectra that are frequently used in the synthesis of galaxy spectra. They were provided by Gustavo Bruzual. Each spectrum is stored in a table named “bz_nn.fits”, where nn runs from 1 to 77. See Bruzual atlas README file for a mapping of filenames to their respective spectral types.

The example below loads a source spectrum of spectral type G5V from the atlas:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'bz77', 'bz_27.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Gunn-Stryker Atlas

The $PYSYN_CDBS/grid/gunnstryker contains the optical spectrophotometric catalog of 175 stars, covering a complete range of spectral types and luminosity classes from the observations of Gunn & Stryker (1983). The spectra cover the wavelength range 3130 to 10800 Angstrom. Each spectrum is stored in a table named “gs_nnn.fits”, where nnn runs from 1 to 175. See Gunn-Stryker atlas README file for a mapping of filenames to their respective spectral types.

The example below loads a source spectrum of spectral type G5V from the atlas:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'gunnstryker', 'gs_44.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Bruzual-Persson-Gunn-Stryker Atlas

The $PYSYN_CDBS/grid/bpgs directory contains the extension of Gunn-Stryker Atlas, where the spectral data have been extended into both the UV and the IR. The IR data are from Strecker et al. (1979) and other unpublished sources. The IR and the optical data are tied together by the \(V – K\) colors. Each spectrum is stored in a table named “bpgs_nnn.fits”, where nnn runs from 1 to 175. See Bruzual-Persson-Gunn-Stryker atlas README file for a mapping of filenames to their respective spectral types.

Note that the spectral data for all of the stars in this atlas have been arbitrarily renormalized to a V magnitude of zero. Therefore, in order to use these data for calculations of absolute photometry, they must be renormalized to their appropriate absolute levels. In addition, the magnitudes and colors stored in their header keywords are not on the standard UBVRI system, but rather “scanner” magnitudes and colors that were synthesized by the authors from the observed spectra (see Gunn & Stryker 1983).

The example below loads a source spectrum of spectral type G5V from the atlas:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'bpgs', 'bpgs_44.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Jacoby-Hunter-Christian Atlas

The $PYSYN_CDBS/grid/jacobi directory contains the optical spectrophotometric atlas of 161 stars having spectral classes O through M, and luminosity classes V, III, and I. The data are from the observations of Jacoby, Hunter, & Christian (1984). They cover the wavelength range 3510 to 7427 Angstroms at a resolution of approximately 4.5 Angstrom. Each spectrum is stored in a table named “jc_nnn.fits”, where nnn runs from 1 to 161. See Jacoby-Hunter-Christian atlas README file for a mapping of filenames to their respective spectral types.

The example below loads a source spectrum of spectral type G0V from the atlas:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'jacobi', 'jc_43.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Bruzual-Charlot Atlas

The $PYSYN_CDBS/grid/bc95/templates directory contains a library of galaxy spectra computed using the Isochrone Synthesis Spectral Evolutionary Code from Bruzual & Charlot (December 1995 version). The spectra represent bursts characterized by a Salpeter IMF with different ranges in lower and upper mass limits, and at several ages after the burst. Spectra for instantaneous and composite bursts are both available. Each spectrum has 1187 wavelength points covering the 0.01 to 100 micron range. The flux unit is solar luminosity per Angstrom. The nebular contribution to the SED (i.e., emission lines and nebular continuum) is not included in the spectra. See Bruzual-Charlot atlas README file for available spectra and their descriptions.

The example below loads a galaxy spectrum with Salpeter IMF containing mass limits from 0.1-30 \(M_{\odot}\) and \(50 \times 10^{5}\) year-old instantaneous burst:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'bc95',
...     'templates', 'bc95_c_50E5.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Kinney-Calzetti Atlas

The $PYSYN_CDBS/grid/kc96 directory contains an homogeneous set of 12 spectral templates of galaxies covering the UV, optical, and near-IR wavelength range up to about 1 micron. Templates include various morphological types (Kinney et al. 1996) and starburst galaxies (Calzetti et al. 1994). The flux of the spectral templates has been normalized to a visual magnitude of 12.5 STMAG. See Kinney-Calzetti atlas README file for more details.

The example below loads a galaxy spectrum from the elliptical template:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'kc96',
...     'elliptical_template.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

AGN Atlas

The $PYSYN_CDBS/grid/agn directory contains a few spectral templates of AGN’s ranging from LINER to Seyfert and bright QSO (Calzetti 1995, private communication; Francis et al. 1991; J. R. Walsh, private communication). The flux of the LINER and Seyfert 2 templates is normalized to a Johnson V magnitude of 12.5 STMAG, while the Seyfert 1 and QSO templates are normalized to a Johnson B magnitude of 12.5 STMAG. See AGN atlas README file for more details.

The example below loads a Seyfert 2 spectrum:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'agn', 'seyfert2_template.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Galactic Atlas

The $PYSYN_CDBS/grid/galactic directory contains the model spectra of Orion nebula and NGC 7009 planetary nebula (J. R. Walsh, private communication). See Galactic atlas README file for more details.

The example below loads the spectrum for Orion nebula:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'galactic',
...     'orion_template.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Brown Atlas

The $PYSYN_CDBS/grid/brown directory contains 129 spectral energy distributions for nearby galaxies, with wavelength coverage spanning from the ultraviolet to the mid-infrared (Brown et al. 2014). See TRDS Brown Atlas for more details.

The example below loads the spectrum for Arp 256 N:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'grid', 'brown',
...     'arp_256_n_spec.fits')  
>>> sp = SourceSpectrum.from_file(filename)  

Other Non-Stellar Objects

The $PYSYN_CDBS/etc/source directory contains spectra for various non-stellar objects used in ETC. See Non-stellar objects README file for more details.

The example below loads a spectrum for Gliese 229B brown dwarf:

>>> import os
>>> from synphot import SourceSpectrum
>>> filename = os.path.join(
...     os.environ['PYSYN_CDBS'], 'etc', 'source', 'gl229b_001.dat')  
>>> sp = SourceSpectrum.from_file(filename)