Source code for kcwidrp.primitives.CorrectGain

from keckdrpframework.primitives.base_primitive import BasePrimitive
from kcwidrp.primitives.kcwi_file_primitives import parse_imsec, \
    kcwi_fits_writer


[docs]class CorrectGain(BasePrimitive): """Convert raw data numbers to electrons""" def __init__(self, action, context): BasePrimitive.__init__(self, action, context) self.logger = context.pipeline_logger def _perform(self): # Header keyword to update key = 'GAINCOR' keycom = 'Gain corrected?' # print(self.action.args.ccddata.header) number_of_amplifiers = self.action.args.namps for amplifier in range(number_of_amplifiers): # get amp section section = self.action.args.ccddata.header['ATSEC%d' % (amplifier + 1)] parsed_section, read_forward = parse_imsec(section) # get gain for this amp gain = self.action.args.ccddata.header['GAIN%d' % (amplifier + 1)] self.logger.info( "Applying gain correction of %.3f in section %s" % (gain, self.action.args.ccddata.header['ATSEC%d' % (amplifier + 1)])) self.action.args.ccddata.data[ parsed_section[0]:(parsed_section[1]+1), parsed_section[2]:(parsed_section[3]+1)] *= gain self.action.args.ccddata.header[key] = (True, keycom) self.action.args.ccddata.header['BUNIT'] = ('electron', 'Pixel units') self.action.args.ccddata.unit = 'electron' log_string = CorrectGain.__module__ self.action.args.ccddata.header['HISTORY'] = log_string self.logger.info(log_string) if self.config.instrument.saveintims: kcwi_fits_writer(self.action.args.ccddata, table=self.action.args.table, output_file=self.action.args.name, output_dir=self.config.instrument.output_directory, suffix="gain") return self.action.args
# END: class CorrectGain()