lsst.meas.base  14.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Groups Pages
peakLikelihoodFlux.cc
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * Copyright 2008-2017 AURA/LSST.
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 <https://www.lsstcorp.org/LegalNotices/>.
21  */
22 #include "pybind11/pybind11.h"
23 
24 #include <memory>
25 
26 #include "lsst/pex/config/python.h"
27 #include "lsst/meas/base/python.h"
29 
30 namespace py = pybind11;
31 using namespace pybind11::literals;
32 
33 namespace lsst {
34 namespace meas {
35 namespace base {
36 
37 namespace {
38 
39 using PyFluxAlgorithm = py::class_<PeakLikelihoodFluxAlgorithm, std::shared_ptr<PeakLikelihoodFluxAlgorithm>,
40  SimpleAlgorithm>;
41 using PyFluxControl = py::class_<PeakLikelihoodFluxControl>;
42 using PyFluxTransform =
43  py::class_<PeakLikelihoodFluxTransform, std::shared_ptr<PeakLikelihoodFluxTransform>, BaseTransform>;
44 
45 PyFluxControl declareFluxControl(py::module &mod) {
46  PyFluxControl cls(mod, "PeakLikelihoodFluxControl");
47 
48  LSST_DECLARE_CONTROL_FIELD(cls, PeakLikelihoodFluxControl, warpingKernelName);
49 
50  return cls;
51 }
52 
53 PyFluxAlgorithm declareFluxAlgorithm(py::module &mod) {
54  PyFluxAlgorithm cls(mod, "PeakLikelihoodFluxAlgorithm");
55 
56  cls.attr("FAILURE") = py::cast(PeakLikelihoodFluxAlgorithm::FAILURE);
57 
58  cls.def(py::init<PeakLikelihoodFluxAlgorithm::Control const &, std::string const &,
59  afw::table::Schema &>(),
60  "ctrl"_a, "name"_a, "schema"_a);
61 
62  cls.def("measure", &PeakLikelihoodFluxAlgorithm::measure, "measRecord"_a, "exposure"_a);
63  cls.def("fail", &PeakLikelihoodFluxAlgorithm::fail, "measRecord"_a, "error"_a = nullptr);
64 
65  return cls;
66 }
67 
68 PyFluxTransform declareFluxTransform(py::module &mod) {
69  PyFluxTransform cls(mod, "PeakLikelihoodFluxTransform");
70 
71  cls.def(py::init<PeakLikelihoodFluxTransform::Control const &, std::string const &,
72  afw::table::SchemaMapper &>(),
73  "ctrl"_a, "name"_a, "mapper"_a);
74 
75  return cls;
76 }
77 
78 } // <anonymous>
79 
80 PYBIND11_PLUGIN(peakLikelihoodFlux) {
81  py::module::import("lsst.afw.table");
82  py::module::import("lsst.meas.base.algorithm");
83  py::module::import("lsst.meas.base.flagHandler");
84  py::module::import("lsst.meas.base.transform");
85 
86  py::module mod("peakLikelihoodFlux");
87 
88  auto clsFluxControl = declareFluxControl(mod);
89  auto clsFluxAlgorithm = declareFluxAlgorithm(mod);
90  auto clsFluxTransform = declareFluxTransform(mod);
91 
92  clsFluxAlgorithm.attr("Control") = clsFluxControl;
93  clsFluxTransform.attr("Control") = clsFluxControl;
94 
96  PeakLikelihoodFluxTransform>(clsFluxAlgorithm, clsFluxControl, clsFluxTransform);
97 
98  return mod.ptr();
99 }
100 
101 } // base
102 } // meas
103 } // lsst
C++ control object for peak likelihood flux.
A measurement algorithm that estimates the peak flux, using a filtered image which has been convolved...
PYBIND11_PLUGIN(algorithm)
Definition: algorithm.cc:37
void declareAlgorithm(PyAlg &clsAlgorithm)
Wrap the implicit API used by meas_base&#39;s algorithms.
Definition: python.h:87