Source code for mosviz.loaders.deimos_loaders

import numpy as np
from astropy.io import fits
from astropy.wcs import WCS
from glue.core import Data
from glue.core.coordinates import coordinates_from_wcs

from .utils import mosviz_spectrum1d_loader, mosviz_spectrum2d_loader, mosviz_level2_loader


__all__ = ['deimos_spectrum1D_reader', 'deimos_spectrum2D_reader']


[docs]@mosviz_spectrum1d_loader('DEIMOS 1D Spectrum') def deimos_spectrum1D_reader(file_name): """ Data loader for Keck/DEIMOS 1D spectra. This loads the 'Bxspf-B' (extension 1) and 'Bxspf-R' (extension 2) and appends them together to proudce the combined Red/Blue Spectrum along with their Wavelength and Inverse Variance arrays. """ with fits.open(file_name) as hdulist: data = Data(label='1D Spectrum') hdulist[1].header['CTYPE1'] = 'WAVE' hdulist[1].header['CUNIT1'] = 'Angstrom' data.header = hdulist[1].header wcs = WCS(hdulist[1].header) data.coords = coordinates_from_wcs(wcs) full_wl = np.append(hdulist[1].data['LAMBDA'][0], hdulist[2].data['LAMBDA'][0]) full_spec = np.append(hdulist[1].data['SPEC'][0], hdulist[2].data['SPEC'][0]) full_ivar = np.append(hdulist[1].data['IVAR'][0], hdulist[2].data['IVAR'][0]) data.add_component(full_wl, 'Wavelength') data.add_component(full_spec, 'Flux') data.add_component(1 / np.sqrt(full_ivar), 'Uncertainty') return data
[docs]@mosviz_spectrum2d_loader('DEIMOS 2D Spectrum') def deimos_spectrum2D_reader(file_name): """ Data loader for Keck/DEIMOS 2D spectra. This loads only the Flux and Inverse variance. Wavelength information comes from the WCS. """ with fits.open(file_name) as hdulist: data = Data(label='2D Spectrum') hdulist[1].header['CTYPE1'] = 'WAVE' hdulist[1].header['CUNIT1'] = 'Angstrom' hdulist[1].header['CTYPE2'] = 'Spatial Y' wcs = WCS(hdulist[1].header) # original WCS has both axes named "LAMBDA", glue requires unique component names data.coords = coordinates_from_wcs(wcs) data.header = hdulist[1].header data.add_component(hdulist[1].data['FLUX'][0], 'Flux') data.add_component(1 / np.sqrt(hdulist[1].data['IVAR'][0]), 'Uncertainty') return data