Coverage for python/lsst/analysis/tools/atools/calexpMetrics.py: 70%
10 statements
« prev ^ index » next coverage.py v7.5.0, created at 2024-05-02 04:48 -0700
« prev ^ index » next coverage.py v7.5.0, created at 2024-05-02 04:48 -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__ = ("CalexpSummaryMetrics",)
25from ..interfaces import AnalysisTool
28class CalexpSummaryMetrics(AnalysisTool):
29 """
30 Class to load statistics from the summary stats contained with a calexp's
31 metadata and write them to metrics.
32 """
34 propagateData: bool = True
36 # raCorners and decCorners statistics cannot be written to a metric,
37 # as metrics can only be single-valued (i.e., scalars).
38 _units = {
39 "psfSigma": "pixel",
40 "psfArea": "", # There is no astropy sq. pixel unit.
41 "psfIxx": "pixel",
42 "psfIyy": "pixel",
43 "psfIxy": "pixel",
44 "ra": "degree",
45 "dec": "degree",
46 "zenithDistance": "degree",
47 "zeroPoint": "mag",
48 "skyBg": "mag",
49 "skyNoise": "mag",
50 "meanVar": "mag",
51 "astromOffsetMean": "arcsec",
52 "astromOffsetStd": "arcsec",
53 "nPsfStar": "",
54 "psfStarDeltaE1Median": "pixel",
55 "psfStarDeltaE2Median": "pixel",
56 "psfStarDeltaE1Scatter": "pixel",
57 "psfStarDeltaE2Scatter": "pixel",
58 "psfStarDeltaSizeMedian": "pixel",
59 "psfStarDeltaSizeScatter": "pixel",
60 "psfStarScaledDeltaSizeScatter": "pixel",
61 "psfTraceRadiusDelta": "pixel",
62 "maxDistToNearestPsf": "deg",
63 "effTime": "s",
64 "effTimePsfSigmaScale": "s",
65 "effTimeSkyBgScale": "s",
66 "effTimeZeroPointScale": "s",
67 }
69 def setDefaults(self):
70 super().setDefaults()
72 self.prep.keysToLoad = list(self._units.keys())
73 self.produce.metric.units = self._units