LSSTApplications  18.1.0
LSSTDataManagementBasePackage
cmodelContinued.py
Go to the documentation of this file.
1 #
2 # LSST Data Management System
3 # Copyright 2008-2017 LSST/AURA.
4 #
5 # This product includes software developed by the
6 # LSST Project (http://www.lsst.org/).
7 #
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the LSST License Statement and
19 # the GNU General Public License along with this program. If not,
20 # see <http://www.lsstcorp.org/LegalNotices/>.
21 #
22 
23 # The Plugin classes here are accessed via registries, not direct imports.
24 __all__ = ("CModelStageConfig", "CModelConfig")
25 
26 from .cmodel import CModelStageControl, CModelControl, CModelAlgorithm
27 
28 from lsst.pex.config import makeConfigClass
29 import lsst.meas.base
30 
31 
32 CModelStageConfig = makeConfigClass(CModelStageControl)
33 CModelConfig = makeConfigClass(CModelControl)
34 
35 apCorrList = ("modelfit_CModel", "modelfit_CModel_initial", "modelfit_CModel_exp", "modelfit_CModel_dev")
36 
37 
39 
40  def setDefaults(self):
41  lsst.meas.base.SingleFramePluginConfig.setDefaults(self)
42  CModelConfig.setDefaults(self)
43 
44 
45 @lsst.meas.base.register("modelfit_CModel", apCorrList=apCorrList)
47  """Single-frame measurement interface for CModelAlgorithm.
48 
49  This class simply provides __init__ and measure methods that matched the SingleFramePlugin signatures
50  and delegate to the CModelAlgorithm's methods.
51  """
52  ConfigClass = CModelSingleFrameConfig
53 
54  @staticmethod
56  return 3.0
57 
58  def __init__(self, config, name, schema, metadata):
59  lsst.meas.base.SingleFramePlugin.__init__(self, config, name, schema, metadata)
60  self.algorithm = CModelAlgorithm(name, config.makeControl(), schema)
61 
62  def measure(self, measRecord, exposure):
63  self.algorithm.measure(measRecord, exposure)
64 
65  def fail(self, measRecord, error=None):
66  self.algorithm.fail(measRecord, error.cpp if error is not None else None)
67 
68 
70 
71  def setDefaults(self):
72  lsst.meas.base.ForcedPluginConfig.setDefaults(self)
73  CModelConfig.setDefaults(self)
74 
75 
76 @lsst.meas.base.register("modelfit_CModel", apCorrList=apCorrList)
78  """Forced measurement interface for CModelAlgorithm
79 
80  This class simply provides __init__ and measure methods that matched the ForcedPlugin signatures
81  and delegate to CModelAlgorithm implementations.
82 
83  The CModel algorithm currently cannot be run in forced mode when the measurement WCS is different
84  from the reference WCS (as is the case in CCD forced photometry). This is a temporary limitation
85  that will be addressed on DM-5405.
86 
87  CModel forced measurement when the measurement image is the same as the reference image should be
88  almost -- but not quite -- identical to unforced measurement. The primary difference is that
89  the final fit region from the reference measurement will be used for the initial fit in forced mode
90  as well as the exp, dev, and combined exp+dev fits
91  """
92  ConfigClass = CModelForcedConfig
93 
94  @staticmethod
96  return 3.0
97 
98  def __init__(self, config, name, schemaMapper, metadata):
99  lsst.meas.base.ForcedPlugin.__init__(self, config, name, schemaMapper, metadata)
100  self.algorithm = CModelAlgorithm(name, config.makeControl(), schemaMapper)
101 
102  def measure(self, measRecord, exposure, refRecord, refWcs):
103  if refWcs != exposure.getWcs():
105  "CModel forced measurement currently requires the measurement image to have the same"
106  " Wcs as the reference catalog (this is a temporary limitation)."
107  )
108  self.algorithm.measure(measRecord, exposure, refRecord)
109 
110  def fail(self, measRecord, error=None):
111  self.algorithm.fail(measRecord, error.cpp if error is not None else None)
def measure(self, measRecord, exposure, refRecord, refWcs)
Exception to be thrown when a measurement algorithm experiences a fatal error.
Definition: exceptions.h:76
def makeConfigClass(ctrl, name=None, base=Config, doc=None, module=None, cls=None)
Definition: wrap.py:50
def __init__(self, config, name, schemaMapper, metadata)