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: PipelineTask

Fit 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#

stepnamestr

A label to use to check if we care to debug at a given line of code.

xVectornumpy.array, (N,)

The values to use as the independent variable in the linearity fit.

yVectornumpy.array, (N,)

The values to use as the dependent variable in the linearity fit.

yModelnumpy.array, (N,)

The values to use as the linearized result.

masknumpy.array [bool], (N,) , optional

A mask to indicate which entries of xVector and yVector to keep.

ampNamestr

Amplifier name to lookup linearity correction values.

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#

inputPtclsst.ip.isr.PtcDataset

Pre-measured PTC dataset.

dummylsst.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.

cameralsst.afw.cameraGeom.Camera

Camera geometry.

inputDimslsst.daf.butler.DataCoordinate or dict

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.

inputNormalizationastropy.table.Table, optional

Focal plane normalization table to use if useFocalPlaneNormalization is True.

Returns#

resultslsst.pipe.base.Struct

The results struct containing:

outputLinearizer

Final linearizer calibration (lsst.ip.isr.Linearizer).

outputProvenance

Provenance 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.polynomialOrder or config.splineKnots define 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.

runQuantum(butlerQC, inputRefs, outputRefs)#

Ensure that the input and output dimensions are passed along.

Parameters#

butlerQClsst.daf.butler.QuantumContext

Butler to operate on.

inputRefslsst.pipe.base.InputQuantizedConnection

Input data refs to load.

ouptutRefslsst.pipe.base.OutputQuantizedConnection

Output data refs to persist.