Linearizer¶
- class lsst.ip.isr.Linearizer(table=None, **kwargs)¶
Bases:
IsrCalibParameter set for linearization.
These parameters are included in
lsst.afw.cameraGeom.Amplifier, but should be accessible externally to allow for testing.- Parameters:
- table
numpy.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)
- detector
lsst.afw.cameraGeom.Detector, optional Detector object. Passed to self.fromDetector() on init.
- log
logging.Logger, optional Logger to handle messages.
- kwargs
dict, optional Other keyword arguments to pass to the parent init.
- table
- 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:
- hasLinearity
bool Whether a linearity correction is defined for this detector.
- override
bool Whether the detector parameters should be overridden.
- ampNames
list[str] List of amplifier names to correct.
- linearityCoeffs
dict[str,numpy.array] Coefficients to use in correction. Indexed by amplifier names. The format of the array depends on the type of correction to apply.
- linearityType
dict[str,str] Type of correction to use, indexed by amplifier names.
- linearityBBox
dict[str,lsst.geom.Box2I] Bounding box the correction is valid over, indexed by amplifier names.
- fitParams
dict[str,numpy.array], optional Linearity fit parameters used to construct the correction coefficients, indexed as above.
- fitParamsErr
dict[str,numpy.array], optional Uncertainty values of the linearity fit parameters used to construct the correction coefficients, indexed as above.
- fitChiSq
dict[str,float], optional Chi-squared value of the linearity fit, indexed as above.
- fitResiduals
dict[str,numpy.array], optional Residuals of the fit, indexed as above. Used for calculating photdiode corrections
- fitResidualsSigmaMad
dict[str,float], optional Robust median-absolute-deviation of fit residuals, scaled by the signal level.
- linearFitThe linear fit to the low flux region of the curve.
[intercept, slope].
- tableData
numpy.array, optional Lookup table data for the linearity correction.
Attributes Summary
Methods Summary
apply(target)Method to apply the calibration to the target object.
applyLinearity(image[, detector, log])Apply the linearity to an image.
calibInfoFromDict(dictionary)Handle common keywords.
determineCalibClass(metadata, message)Attempt to find calibration class in metadata.
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.
Retrieve metadata associated with this calibration.
readFits(filename, **kwargs)Read calibration data from a FITS file.
readText(filename, **kwargs)Read calibration representation from a yaml/ecsv file.
setMetadata(metadata)Store a copy of the supplied metadata with this calibration.
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.
updateMetadataFromExposures(exposures)Extract and unify metadata information.
validate([detector, amplifier])Validate linearity for a detector/amplifier.
writeFits(filename)Write calibration data to a FITS file.
writeText(filename[, format])Write the calibration data to a text file.
Attributes Documentation
- requiredAttributes¶
Methods Documentation
- apply(target)¶
Method to apply the calibration to the target object.
- applyLinearity(image, detector=None, log=None)¶
Apply the linearity to an image.
If the linearity parameters are populated, use those, otherwise use the values from the detector.
- Parameters:
- image
image Image to correct.
- detector
detector Detector to use for linearity parameters if not already populated.
- log
Logger, optional Log object to use for logging.
- image
- calibInfoFromDict(dictionary)¶
Handle common keywords.
This isn’t an ideal solution, but until all calibrations expect to find everything in the metadata, they still need to search through dictionaries.
- Parameters:
- dictionary
dictorlsst.daf.base.PropertyList Source for the common keywords.
- dictionary
- Raises:
- RuntimeError
Raised if the dictionary does not match the expected OBSTYPE.
- classmethod determineCalibClass(metadata, message)¶
Attempt to find calibration class in metadata.
- Parameters:
- Returns:
- calibClass
object The class to use to read the file contents. Should be an
lsst.ip.isr.IsrCalibsubclass.
- calibClass
- Raises:
- ValueError
Raised if the resulting calibClass is the base
lsst.ip.isr.IsrClass(which does not implement the content methods).
- fromDetector(detector)¶
Read linearity parameters from a detector.
- Parameters:
- detector
lsst.afw.cameraGeom.detector Input detector with parameters to use.
- detector
- Returns:
- calib
lsst.ip.isr.Linearizer The calibration constructed from the detector.
- calib
- classmethod fromDict(dictionary)¶
Construct a calibration from a dictionary of properties
- Parameters:
- dictionary
dict Dictionary of properties
- dictionary
- Returns:
- calib
lsst.ip.isr.Linearity Constructed calibration.
- calib
- 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
fromDictmethod to create the calibration, after constructing an appropriate dictionary from the input tables.- Parameters:
- tableList
list[astropy.table.Table] afwTable read from input file name.
- tableList
- Returns:
- linearity
Linearizer` Linearity parameters.
- linearity
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:
- linearityType
LinearizeBase The appropriate linearity class to use. If no matching class is found,
Noneis returned.
- linearityType
- getMetadata()¶
Retrieve metadata associated with this calibration.
- Returns:
- meta
lsst.daf.base.PropertyList Metadata. The returned
PropertyListcan be modified by the caller and the changes will be written to external files.
- meta
- classmethod readFits(filename, **kwargs)¶
Read calibration data from a FITS file.
- Parameters:
- Returns:
- calib
lsst.ip.isr.IsrCalib Calibration contained within the file.
- calib
- classmethod readText(filename, **kwargs)¶
Read calibration representation from a yaml/ecsv file.
- Parameters:
- Returns:
- calib
IsrCalibType Calibration class.
- calib
- Raises:
- RuntimeError
Raised if the filename does not end in “.ecsv” or “.yaml”.
- setMetadata(metadata)¶
Store a copy of the supplied metadata with this calibration.
- Parameters:
- metadata
lsst.daf.base.PropertyList Metadata to associate with the calibration. Will be copied and overwrite existing metadata.
- metadata
- 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:
- tableList
list[astropy.table.Table] List of tables containing the linearity calibration information.
- tableList
- 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:
- setDate
bool, optional Update the CALIBDATE fields in the metadata to the current time. Defaults to False.
- kwargs
Other keyword parameters to set in the metadata.
- setDate
- updateMetadataFromExposures(exposures)¶
Extract and unify metadata information.
- Parameters:
- exposures
list Exposures or other calibrations to scan.
- exposures
- validate(detector=None, amplifier=None)¶
Validate linearity for a detector/amplifier.
- Parameters:
- detector
lsst.afw.cameraGeom.Detector, optional Detector to validate, along with its amplifiers.
- amplifier
lsst.afw.cameraGeom.Amplifier, optional Single amplifier to validate.
- detector
- Raises:
- RuntimeError
Raised if there is a mismatch in linearity parameters, and the cameraGeom parameters are not being overridden.
- writeFits(filename)¶
Write calibration data to a FITS file.
- writeText(filename, format='auto')¶
Write the calibration data to a text file.
- Parameters:
- Returns:
- used
str The name of the file used to write the data. This may differ from the input if the format is explicitly chosen.
- used
- Raises:
- RuntimeError
Raised if filename does not end in a known extension, or if all information cannot be written.
Notes
The file is written to YAML/ECSV format and will include any associated metadata.