CpFlatNormalizationTask#

class lsst.cp.pipe.cpFlatMeasure.CpFlatNormalizationTask(*, config: PipelineTaskConfig | None = None, log: logging.Logger | LsstLogAdapter | None = None, initInputs: dict[str, Any] | None = None, **kwargs: Any)#

Bases: PipelineTask

Rescale merged flat frames to remove unequal screen illumination.

Methods Summary

measureScales(bgMatrix[, bgCounts, iterations])

Convert backgrounds to exposure and detector components.

run(inputMDs, inputDims, camera)

Normalize FLAT exposures to a consistent level.

runQuantum(butlerQC, inputRefs, outputRefs)

Do butler IO and transform to provide in memory objects for tasks run method.

Methods Documentation

measureScales(bgMatrix, bgCounts=None, iterations=10)#

Convert backgrounds to exposure and detector components.

Parameters#

bgMatrixnp.ndarray, (nDetectors, nExposures)

Input backgrounds indexed by exposure (axis=0) and detector (axis=1).

bgCountsnp.ndarray, (nDetectors, nExposures), optional

Input pixel counts used to in measuring bgMatrix, indexed identically.

iterationsint, optional

Number of iterations to use in decomposition.

Returns#

scaleResultlsst.pipe.base.Struct

Result struct containing fields:

vectorE

Output E vector of exposure level scalings (np.array, (nExposures)).

vectorG

Output G vector of detector level scalings (np.array, (nExposures)).

bgModel

Expected model bgMatrix values, calculated from E and G (np.ndarray, (nDetectors, nExposures)).

Notes#

The set of background measurements B[exposure, detector] of flat frame data should be defined by a “Cartesian” product of two vectors, E[exposure] and G[detector]. The E vector represents the total flux incident on the focal plane. In a perfect camera, this is simply the sum along the columns of B (np.sum(B, axis=0)).

However, this simple model ignores differences in detector gains, the vignetting of the detectors, and the illumination pattern of the source lamp. The G vector describes these detector dependent differences, which should be identical over different exposures. For a perfect lamp of unit total intensity, this is simply the sum along the rows of B (np.sum(B, axis=1)). This algorithm divides G by the total flux level, to provide the relative (not absolute) scales between detectors.

The algorithm here, from pipe_drivers/constructCalibs.py and from there from Eugene Magnier/PanSTARRS [1], attempts to iteratively solve this decomposition from initial “perfect” E and G vectors. The operation is performed in log space to reduce the multiply and divides to linear additions and subtractions.

References#

run(inputMDs, inputDims, camera)#

Normalize FLAT exposures to a consistent level.

Parameters#

inputMDslist [lsst.daf.base.PropertyList]

Amplifier-level metadata used to construct scales.

inputDimslist [dict]

List of dictionaries of input data dimensions/values. Each list entry should contain:

"exposure"

exposure id value (int)

"detector"

detector id value (int)

Returns#

resultslsst.pipe.base.Struct

The results struct containing:

outputScales

Dictionary of scales, indexed by detector (int), amplifier (int), and exposure (int) (dict [dict [dict [float]]]).

Raises#

KeyError

Raised if the input dimensions do not contain detector and exposure, or if the metadata does not contain the expected statistic entry.

runQuantum(butlerQC, inputRefs, outputRefs)#

Do butler IO and transform to provide in memory objects for tasks run method.

Parameters#

butlerQCQuantumContext

A butler which is specialized to operate in the context of a lsst.daf.butler.Quantum.

inputRefsInputQuantizedConnection

Datastructure whose attribute names are the names that identify connections defined in corresponding PipelineTaskConnections class. The values of these attributes are the lsst.daf.butler.DatasetRef objects associated with the defined input/prerequisite connections.

outputRefsOutputQuantizedConnection

Datastructure whose attribute names are the names that identify connections defined in corresponding PipelineTaskConnections class. The values of these attributes are the lsst.daf.butler.DatasetRef objects associated with the defined output connections.