23 #include "pybind11/pybind11.h" 27 #include "lsst/pex/config/python.h" 32 namespace py = pybind11;
41 using PyCentroidAlgorithm =
42 py::class_<NaiveCentroidAlgorithm, std::shared_ptr<NaiveCentroidAlgorithm>, SimpleAlgorithm>;
43 using PyCentroidControl = py::class_<NaiveCentroidControl>;
44 using PyCentroidTransform =
45 py::class_<NaiveCentroidTransform, std::shared_ptr<NaiveCentroidTransform>, CentroidTransform>;
47 PyCentroidControl declareCentroidControl(py::module &mod) {
48 PyCentroidControl cls(mod,
"NaiveCentroidControl");
50 cls.def(py::init<>());
52 LSST_DECLARE_CONTROL_FIELD(cls, NaiveCentroidControl, background);
53 LSST_DECLARE_CONTROL_FIELD(cls, NaiveCentroidControl, doFootprintCheck);
54 LSST_DECLARE_CONTROL_FIELD(cls, NaiveCentroidControl, maxDistToPeak);
59 PyCentroidAlgorithm declareCentroidAlgorithm(py::module &mod) {
60 PyCentroidAlgorithm cls(mod,
"NaiveCentroidAlgorithm");
62 cls.attr(
"FAILURE") = py::cast(NaiveCentroidAlgorithm::FAILURE);
63 cls.attr(
"NO_COUNTS") = py::cast(NaiveCentroidAlgorithm::NO_COUNTS);
64 cls.attr(
"EDGE") = py::cast(NaiveCentroidAlgorithm::EDGE);
66 cls.def(py::init<NaiveCentroidAlgorithm::Control const &, std::string const &, afw::table::Schema &>(),
67 "ctrl"_a,
"name"_a,
"schema"_a);
69 cls.def(
"measure", &NaiveCentroidAlgorithm::measure,
"measRecord"_a,
"exposure"_a);
70 cls.def(
"fail", &NaiveCentroidAlgorithm::fail,
"measRecord"_a,
"error"_a =
nullptr);
75 PyCentroidTransform declareCentroidTransform(py::module &mod) {
76 PyCentroidTransform cls(mod,
"NaiveCentroidTransform");
78 cls.def(py::init<NaiveCentroidTransform::Control const &, std::string const &, afw::table::SchemaMapper &>(),
79 "ctrl"_a,
"name"_a,
"mapper"_a);
87 py::module::import(
"lsst.afw.table");
88 py::module::import(
"lsst.meas.base.algorithm");
89 py::module::import(
"lsst.meas.base.flagHandler");
90 py::module::import(
"lsst.meas.base.transform");
92 py::module mod(
"naiveCentroid");
95 auto clsCentroidControl = declareCentroidControl(mod);
96 auto clsCentroidAlgorithm = declareCentroidAlgorithm(mod);
97 auto clsCentroidTransform = declareCentroidTransform(mod);
99 clsCentroidAlgorithm.attr(
"Control") = clsCentroidControl;
100 clsCentroidTransform.attr(
"Control") = clsCentroidControl;
103 python::declareAlgorithm<NaiveCentroidAlgorithm, NaiveCentroidControl, NaiveCentroidTransform>(
104 clsCentroidAlgorithm, clsCentroidControl, clsCentroidTransform);
PYBIND11_PLUGIN(naiveCentroid)