@@ -197,26 +197,30 @@ class MatchedRefCoaddDiffMagTool(MatchedRefCoaddToolBase):
197197 The default model flux is cModel.
198198 """
199199
200- def matchedRefDiffContext (self ):
201- self .process .buildActions .diff = SubtractVector (
202- actionA = MagColumnNanoJansky (
203- vectorKey = self .process .buildActions .fluxes_meas .vectorKey , returnMillimags = True
204- ),
205- actionB = DivideVector (
206- actionA = self .process .buildActions .mags_ref ,
207- # To convert to mmag
208- actionB = ConstantValue (value = 1e-3 ),
209- ),
210- )
211-
212- def matchedRefChiContext (self ):
213- self .process .buildActions .diff = DivideVector (
214- actionA = SubtractVector (
215- actionA = LoadVector (vectorKey = self .process .buildActions .fluxes_meas .vectorKey ),
216- actionB = LoadVector (vectorKey = self .process .buildActions .fluxes_ref .vectorKey ),
217- ),
218- actionB = LoadVector (vectorKey = f"{ self .process .buildActions .fluxes_meas .vectorKey } Err" ),
219- )
200+ def finalize (self ):
201+ super ().finalize ()
202+ if not hasattr (self .process .buildActions , "diff" ):
203+ if self .context == "diff" :
204+ self .process .buildActions .diff = SubtractVector (
205+ actionA = MagColumnNanoJansky (
206+ vectorKey = self .process .buildActions .fluxes_meas .vectorKey , returnMillimags = True
207+ ),
208+ actionB = DivideVector (
209+ actionA = self .process .buildActions .mags_ref ,
210+ # To convert to mmag
211+ actionB = ConstantValue (value = 1e-3 ),
212+ ),
213+ )
214+ elif self .context == "chi" :
215+ self .process .buildActions .diff = DivideVector (
216+ actionA = SubtractVector (
217+ actionA = LoadVector (vectorKey = self .process .buildActions .fluxes_meas .vectorKey ),
218+ actionB = LoadVector (vectorKey = self .process .buildActions .fluxes_ref .vectorKey ),
219+ ),
220+ actionB = LoadVector (vectorKey = f"{ self .process .buildActions .fluxes_meas .vectorKey } Err" ),
221+ )
222+ else :
223+ raise ValueError (f"Unrecognized { self .context = } " )
220224
221225 def setDefaults (self ):
222226 super ().setDefaults ()
@@ -237,20 +241,19 @@ def setDefaults(self):
237241class MatchedRefCoaddCModelFluxMetric (MatchedRefCoaddDiffMagTool , MatchedRefCoaddMetric ):
238242 """Metric for diffs between reference and CModel coadd mags."""
239243
240- def matchedRefDiffContext (self ):
241- super ().matchedRefDiffContext ()
242- self .unit = "mmag"
243- self .name_prefix = "photom_mag_cModelFlux_{name_class}_diff_"
244- self .produce .metric .units = self .configureMetrics ()
245-
246- def matchedRefChiContext (self ):
247- super ().matchedRefChiContext ()
248- self .unit = ""
249- self .name_prefix = "photom_mag_cModelFlux_{name_class}_chi_"
250- self .produce .metric .units = self .configureMetrics ()
251-
252- def setDefaults (self ):
253- super ().setDefaults ()
244+ def finalize (self ):
245+ super ().finalize ()
246+ if not hasattr (self .process .metric , "units" ):
247+ if self .context == "diff" :
248+ self .unit = "mmag"
249+ self .name_prefix = "photom_mag_cModelFlux_{name_class}_diff_"
250+ self .produce .metric .units = self .configureMetrics ()
251+ elif self .context == "chi" :
252+ self .unit = ""
253+ self .name_prefix = "photom_mag_cModelFlux_{name_class}_chi_"
254+ self .produce .metric .units = self .configureMetrics ()
255+ else :
256+ raise ValueError (f"Unrecognized { self .context = } " )
254257
255258
256259class MatchedRefCoaddDiffPositionTool (MatchedRefCoaddToolBase ):
@@ -265,30 +268,26 @@ class MatchedRefCoaddDiffPositionTool(MatchedRefCoaddToolBase):
265268 optional = False ,
266269 )
267270
268- # TODO: Determine if this can be put back into setDefaults w/o this:
269- # lsst.pex.config.config.FieldValidationError:
270- # Field 'process.buildActions.pos_meas.vectorKey' failed validation:
271- # Required value cannot be None
272- def _setPos (self ):
273- self .process .buildActions .pos_meas = LoadVector (vectorKey = self .variable )
274- self .process .buildActions .pos_ref = LoadVector (vectorKey = f"refcat_{ self .variable } " )
275-
276- def matchedRefDiffContext (self ):
277- self ._setPos ()
278- self .process .buildActions .diff = SubtractVector (
279- actionA = self .process .buildActions .pos_meas ,
280- actionB = self .process .buildActions .pos_ref ,
281- )
282-
283- def matchedRefChiContext (self ):
284- self ._setPos ()
285- self .process .buildActions .diff = DivideVector (
286- actionA = SubtractVector (
287- actionA = self .process .buildActions .pos_meas ,
288- actionB = self .process .buildActions .pos_ref ,
289- ),
290- actionB = LoadVector (vectorKey = f"{ self .process .buildActions .pos_meas .vectorKey } Err" ),
291- )
271+ def finalize (self ):
272+ super ().finalize ()
273+ if not hasattr (self .process .buildActions , "pos_meas" ):
274+ self .process .buildActions .pos_meas = LoadVector (vectorKey = self .variable )
275+ self .process .buildActions .pos_ref = LoadVector (vectorKey = f"refcat_{ self .variable } " )
276+ if self .context == "diff" :
277+ self .process .buildActions .diff = SubtractVector (
278+ actionA = self .process .buildActions .pos_meas ,
279+ actionB = self .process .buildActions .pos_ref ,
280+ )
281+ elif self .context == "chi" :
282+ self .process .buildActions .diff = DivideVector (
283+ actionA = SubtractVector (
284+ actionA = self .process .buildActions .pos_meas ,
285+ actionB = self .process .buildActions .pos_ref ,
286+ ),
287+ actionB = LoadVector (vectorKey = f"{ self .process .buildActions .pos_meas .vectorKey } Err" ),
288+ )
289+ else :
290+ raise ValueError (f"Unrecognized { self .context = } " )
292291
293292 def setDefaults (self ):
294293 super ().setDefaults ()
@@ -307,20 +306,19 @@ def setDefaults(self):
307306class MatchedRefCoaddPositionMetric (MatchedRefCoaddDiffPositionTool , MatchedRefCoaddMetric ):
308307 """Metric for diffs between reference and base coadd centroids."""
309308
310- def matchedRefDiffContext (self ):
311- super ().matchedRefDiffContext ()
312- self .unit = "pix"
313- self .name_prefix = f"astrom_{ self .variable } _{{name_class}}_diff_"
314- self .produce .metric .units = self .configureMetrics ()
315-
316- def matchedRefChiContext (self ):
317- super ().matchedRefChiContext ()
318- self .unit = ""
319- self .name_prefix = f"astrom_{ self .variable } _{{name_class}}_diff_"
320- self .produce .metric .units = self .configureMetrics ()
321-
322- def setDefaults (self ):
323- super ().setDefaults ()
309+ def finalize (self ):
310+ super ().finalize ()
311+ if not hasattr (self .process .metric , "units" ):
312+ if self .context == "diff" :
313+ self .unit = "pix"
314+ self .name_prefix = f"astrom_{ self .variable } _{{name_class}}_diff_"
315+ self .produce .metric .units = self .configureMetrics ()
316+ elif self .context == "chi" :
317+ self .unit = ""
318+ self .name_prefix = f"astrom_{ self .variable } _{{name_class}}_diff_"
319+ self .produce .metric .units = self .configureMetrics ()
320+ else :
321+ raise ValueError (f"Unrecognized { self .context = } " )
324322
325323
326324class MatchedRefCoaddPlot (AnalysisTool ):
@@ -360,26 +358,24 @@ def setDefaults(self):
360358
361359
362360class MatchedRefCoaddCModelFluxPlot (MatchedRefCoaddCModelPlot , MatchedRefCoaddDiffMagTool ):
363- def matchedRefDiffContext (self ):
364- super ().matchedRefDiffContext ()
365- self .produce .plot .yAxisLabel = "cModel - Reference mmag"
366-
367- def matchedRefChiContext (self ):
368- super ().matchedRefChiContext ()
369- self .produce .plot .yAxisLabel = "chi = (cModel - Reference mag)/error"
370-
371- def setDefaults (self ):
372- super ().setDefaults ()
361+ def finalize (self ):
362+ MatchedRefCoaddCModelPlot (self ).finalize ()
363+ MatchedRefCoaddDiffMagTool (self ).finalize ()
364+ if self .context == "diff" :
365+ self .produce .plot .yAxisLabel = "cModel - Reference mmag"
366+ elif self .context == "chi" :
367+ self .produce .plot .yAxisLabel = "chi = (cModel - Reference mag)/error"
368+ else :
369+ raise ValueError (f"Unrecognized { self .context = } " )
373370
374371
375372class MatchedRefCoaddPositionPlot (MatchedRefCoaddCModelPlot , MatchedRefCoaddDiffPositionTool ):
376- def matchedRefDiffContext (self ):
377- super ().matchedRefDiffContext ()
378- self .produce .plot .yAxisLabel = f"{ self .variable } position (pix)"
379-
380- def matchedRefChiContext (self ):
381- super ().matchedRefChiContext ()
382- self .produce .plot .yAxisLabel = f"chi = (slot - Reference { self .variable } position)/error"
383-
384- def setDefaults (self ):
385- super ().setDefaults ()
373+ def finalize (self ):
374+ MatchedRefCoaddCModelPlot (self ).finalize ()
375+ MatchedRefCoaddDiffPositionTool (self ).finalize ()
376+ if self .context == "diff" :
377+ self .produce .plot .yAxisLabel = f"{ self .variable } position (pix)"
378+ elif self .context == "chi" :
379+ self .produce .plot .yAxisLabel = f"chi = (slot - Reference { self .variable } position)/error"
380+ else :
381+ raise ValueError (f"Unrecognized { self .context = } " )
0 commit comments