Source code for jwst.gain_scale.gain_scale

import logging

import numpy as np

log = logging.getLogger(__name__)

__all__ = ["do_correction"]


[docs] def do_correction(output_model, gain_factor): """ Rescale all integrations in an exposure by gain factor. Rescales all integrations in an exposure by gain factor, to account for non-standard detector gain settings. The SCI, ERR, and variance arrays are rescaled. Parameters ---------- output_model : `~stdatamodels.jwst.datamodels.JwstDataModel` Input datamodel to be corrected. gain_factor : float Scale gain factor. Returns ------- output_model : `~stdatamodels.jwst.datamodels.JwstDataModel` Output datamodel with rescaled data. """ # Apply the gain factor to the SCI and ERR arrays log.info(f"Rescaling by {gain_factor}") output_model.data *= gain_factor output_model.err *= gain_factor # Apply the square of the gain factor to the variance arrays, # if they exist if (output_model.var_poisson is not None and np.size(output_model.var_poisson)) > 0: output_model.var_poisson *= gain_factor**2 if (output_model.var_rnoise is not None and np.size(output_model.var_rnoise)) > 0: output_model.var_rnoise *= gain_factor**2 # Set step status info output_model.meta.exposure.gain_factor = gain_factor output_model.meta.cal_step.gain_scale = "COMPLETE" return output_model