Source code for jwst.linearity.linearity_step

import logging

from stdatamodels.jwst import datamodels

from jwst.linearity import linearity
from jwst.stpipe import Step

__all__ = ["LinearityStep"]

log = logging.getLogger(__name__)


[docs] class LinearityStep(Step): """Perform a correction for non-linear detector response, using the polynomial method.""" class_alias = "linearity" spec = """ """ # noqa: E501 reference_file_types = ["linearity"]
[docs] def process(self, step_input): """ Read in linearity correction and apply it to science data. Parameters ---------- step_input : `~stdatamodels.jwst.datamodels.RampModel` The input ramp model. Returns ------- result : `~stdatamodels.jwst.datamodels.RampModel` The output ramp model with linearity correction applied. """ # Open the input data model result = self.prepare_output(step_input, open_as_type=datamodels.RampModel) # Get the name of the linearity reference file to use lin_name = self.get_reference_file(result, "linearity") log.info("Using Linearity reference file %s", lin_name) # Check for a valid reference file if lin_name == "N/A": log.warning("No Linearity reference file found") log.warning("Linearity step will be skipped") result.meta.cal_step.linearity = "SKIPPED" return result # Open the linearity reference file data model lin_model = datamodels.LinearityModel(lin_name) # Do the linearity correction result = linearity.do_correction(result, lin_model) result.meta.cal_step.linearity = "COMPLETE" # Cleanup del lin_model return result