CrosstalkCalib¶
- class lsst.ip.isr.CrosstalkCalib(detector=None, nAmp=0, **kwargs)¶
- Bases: - IsrCalib- Calibration of amp-to-amp crosstalk coefficients. - Parameters:
- detectorlsst.afw.cameraGeom.Detector, optional
- Detector to use to pull coefficients from. 
- nAmpint, optional
- Number of amplifiers to initialize. 
- loglogging.Logger, optional
- Log to write messages to. 
- **kwargs
- Parameters to pass to parent constructor. 
 
- detector
 - Notes - The crosstalk attributes stored are: - hasCrosstalkbool
- Whether there is crosstalk defined for this detector. 
- nAmpint
- Number of amplifiers in this detector. 
- crosstalkShapetuple[int,int]
- A tuple containing the shape of the - coeffsmatrix. This should be equivalent to (- nAmp,- nAmp).
- coeffsnumpy.ndarray
- A matrix containing the crosstalk coefficients. coeff[i][j] contains the coefficients to calculate the contribution amplifier_j has on amplifier_i (each row[i] contains the corrections for detector_i). 
- coeffErrnumpy.ndarray, optional
- A matrix (as defined by - coeffs) containing the standard distribution of the crosstalk measurements.
- coeffNumnumpy.ndarray, optional
- A matrix containing the number of pixel pairs used to measure the - coeffsand- coeffErr.
- coeffValidnumpy.ndarray, optional
- A matrix of Boolean values indicating if the coefficient is valid, defined as abs(coeff) > coeffErr / sqrt(coeffNum). 
- coeffsSqrnumpy.ndarray, optional
- A matrix containing potential quadratic crosstalk coefficients (see e.g., Snyder+21, 2001.03223). coeffsSqr[i][j] contains the coefficients to calculate the contribution amplifier_j has on amplifier_i (each row[i] contains the corrections for detector_i). 
- coeffErrSqrnumpy.ndarray, optional
- A matrix (as defined by - coeffsSqr) containing the standard distribution of the quadratic term of the crosstalk measurements.
- interChipdict[numpy.ndarray]
- A dictionary keyed by detectorName containing - coeffsmatrices used to correct for inter-chip crosstalk with a source on the detector indicated.
 - Version 1.1 adds quadratic coefficients, a matrix with the ratios of amplifiers gains per detector, and a field to indicate the units of the numerator and denominator of the source and target signals, with “adu” meaning “ADU / ADU” and “electron” meaning “e- / e-“. - Version 1.2 adds the original gains used in the crosstalk fit. - Attributes Summary - Methods Summary - apply(target)- Method to apply the calibration to the target object. - calculateBackground(mi[, badPixels])- Estimate median background in image. - calibInfoFromDict(dictionary)- Handle common keywords. - determineCalibClass(metadata, message)- Attempt to find calibration class in metadata. - extractAmp(image, amp, ampTarget[, ...])- Extract the image data from an amp, flipped to match ampTarget. - fromDetector(detector[, coeffVector, ...])- Set calibration parameters from the detector. - fromDict(dictionary)- Construct a calibration from a dictionary of properties. - fromTable(tableList)- Construct calibration from a list of tables. - 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. - subtractCrosstalk(thisExposure[, ...])- Subtract the crosstalk from thisExposure, optionally using a different source. - toDict()- Return a dictionary containing the calibration properties. - toTable()- Construct a list of tables containing the information in this calibration. - updateMetadata([setDate])- Update calibration metadata. - updateMetadataFromExposures(exposures)- Extract and unify metadata information. - validate([other])- Validate that this calibration is defined and can be used. - 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. 
 - static calculateBackground(mi, badPixels=['BAD'])¶
- Estimate median background in image. - Getting a great background model isn’t important for crosstalk correction, since the crosstalk is at a low level. The median should be sufficient. 
 - 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:
- dictionarydictorlsst.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:
- calibClassobject
- 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).
 
 
 - static extractAmp(image, amp, ampTarget, isTrimmed=False, fullAmplifier=False, parallelOverscan=False)¶
