Coverage for python/lsst/analysis/tools/tasks/calibrationAnalysis.py: 59%
37 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-05 04:12 -0700
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-05 04:12 -0700
1# This file is part of analysis_tools.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (https://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <https://www.gnu.org/licenses/>.
21from __future__ import annotations
23__all__ = (
24 "VerifyCalibAnalysisConfig",
25 "VerifyCalibAnalysisTask",
26 "VerifyPtcAnalysisConfig",
27 "VerifyPtcAnalysisTask",
28)
30from lsst.pipe.base import connectionTypes as cT
32from ..interfaces import AnalysisBaseConfig, AnalysisBaseConnections, AnalysisPipelineTask
35class VerifyCalibAnalysisConnections(
36 AnalysisBaseConnections,
37 dimensions=("instrument",),
38 defaultTemplates={"inputName": "verifyBiasResults"},
39):
40 data = cT.Input(
41 doc="Table containing bias verification data to load from the butler",
42 name="verifyBiasResults",
43 storageClass="ArrowAstropy",
44 dimensions=("instrument",),
45 deferLoad=True,
46 )
48 camera = cT.PrerequisiteInput(
49 doc="Input camera to use for focal plane geometry.",
50 name="camera",
51 storageClass="Camera",
52 dimensions=("instrument",),
53 isCalibration=True,
54 )
57class VerifyCalibAnalysisConfig(AnalysisBaseConfig, pipelineConnections=VerifyCalibAnalysisConnections):
58 pass
61class VerifyCalibAnalysisTask(AnalysisPipelineTask):
62 ConfigClass = VerifyCalibAnalysisConfig
63 _DefaultName = "verifyCalibAnalysis"
65 def runQuantum(self, butlerQC, inputRefs, outputRefs):
66 # Docs inherited from base class.
67 inputs = butlerQC.get(inputRefs)
68 dataId = butlerQC.quantum.dataId
69 plotInfo = self.parsePlotInfo(inputs, dataId)
70 data = self.loadData(inputs["data"])
71 camera = inputs["camera"]
73 outputs = self.run(
74 data=data,
75 plotInfo=plotInfo,
76 camera=camera,
77 )
78 butlerQC.put(outputs, outputRefs)
81# Photon Transfer Curve: PTC
82class VerifyPtcAnalysisConnections(
83 AnalysisBaseConnections,
84 dimensions=("instrument",),
85 defaultTemplates={"inputName": "verifyPtcResults"},
86):
87 data = cT.Input(
88 doc="Table containing PTC verification data to load from the butler",
89 name="verifyPtcResults",
90 storageClass="ArrowAstropy",
91 dimensions=("instrument",),
92 deferLoad=True,
93 )
95 camera = cT.PrerequisiteInput(
96 doc="Input camera to use for focal plane geometry.",
97 name="camera",
98 storageClass="Camera",
99 dimensions=("instrument",),
100 isCalibration=True,
101 )
104class VerifyPtcAnalysisConfig(AnalysisBaseConfig, pipelineConnections=VerifyPtcAnalysisConnections):
105 def setDefaults(self):
106 super().setDefaults()
109class VerifyPtcAnalysisTask(AnalysisPipelineTask):
110 ConfigClass = VerifyPtcAnalysisConfig
111 _DefaultName = "verifyPtcAnalysis"
113 def runQuantum(self, butlerQC, inputRefs, outputRefs):
114 # Docs inherited from base class.
115 inputs = butlerQC.get(inputRefs)
116 dataId = butlerQC.quantum.dataId
117 plotInfo = self.parsePlotInfo(inputs, dataId)
118 data = self.loadData(inputs["data"])
119 camera = inputs["camera"]
121 outputs = self.run(
122 data=data,
123 plotInfo=plotInfo,
124 camera=camera,
125 )
126 butlerQC.put(outputs, outputRefs)