Source code for jwst.rscd.rscd_step

from ..stpipe import Step
from .. import datamodels
from . import rscd_sub


__all__ = ["RSCD_Step"]


[docs]class RSCD_Step(Step): """ RSCD_Step: Performs an RSCD correction to MIRI data by adding a function of time, frame by frame, to a copy of the input science data model. """ reference_file_types = ['rscd']
[docs] def process(self, input): # Open the input data model with datamodels.RampModel(input) as input_model: # check the data is MIRI data detector = input_model.meta.instrument.detector if detector.startswith('MIR'): # Get the name of the rscd reference file to use self.rscd_name = self.get_reference_file(input_model, 'rscd') self.log.info('Using RSCD reference file %s', self.rscd_name) # Check for a valid reference file if self.rscd_name == 'N/A': self.log.warning('No RSCD reference file found') self.log.warning('RSCD step will be skipped') input_model.meta.cal_step.rscd = 'SKIPPED' return input_model # Check that data has the minimum number of groups/int sci_ngroups = input_model.data.shape[1] # number of groups min_number = 4 if sci_ngroups < min_number: self.log.warning('Input file does not contain enough groups ' 'for RSCD correction to be applied') self.log.warning('RSCD step will be skipped') input_model.meta.cal_step.rscd = 'SKIPPED' return input_model # Load the rscd ref file data model rscd_model = datamodels.RSCDModel(self.rscd_name) # Do the rscd correction result = rscd_sub.do_correction(input_model, rscd_model) # Close the reference file rscd_model.close() else: self.log.warning('RSCD correction is only for MIRI data') self.log.warning('RSCD step will be skipped') result = input_model.copy() result.meta.cal_step.rscd = 'SKIPPED' return result