- Extract the image data from an amp, flipped to match ampTarget. - Parameters:
- imagelsst.afw.image.Imageorlsst.afw.image.MaskedImage
- Image containing the amplifier of interest. 
- amplsst.afw.cameraGeom.Amplifier
- Amplifier on image to extract. 
- ampTargetlsst.afw.cameraGeom.Amplifier
- Target amplifier that the extracted image will be flipped to match. 
- isTrimmedbool, optional
- The image is already trimmed. TODO : DM-15409 will resolve this. 
- fullAmplifierbool, optional
- Use full amplifier and not just imaging region. 
- parallelOverscanbool, optional
- Extract parallel overscan region instead of imaging region. Cannot be used if isTrimmed or fullAmplifier True. 
 
- image
- Returns:
- outputlsst.afw.image.Image
- Image of the amplifier in the desired configuration. 
 
- output
 
 - fromDetector(detector, coeffVector=None, coeffSqrVector=None)¶
- Set calibration parameters from the detector. - Parameters:
- detectorlsst.afw.cameraGeom.Detector
- Detector to use to set parameters from. 
- coeffVectornumpy.array, optional
- Use the detector geometry (bounding boxes and flip information), but use - coeffVectorinstead of the output of- detector.getCrosstalk().
- coeffSqrVectornumpy.array, optional
- Quadratic crosstalk coefficients. 
 
- detector
- Returns:
- caliblsst.ip.isr.CrosstalkCalib
- The calibration constructed from the detector. 
 
- calib
 
 - classmethod fromDict(dictionary)¶
- Construct a calibration from a dictionary of properties. - Must be implemented by the specific calibration subclasses. - Parameters:
- dictionarydict
- Dictionary of properties. 
 
- dictionary
- Returns:
- caliblsst.ip.isr.CalibType
- Constructed calibration. 
 
- calib
- Raises:
- RuntimeError
- Raised if the supplied dictionary is for a different calibration. 
 
 
 - classmethod fromTable(tableList)¶
- Construct calibration from a list of tables. - This method uses the - fromDictmethod to create the calibration, after constructing an appropriate dictionary from the input tables.- Parameters:
- tableListlist[lsst.afw.table.Table]
- List of tables to use to construct the crosstalk calibration. 
 
- tableList
- Returns:
- caliblsst.ip.isr.CrosstalkCalib
- The calibration defined in the tables. 
 
- calib
 
 - getMetadata()¶
- Retrieve metadata associated with this calibration. - Returns:
- metalsst.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:
- caliblsst.ip.isr.IsrCalib
- Calibration contained within the file. 
 
- calib
 
 - classmethod readText(filename, **kwargs)¶
- Read calibration representation from a yaml/ecsv file. - Parameters:
- Returns:
- calibIsrCalibType
- 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:
- metadatalsst.daf.base.PropertyList
- Metadata to associate with the calibration. Will be copied and overwrite existing metadata. 
 
- metadata
 
 - subtractCrosstalk(thisExposure, sourceExposure=None, crosstalkCoeffs=None, crosstalkCoeffsSqr=None, crosstalkCoeffsValid=None, badPixels=['BAD'], minPixelToMask=45000, crosstalkStr='CROSSTALK', isTrimmed=False, backgroundMethod='None', doSqrCrosstalk=False, fullAmplifier=False, parallelOverscan=False, detectorConfig=None, badAmpDict=None)¶
