Linearizer#

class lsst.ip.isr.Linearizer(table=None, **kwargs)#

Bases: IsrCalib

Parameter set for linearization.

These parameters are included in lsst.afw.cameraGeom.Amplifier, but should be accessible externally to allow for testing.

Parameters#

tablenumpy.array, optional

Lookup table; a 2-dimensional array of floats:

  • one row for each row index (value of coef[0] in the amplifier)

  • one column for each image value

To avoid copying the table the last index should vary fastest (numpy default “C” order)

detectorlsst.afw.cameraGeom.Detector, optional

Detector object. Passed to self.fromDetector() on init.

loglogging.Logger, optional

Logger to handle messages.

kwargsdict, optional

Other keyword arguments to pass to the parent init.

Raises#

RuntimeError

Raised if the supplied table is not 2D, or if the table has fewer columns than rows (indicating that the indices are swapped).

Notes#

The linearizer attributes stored are:

hasLinearitybool

Whether a linearity correction is defined for this detector.

overridebool

Whether the detector parameters should be overridden.

ampNameslist [str]

List of amplifier names to correct.

inputGaindict [str, float]

Dictionary keyed by amplifirer name containing the input gain from the PTC used to construct this linearizer.

linearityCoeffsdict [str, np.ndarray]

Coefficients to use in correction. Indexed by amplifier names. The format of the array depends on the type of correction to apply.

linearityTypedict [str, str]

Type of correction to use, indexed by amplifier names.

linearityBBoxdict [str, lsst.geom.Box2I]

Bounding box the correction is valid over, indexed by amplifier names.

fitParamsdict [str, np.ndarray], optional

Linearity fit parameters used to construct the correction coefficients, indexed as above.

fitParamsErrdict [str, np.ndarray], optional

Uncertainty values of the linearity fit parameters used to construct the correction coefficients, indexed as above.

fitChiSqdict [str, float], optional

Chi-squared value of the linearity fit, indexed as above.

fitResidualsdict [str, np.ndarray], optional

Residuals of the fit, indexed as above. Used for calculating photodiode corrections

fitResidualsSigmaMaddict [str, float], optional

Robust median-absolute-deviation of fit residuals, scaled by the signal level.

fitResidualsUnmaskeddict [str, np.ndarray], optional

Same as fitResiduals, but all outliers are included and not masked as nans.

fitResidualsModeldict [str, np.ndarray], optional

The model count level for each of the fitResiduals.

linearFitThe linear fit to the low flux region of the curve.

[intercept, slope].

tableDatanp.ndarray, optional

Lookup table data for the linearity correction.

inputAbscissadict [str, np.ndarray], optional

Input abscissa used to construct linearizer (usually photodiode or exposure time).

inputOrdinatedict [str, np.ndarray], optional

Input ordinate used to construct linearizer (raw mean counts).

inputMaskdict [str, np.ndarray], optional

Input mask used for the fitting.

inputGroupingIndexdict [str, np.ndarray], optional

Input grouping index used for fitting.

inputNormalizationdict [str, np.ndarray], optional

Input normalization that was applied to the abscissa for each pair from the PTC used for the linearization fit.

absoluteReferenceAmplifierstr, optional

Amplifier used for the reference for absolute linearization (DoubleSpline) mode.

Version 1.4 adds linearityTurnoff and linearityMaxSignal. Version 1.5 adds fitResidualsUnmasked, inputAbscissa,

inputOrdinate, inputMask, inputGroupingIndex, fitResidualsModel, and inputNormalization.

Version 1.6 adds absoluteReferenceAmplifier. Version 1.7 adds inputGain.

Methods Summary

applyLinearity(image[, detector, log, gains])

Apply the linearity to an image.

fromDetector(detector)

Read linearity parameters from a detector.

fromDict(dictionary)

Construct a calibration from a dictionary of properties

fromTable(tableList)

Read linearity from a FITS file.

getLinearityTypeByName(linearityTypeName)

Determine the linearity class to use from the type name.

toDict()

Return linearity parameters as a dict.

toTable()

Construct a list of tables containing the information in this calibration.

updateMetadata([setDate])

Update metadata keywords with new values.

validate([detector, amplifier])

Validate linearity for a detector/amplifier.

Methods Documentation

applyLinearity(image, detector=None, log=None, gains=None)#

Apply the linearity to an image.

If the linearity parameters are populated, use those, otherwise use the values from the detector.

Parameters#

imageimage

Image to correct.

detectordetector, optional

Detector to use to determine exposure trimmed state. If supplied, but no other linearity information is provided by the calibration, then the static solution stored in the detector will be used.

logLogger, optional

Log object to use for logging.

gainsdict [str, float], optional

Dictionary of amp name to gain. If this is provided then linearity terms will be converted from adu to electrons. Only used for Spline linearity corrections.

fromDetector(detector)#

Read linearity parameters from a detector.

Parameters#

detectorlsst.afw.cameraGeom.detector

Input detector with parameters to use.

Returns#

caliblsst.ip.isr.Linearizer

The calibration constructed from the detector.

classmethod fromDict(dictionary)#

Construct a calibration from a dictionary of properties

Parameters#

dictionarydict

Dictionary of properties

Returns#

caliblsst.ip.isr.Linearity

Constructed calibration.

Raises#

RuntimeError

Raised if the supplied dictionary is for a different calibration.

classmethod fromTable(tableList)#

Read linearity from a FITS file.

This method uses the fromDict method to create the calibration, after constructing an appropriate dictionary from the input tables.

Parameters#

tableListlist [astropy.table.Table]

afwTable read from input file name.

Returns#

linearityLinearizer`

Linearity parameters.

Notes#

The method reads a FITS file with 1 or 2 extensions. The metadata is read from the header of extension 1, which must exist. Then the table is loaded, and the [‘AMPLIFIER_NAME’, ‘TYPE’, ‘COEFFS’, ‘BBOX_X0’, ‘BBOX_Y0’, ‘BBOX_DX’, ‘BBOX_DY’] columns are read and used to set each dictionary by looping over rows. Extension 2 is then attempted to read in the try block (which only exists for lookup tables). It has a column named ‘LOOKUP_VALUES’ that contains a vector of the lookup entries in each row.

getLinearityTypeByName(linearityTypeName)#

Determine the linearity class to use from the type name.

Parameters#

linearityTypeNamestr

String name of the linearity type that is needed.

Returns#

linearityTypeLinearizeBase

The appropriate linearity class to use. If no matching class is found, None is returned.

toDict()#

Return linearity parameters as a dict.

Returns#

outDict : dict:

toTable()#

Construct a list of tables containing the information in this calibration.

The list of tables should create an identical calibration after being passed to this class’s fromTable method.

Returns#

tableListlist [astropy.table.Table]

List of tables containing the linearity calibration information.

updateMetadata(setDate=False, **kwargs)#

Update metadata keywords with new values.

This calls the base class’s method after ensuring the required calibration keywords will be saved.

Parameters#

setDatebool, optional

Update the CALIBDATE fields in the metadata to the current time. Defaults to False.

kwargs :

Other keyword parameters to set in the metadata.

validate(detector=None, amplifier=None)#

Validate linearity for a detector/amplifier.

Parameters#

detectorlsst.afw.cameraGeom.Detector, optional

Detector to validate, along with its amplifiers.

amplifierlsst.afw.cameraGeom.Amplifier, optional

Single amplifier to validate.

Raises#

RuntimeError

Raised if there is a mismatch in linearity parameters, and the cameraGeom parameters are not being overridden.