lsst.meas.base  16.0-13-gd9b1b71+19
footprintArea.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #
3 # LSST Data Management System
4 # Copyright 2008-2017 AURA/LSST.
5 #
6 # This product includes software developed by the
7 # LSST Project (http://www.lsst.org/).
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 LSST License Statement and
20 # the GNU General Public License along with this program. If not,
21 # see <http://www.lsstcorp.org/LegalNotices/>.
22 #
23 
24 import numpy as np
25 
26 from .catalogCalculation import (CatalogCalculationPluginConfig,
27  CatalogCalculationPlugin)
28 from .pluginRegistry import register
29 
30 __all__ = (
31  "CatalogCalculationFootprintAreaConfig",
32  "CatalogCalculationFootprintAreaPlugin",
33 )
34 
35 
37  pass
38 
39 
40 @register("base_FootprintArea")
42  """A catalog calcluation plugin that simply records the area of the
43  source's detection Footprint.
44  """
45 
46  ConfigClass = CatalogCalculationFootprintAreaConfig
47 
48  @classmethod
51 
52  def __init__(self, config, name, schema, metadata):
53  CatalogCalculationPlugin.__init__(self, config, name, schema, metadata)
54  self.key = schema.addField(
55  schema.join(name, "value"),
56  type=np.int32,
57  doc="Number of pixels in the source's detection footprint.",
58  units="pixel"
59  )
60 
61  def calculate(self, measRecord):
62  measRecord.set(self.key, measRecord.getFootprint().getArea())
63 
64  def fail(self, measRecord, error=None):
65  # Should be impossible for this algorithm to fail unless there is no
66  # Footprint (and that's a precondition for measurement).
67  pass