Source code for jwst.photom.photom_step

#! /usr/bin/env python
from stdatamodels.jwst import datamodels

from ..stpipe import Step
from . import photom

__all__ = ["PhotomStep"]


[docs] class PhotomStep(Step): """ PhotomStep: Module for loading photometric conversion information from reference files and attaching or applying them to the input science data model """ class_alias = "photom" spec = """ inverse = boolean(default=False) # Invert the operation source_type = string(default=None) # Process as specified source type. mrs_time_correction = boolean(default=True) # Apply the MIRI MRS time dependent correction """ reference_file_types = ['photom', 'area']
[docs] def process(self, input): try: input_model = datamodels.open(input) except IOError: self.log.error('Input can not be opened as a Model.') # Report the detected type of input model model_type = input_model.__class__.__name__ self.log.debug("Input is {}".format(model_type)) if model_type not in ('CubeModel', 'ImageModel', 'SlitModel', 'IFUImageModel', 'MultiSlitModel', 'MultiSpecModel'): self.log.warning("Input is not one of the supported model types: " "CubeModel, ImageModel, IFUImageModel, " "MultiSlitModel, or MultiSpecModel.") # Setup reference files and whether previous correction information # should be used. if self.use_correction_pars and self.correction_pars: self.log.info('Using previously specified correction parameters.') correction_pars = self.correction_pars phot_filename = correction_pars['refs']['photom'] area_filename = correction_pars['refs']['area'] else: correction_pars = None phot_filename = self.get_reference_file(input_model, 'photom') area_filename = self.get_reference_file(input_model, 'area') self.log.info('Using photom reference file: %s', phot_filename) self.log.info('Using area reference file: %s', area_filename) # Check for a valid photom reference file if phot_filename == 'N/A': self.log.warning('No PHOTOM reference file found') self.log.warning('Photom step will be skipped') result = input_model.copy() result.meta.cal_step.photom = 'SKIPPED' return result # Do the correction phot = photom.DataSet(input_model, self.inverse, self.source_type, self.mrs_time_correction, correction_pars) result = phot.apply_photom(phot_filename, area_filename) result.meta.cal_step.photom = 'COMPLETE' self.correction_pars = phot.correction_pars self.correction_pars['refs'] = {'photom': phot_filename, 'area': area_filename} return result