LinearitySolveTask#
- class lsst.cp.pipe.LinearitySolveTask(*, config: PipelineTaskConfig | None = None, log: logging.Logger | LsstLogAdapter | None = None, initInputs: dict[str, Any] | None = None, **kwargs: Any)#
Bases:
PipelineTaskFit the linearity from the PTC dataset.
Methods Summary
debugFit(stepname, xVector, yVector, yModel, ...)Debug method for linearity fitting.
fillBadAmp(linearizer, fitOrder, inputPtc, amp)fixupBadAmps(linearizer)Fix nan padding in bad amplifiers.
run(inputPtc, dummy, camera, inputDims[, ...])Fit non-linearity to PTC data, returning the correct Linearizer object.
runQuantum(butlerQC, inputRefs, outputRefs)Ensure that the input and output dimensions are passed along.
Methods Documentation
- debugFit(stepname, xVector, yVector, yModel, mask, ampName)#
Debug method for linearity fitting.
Parameters#
- stepname
str A label to use to check if we care to debug at a given line of code.
- xVector
numpy.array, (N,) The values to use as the independent variable in the linearity fit.
- yVector
numpy.array, (N,) The values to use as the dependent variable in the linearity fit.
- yModel
numpy.array, (N,) The values to use as the linearized result.
- mask
numpy.array[bool], (N,) , optional A mask to indicate which entries of
xVectorandyVectorto keep.- ampName
str Amplifier name to lookup linearity correction values.
- stepname
- fillBadAmp(linearizer, fitOrder, inputPtc, amp)#
- fixupBadAmps(linearizer)#
Fix nan padding in bad amplifiers.
Parameters#
linearizer :
lsst.ip.isr.Linearizer
- run(inputPtc, dummy, camera, inputDims, inputPhotodiodeCorrection=None, inputNormalization=None)#
Fit non-linearity to PTC data, returning the correct Linearizer object.
Parameters#
- inputPtc
lsst.ip.isr.PtcDataset Pre-measured PTC dataset.
- dummy
lsst.afw.image.Exposure The exposure used to select the appropriate PTC dataset. In almost all circumstances, one of the input exposures used to generate the PTC dataset is the best option.
- camera
lsst.afw.cameraGeom.Camera Camera geometry.
- inputDims
lsst.daf.butler.DataCoordinateordict DataIds to use to populate the output calibration.
- inputPhotodiodeCorrection :
lsst.ip.isr.PhotodiodeCorrection, optional Pre-measured photodiode correction used in the case when applyPhotodiodeCorrection=True.- inputNormalization
astropy.table.Table, optional Focal plane normalization table to use if useFocalPlaneNormalization is True.
Returns#
- results
lsst.pipe.base.Struct The results struct containing:
outputLinearizerFinal linearizer calibration (
lsst.ip.isr.Linearizer).outputProvenanceProvenance data for the new calibration (
lsst.ip.isr.IsrProvenance).
Notes#
This task currently fits only polynomial-defined corrections, where the correction coefficients are defined such that: \(corrImage = uncorrImage + \sum_i c_i uncorrImage^(2 + i)\) These \(c_i\) are defined in terms of the direct polynomial fit: \(meanVector ~ P(x=timeVector) = \sum_j k_j x^j\) such that \(c_(j-2) = -k_j/(k_1^j)\) in units of DN^(1-j) (c.f., Eq. 37 of 2003.05978). The
config.polynomialOrderorconfig.splineKnotsdefine the maximum order of \(x^j\) to fit. As \(k_0\) and \(k_1\) are degenerate with bias level and gain, they are not included in the non-linearity correction.- inputPtc
- runQuantum(butlerQC, inputRefs, outputRefs)#
Ensure that the input and output dimensions are passed along.
Parameters#
- butlerQC
lsst.daf.butler.QuantumContext Butler to operate on.
- inputRefs
lsst.pipe.base.InputQuantizedConnection Input data refs to load.
- ouptutRefs
lsst.pipe.base.OutputQuantizedConnection Output data refs to persist.
- butlerQC