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:
- 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, gains])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
- metadata¶
- requiredAttributes¶
Methods Documentation
- apply(target)¶
Method to apply the calibration to the target object.
- 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:
- image
image
Image to correct.
- detector
detector
, 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.
- log
Logger
, optional Log object to use for logging.
- gains
dict
[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.
- 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
dict
orlsst.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.IsrCalib
subclass.
- 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
fromDict
method 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,
None
is returned.
- linearityType
- getMetadata()¶
Retrieve metadata associated with this calibration.
- Returns:
- meta
lsst.daf.base.PropertyList
Metadata. The returned
PropertyList
can 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.