Linearizer¶
-
class
lsst.ip.isr.
Linearizer
(table=None, **kwargs)¶ Bases:
lsst.ip.isr.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.
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
- linearFit : The 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
requiredAttributes
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. getMetadata
()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. 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.
Parameters: - target :
object
Thing to validate against.
Returns: - valid :
bool
Returns true if the calibration was applied correctly.
Raises: - NotImplementedError
Raised if not implemented.
- target :
-
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 :
dict
orlsst.daf.base.PropertyList
Source for the common keywords.
Raises: - RuntimeError
Raised if the dictionary does not match the expected OBSTYPE.
- dictionary :
-
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.
Raises: - ValueError
Raised if the resulting calibClass is the base
lsst.ip.isr.IsrClass
(which does not implement the content methods).
- calibClass :
-
fromDetector
(detector)¶ Read linearity parameters from a detector.
Parameters: - detector :
lsst.afw.cameraGeom.detector
Input detector with parameters to use.
Returns: - calib :
lsst.ip.isr.Linearizer
The calibration constructed from the detector.
- detector :
-
classmethod
fromDict
(dictionary)¶ Construct a calibration from a dictionary of properties
Parameters: - dictionary :
dict
Dictionary of properties
Returns: - calib :
lsst.ip.isr.Linearity
Constructed calibration.
Raises: - RuntimeError
Raised if the supplied dictionary is for a different calibration.
- dictionary :
-
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.
Returns: - linearity :
Linearizer`
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.
- tableList :
-
getLinearityTypeByName
(linearityTypeName)¶ Determine the linearity class to use from the type name.
Parameters: - linearityTypeName : str
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.
-
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.
Raises: - RuntimeError
Raised if the filename does not end in “.ecsv” or “.yaml”.
- calib :
-
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 :
-
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.
Raises: - RuntimeError
Raised if there is a mismatch in linearity parameters, and the cameraGeom parameters are not being overridden.
- detector :
-
writeFits
(filename)¶ Write calibration data to a FITS file.
Parameters: - filename :
str
Filename to write data to.
Returns: - used :
str
The name of the file used to write the data.
- filename :
-
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.
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.
- used :
- table :