- Subtract the crosstalk from thisExposure, optionally using a different source. - We set the mask plane indicated by - crosstalkStrin a target amplifier for pixels in a source amplifier that exceed- minPixelToMask. Note that the correction is applied to all pixels in the amplifier, but only those that have a substantial crosstalk are masked with- crosstalkStr.- The uncorrected image is used as a template for correction. This is good enough if the crosstalk is small (e.g., coefficients < ~ 1e-3), but if it’s larger you may want to iterate. - Parameters:
- thisExposurelsst.afw.image.Exposure
- Exposure for which to subtract crosstalk. 
- sourceExposurelsst.afw.image.Exposure, optional
- Exposure to use as the source of the crosstalk. If not set, thisExposure is used as the source (intra-detector crosstalk). 
- crosstalkCoeffsnumpy.ndarray, optional.
- Coefficients to use to correct crosstalk. 
- crosstalkCoeffsSqrnumpy.ndarray, optional.
- Quadratic coefficients to use to correct crosstalk. 
- crosstalkCoeffsValidnumpy.ndarray, optional
- Boolean array that is True where coefficients are valid. 
- badPixelslistofstr, optional
- Mask planes to ignore. 
- minPixelToMaskfloat, optional
- Minimum pixel value (relative to the background level) in source amplifier for which to set - crosstalkStrmask plane in target amplifier.
- crosstalkStrstr, optional
- Mask plane name for pixels greatly modified by crosstalk (above minPixelToMask). 
- isTrimmedbool, optional
- The image is already trimmed. This should no longer be needed once DM-15409 is resolved. 
- backgroundMethodstr, optional
- Method used to subtract the background. “AMP” uses amplifier-by-amplifier background levels, “DETECTOR” uses full exposure/maskedImage levels. Any other value results in no background subtraction. 
- doSqrCrosstalk: `bool`, optional
- Should the quadratic crosstalk coefficients be used for the crosstalk correction? 
- fullAmplifierbool, optional
- Use full amplifier and not just imaging region. 
- parallelOverscanbool, optional
- Only correct the parallel overscan region. 
- detectorConfiglsst.ip.isr.overscanDetectorConfig, optional
- Per-amplifier configs to use if parallelOverscan is True. 
- badAmpDictdict[str,bool], optional
- Dictionary to identify bad amplifiers that should not be source or target for crosstalk correction. 
 
- thisExposure
 - Notes - For a given image I, we want to find the crosstalk subtrahend image CT, such that - I_corrected = I - CT - The subtrahend image is the sum of all crosstalk contributions that appear in I, so we can build it up by amplifier. Each amplifier A in image I sees the contributions from all other amplifiers B_v != A. For the current linear model, we set - sImageequal to the segment of the subtrahend image CT corresponding to amplifier A, and then build it up as: simage_linear = sum_v coeffsA_v * (B_v - bkg_v) where coeffsA_v is the vector of crosstalk coefficients for sources that cause images in amplifier A. The bkg_v term in this equation is identically 0.0 for all cameras except obs_subaru (and is only non-zero there for historical reasons). To include the non-linear term, we can again add to the subtrahend image using the same loop, as:- simage_nonlinear = sum_v (coeffsA_v * B_v) + (NLcoeffsA_v * B_v * B_v)
- = sum_v linear_term_v + nonlinear_term_v 
 - where coeffsA_v is the linear term, and NLcoeffsA_v are the quadratic component. For LSSTCam, it has been observed that the linear_term_v >> nonlinear_term_v. 
 - toDict()¶
- Return a dictionary containing the calibration properties. - The dictionary should be able to be round-tripped through - fromDict.- Returns:
- dictionarydict
- Dictionary of properties. 
 
- dictionary
 
 - 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[lsst.afw.table.Table]
- List of tables containing the crosstalk calibration information. 
 
- tableList
 
 - updateMetadata(setDate=False, **kwargs)¶
- Update calibration metadata. - 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. 
 
- setDate
 
 - updateMetadataFromExposures(exposures)¶
- Extract and unify metadata information. - Parameters:
- exposureslist
- Exposures or other calibrations to scan. 
 
- exposures
 
 - validate(other=None)¶
- Validate that this calibration is defined and can be used. 
 - writeFits(filename)¶
- Write calibration data to a FITS file. 
 - writeText(filename, format='auto')¶
- Write the calibration data to a text file. - Parameters:
- Returns:
- usedstr
- 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.