Coverage for python/lsst/analysis/tools/analysisParts/stellarLocus.py: 21%
96 statements
« prev ^ index » next coverage.py v6.5.0, created at 2022-12-06 02:44 -0800
« prev ^ index » next coverage.py v6.5.0, created at 2022-12-06 02:44 -0800
1from __future__ import annotations
3from ..actions.keyedData.stellarLocusFit import StellarLocusFitAction
4from ..actions.scalar import ApproxFloor
5from ..actions.vector import (
6 CoaddPlotFlagSelector,
7 ExtinctionCorrectedMagDiff,
8 MagColumnNanoJansky,
9 SnSelector,
10 StarSelector,
11)
12from ..interfaces import AnalysisTool
15class StellarLocusBase(AnalysisTool):
16 # Use this as the Base Class for now StellarLocusBaseMetric
17 parameterizedBand: bool = False
19 def setDefaults(self):
20 super().setDefaults()
21 self.prep.selectors.flagSelector = CoaddPlotFlagSelector()
23 self.prep.selectors.snSelector = SnSelector()
24 self.prep.selectors.snSelector.threshold = 300
26 self.prep.selectors.starSelector = StarSelector()
28 self.process.buildActions.x = ExtinctionCorrectedMagDiff()
29 self.process.buildActions.x.magDiff.returnMillimags = False
30 self.process.buildActions.y = ExtinctionCorrectedMagDiff()
31 self.process.buildActions.y.magDiff.returnMillimags = False
34class WPerpPSF(StellarLocusBase):
35 def setDefaults(self):
36 super().setDefaults()
37 self.prep.selectors.flagSelector.bands = ["g", "r", "i"]
38 self.prep.selectors.snSelector.bands = ["r"]
39 self.prep.selectors.snSelector.fluxType = "{band}_psfFlux"
41 self.prep.selectors.starSelector.vectorKey = "r_extendedness"
43 self.process.buildActions.x.magDiff.col1 = "g_psfFlux"
44 self.process.buildActions.x.magDiff.col2 = "r_psfFlux"
46 self.process.buildActions.y.magDiff.col1 = "r_psfFlux"
47 self.process.buildActions.y.magDiff.col2 = "i_psfFlux"
49 self.process.buildActions.mag = MagColumnNanoJansky(vectorKey="r_psfFlux")
51 self.process.calculateActions.wPerp_psfFlux = StellarLocusFitAction()
52 self.process.calculateActions.wPerp_psfFlux.stellarLocusFitDict = {
53 "xMin": 0.28,
54 "xMax": 1.0,
55 "yMin": 0.02,
56 "yMax": 0.48,
57 "mHW": 0.52,
58 "bHW": -0.08,
59 }
61 self.process.calculateActions.approxMagDepth = ApproxFloor(vectorKey="mag")
64class WPerpCModel(WPerpPSF):
65 def setDefaults(self):
66 super().setDefaults()
67 self.prep.selectors.snSelector.fluxType = "{band}_cModelFlux"
69 self.process.buildActions.x.magDiff.col1 = "g_cModelFlux"
70 self.process.buildActions.x.magDiff.col2 = "r_cModelFlux"
72 self.process.buildActions.y.magDiff.col1 = "r_cModelFlux"
73 self.process.buildActions.y.magDiff.col2 = "i_cModelFlux"
75 self.process.buildActions.mag = MagColumnNanoJansky(vectorKey="r_cModelFlux")
77 self.process.calculateActions.wPerp_cmodelFlux = StellarLocusFitAction()
78 self.process.calculateActions.wPerp_cmodelFlux.stellarLocusFitDict = {
79 "xMin": 0.28,
80 "xMax": 1.0,
81 "yMin": 0.02,
82 "yMax": 0.48,
83 "mHW": 0.52,
84 "bHW": -0.08,
85 }
87 self.process.calculateActions.approxMagDepth = ApproxFloor(vectorKey="mag")
90class XPerpPSF(StellarLocusBase):
91 def setDefaults(self):
92 super().setDefaults()
93 self.prep.selectors.flagSelector.bands = ["g", "r", "i"]
94 self.prep.selectors.snSelector.bands = ["r"]
95 self.prep.selectors.snSelector.fluxType = "{band}_psfFlux"
97 self.prep.selectors.starSelector.vectorKey = "r_extendedness"
99 self.process.buildActions.x.magDiff.col1 = "g_psfFlux"
100 self.process.buildActions.x.magDiff.col2 = "r_psfFlux"
102 self.process.buildActions.y.magDiff.col1 = "r_psfFlux"
103 self.process.buildActions.y.magDiff.col2 = "i_psfFlux"
105 self.process.buildActions.mag = MagColumnNanoJansky(vectorKey="r_psfFlux")
107 self.process.calculateActions.xPerp_psfFlux = StellarLocusFitAction()
108 self.process.calculateActions.xPerp_psfFlux.stellarLocusFitDict = {
109 "xMin": 1.05,
110 "xMax": 1.55,
111 "yMin": 0.78,
112 "yMax": 1.62,
113 "mHW": 13.35,
114 "bHW": -15.54,
115 }
117 self.process.calculateActions.approxMagDepth = ApproxFloor(vectorKey="mag")
120class XPerpCModel(XPerpPSF):
121 def setDefaults(self):
122 super().setDefaults()
123 self.prep.selectors.snSelector.fluxType = "{band}_cModelFlux"
125 self.process.buildActions.x.magDiff.col1 = "g_cModelFlux"
126 self.process.buildActions.x.magDiff.col2 = "r_cModelFlux"
128 self.process.buildActions.y.magDiff.col1 = "r_cModelFlux"
129 self.process.buildActions.y.magDiff.col2 = "i_cModelFlux"
131 self.process.calculateActions.xPerp_cmodelFlux = StellarLocusFitAction()
132 self.process.calculateActions.xPerp_cmodelFlux.stellarLocusFitDict = {
133 "xMin": 1.05,
134 "xMax": 1.55,
135 "yMin": 0.78,
136 "yMax": 1.62,
137 "mHW": 13.35,
138 "bHW": -15.54,
139 }
141 self.process.buildActions.mag = MagColumnNanoJansky(vectorKey="r_cModelFlux")
144class YPerpPSF(StellarLocusBase):
145 def setDefaults(self):
146 super().setDefaults()
147 self.prep.selectors.flagSelector.bands = ["r", "i", "z"]
148 self.prep.selectors.snSelector.bands = ["i"]
149 self.prep.selectors.snSelector.fluxType = "{band}_psfFlux"
151 self.prep.selectors.starSelector.vectorKey = "i_extendedness"
153 self.process.buildActions.x.magDiff.col1 = "r_psfFlux"
154 self.process.buildActions.x.magDiff.col2 = "i_psfFlux"
156 self.process.buildActions.y.magDiff.col1 = "i_psfFlux"
157 self.process.buildActions.y.magDiff.col2 = "z_psfFlux"
159 self.process.buildActions.mag = MagColumnNanoJansky(vectorKey="i_psfFlux")
161 self.process.calculateActions.yPerp_psfFlux = StellarLocusFitAction()
162 self.process.calculateActions.yPerp_psfFlux.stellarLocusFitDict = {
163 "xMin": 0.82,
164 "xMax": 2.01,
165 "yMin": 0.37,
166 "yMax": 0.90,
167 "mHW": 0.40,
168 "bHW": 0.03,
169 }
171 self.process.calculateActions.approxMagDepth = ApproxFloor(vectorKey="mag")
174class YPerpCModel(YPerpPSF):
175 def setDefaults(self):
176 super().setDefaults()
177 self.prep.selectors.snSelector.fluxType = "{band}_cModelFlux"
179 self.process.buildActions.x.magDiff.col1 = "r_cModelFlux"
180 self.process.buildActions.x.magDiff.col2 = "i_cModelFlux"
182 self.process.buildActions.y.magDiff.col1 = "i_cModelFlux"
183 self.process.buildActions.y.magDiff.col2 = "z_cModelFlux"
185 self.process.buildActions.mag = MagColumnNanoJansky(vectorKey="i_cModelFlux")
187 self.process.calculateActions.yPerp_cmodelFlux = StellarLocusFitAction()
188 self.process.calculateActions.yPerp_cmodelFlux.stellarLocusFitDict = {
189 "xMin": 0.82,
190 "xMax": 2.01,
191 "yMin": 0.37,
192 "yMax": 0.90,
193 "mHW": 0.40,
194 "bHW": 0.03,
195 }