Source code for sofia_redux.pipeline.sofia.flitecam_slitcorr_reduction

# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""FLITECAM Grism Slit Correction Reduction pipeline steps"""

from sofia_redux.pipeline.sofia.sofia_exception import SOFIAImportError
try:
    import sofia_redux.instruments.flitecam
    assert sofia_redux.instruments.flitecam
except ImportError:
    raise SOFIAImportError('FLITECAM modules not installed')


from sofia_redux.pipeline.sofia.flitecam_reduction import FLITECAMReduction
from sofia_redux.pipeline.sofia.flitecam_spectroscopy_reduction \
    import FLITECAMSpectroscopyReduction
from sofia_redux.pipeline.sofia.parameters.flitecam_slitcorr_parameters \
    import FLITECAMSlitcorrParameters
from sofia_redux.pipeline.sofia.forcast_slitcorr_reduction \
    import FORCASTSlitcorrReduction

__all__ = ['FLITECAMSlitcorrReduction']


[docs] class FLITECAMSlitcorrReduction(FLITECAMSpectroscopyReduction, FORCASTSlitcorrReduction): r""" FORCAST spesctroscopic slit correction reduction steps. This reduction object defines specialized reduction steps for generating slit correction calibration data from spectroscopic input files. It is selected by the SOFIA chooser only if a top-level configuration flag is supplied (slitcorr=True). The final output product from this reduction is a FITS file (\*SCR\*.fits) with PRODTYPE = 'slit_correction'. This file can be supplied to the standard spectroscopic pipeline, at the make_profiles step, to specify a new slit response correction. """ def __init__(self): """Initialize the reduction object.""" super().__init__() # descriptive attributes specific to calibration self.name = 'Slit correction' # product type definitions for spectral steps self.prodtype_map.update( {'rectify': 'test_rectified_image', 'make_profiles': 'rectified_image', 'extract_median_spectra': 'median_spectra', 'normalize': 'normalized_image', 'make_slitcorr': 'slit_correction'}) self.prodnames.update( {'rectified_image': 'RIM', 'median_spectra': 'MSM', 'normalized_image': 'NIM', 'slit_correction': 'SCR'}) # invert the map for quick lookup of step from type self.step_map = {v: k for k, v in self.prodtype_map.items()} # default recipe and step names self.recipe = ['check_header', 'correct_linearity', 'make_image', 'stack_dithers', 'make_profiles', 'locate_apertures', 'extract_median_spectra', 'normalize', 'make_slitcorr'] self.processing_steps.update( {'make_profiles': 'Make Profiles', 'extract_median_spectra': 'Extract Median Spectra', 'normalize': 'Normalize Response', 'make_slitcorr': 'Make Slit Correction'})
[docs] def load(self, data, param_class=None): """Call parent load, with spatcal parameters.""" FLITECAMReduction.load( self, data, param_class=FLITECAMSlitcorrParameters)