23 #include "pybind11/pybind11.h"
24 #include "pybind11/stl.h"
34 using namespace pybind11::literals;
42 void declareDipoleCentroidControl(
py::module &mod) {
43 py::class_<DipoleCentroidControl, std::shared_ptr<DipoleCentroidControl>>
cls(mod,
44 "DipoleCentroidControl");
46 cls.def(py::init<>());
49 void declareDipoleFluxControl(
py::module &mod) {
50 py::class_<DipoleFluxControl, std::shared_ptr<DipoleFluxControl>>
cls(mod,
"DipoleFluxControl");
52 cls.def(py::init<>());
55 void declareDipolePsfFluxControl(
py::module &mod) {
57 mod,
"PsfDipoleFluxControl");
59 cls.def(py::init<>());
67 void declareDipoleCentroidAlgorithm(
py::module &mod) {
69 py::class_<DipoleCentroidAlgorithm, std::shared_ptr<DipoleCentroidAlgorithm>, meas::base::SimpleAlgorithm>
70 cls(mod,
"_DipoleCentroidAlgorithm");
72 cls.attr(
"FAILURE") = py::cast(DipoleCentroidAlgorithm::FAILURE);
73 cls.attr(
"POS_FLAG") = py::cast(DipoleCentroidAlgorithm::POS_FLAG);
74 cls.attr(
"NEG_FLAG") = py::cast(DipoleCentroidAlgorithm::NEG_FLAG);
75 cls.def_static(
"getFlagDefinitions", &DipoleCentroidAlgorithm::getFlagDefinitions,
76 py::return_value_policy::copy);
78 cls.def(
"getPositiveKeys", &DipoleCentroidAlgorithm::getPositiveKeys);
79 cls.def(
"getNegativeKeys", &DipoleCentroidAlgorithm::getNegativeKeys);
82 void declareDipoleFluxAlgorithm(
py::module &mod) {
84 py::class_<DipoleFluxAlgorithm, std::shared_ptr<DipoleFluxAlgorithm>, meas::base::SimpleAlgorithm>
cls(
85 mod,
"_DipoleFluxAlgorithm");
87 cls.attr(
"FAILURE") = py::cast(DipoleFluxAlgorithm::FAILURE);
88 cls.attr(
"POS_FLAG") = py::cast(DipoleFluxAlgorithm::POS_FLAG);
89 cls.attr(
"NEG_FLAG") = py::cast(DipoleFluxAlgorithm::NEG_FLAG);
90 cls.def_static(
"getFlagDefinitions", &DipoleFluxAlgorithm::getFlagDefinitions,
91 py::return_value_policy::copy);
93 cls.def(
"getPositiveKeys", &DipoleFluxAlgorithm::getPositiveKeys);
94 cls.def(
"getNegativeKeys", &DipoleFluxAlgorithm::getNegativeKeys);
98 py::module::import(
"lsst.meas.base");
100 py::class_<NaiveDipoleFlux, std::shared_ptr<NaiveDipoleFlux>, DipoleFluxAlgorithm>
cls(mod,
103 cls.def(py::init<NaiveDipoleFlux::Control const &, std::string const &, afw::table::Schema &>(),
"ctrl"_a,
104 "name"_a,
"schema"_a);
107 cls.def(
"fail", &NaiveDipoleFlux::fail,
"measRecord"_a,
"error"_a = NULL);
110 void declareNaiveDipoleCentroid(
py::module &mod) {
111 py::class_<NaiveDipoleCentroid, std::shared_ptr<NaiveDipoleCentroid>, DipoleCentroidAlgorithm>
cls(
112 mod,
"NaiveDipoleCentroid");
114 cls.def(py::init<NaiveDipoleCentroid::Control const &, std::string const &, afw::table::Schema &>(),
115 "ctrl"_a,
"name"_a,
"schema"_a);
117 cls.def(
"getCenterKeys", &NaiveDipoleCentroid::getCenterKeys);
118 cls.def(
"getPositiveKeys", &NaiveDipoleCentroid::getPositiveKeys);
119 cls.def(
"getNegativeKeys", &NaiveDipoleCentroid::getNegativeKeys);
122 cls.def(
"mergeCentroids", &NaiveDipoleCentroid::mergeCentroids,
"source"_a,
"posValue"_a,
"negValue"_a);
123 cls.def(
"fail", &NaiveDipoleCentroid::fail,
"measRecord"_a,
"error"_a = NULL);
127 py::class_<PsfDipoleFlux, std::shared_ptr<PsfDipoleFlux>, DipoleFluxAlgorithm>
cls(mod,
"PsfDipoleFlux");
129 cls.def(py::init<PsfDipoleFlux::Control const &, std::string const &, afw::table::Schema &>(),
"ctrl"_a,
130 "name"_a,
"schema"_a);
132 cls.def(
"chi2", &PsfDipoleFlux::chi2,
"source"_a,
"exposure"_a,
"negCenterX"_a,
"negCenterY"_a,
133 "negFlux"_a,
"posCenterX"_a,
"posCenterY"_a,
"posFlux"_a);
135 cls.def(
"fail", &PsfDipoleFlux::fail,
"measRecord"_a,
"error"_a = NULL);
141 py::module::import(
"lsst.afw.table");
142 py::module::import(
"lsst.meas.base");
143 py::module::import(
"lsst.pex.config");
145 declareDipoleCentroidControl(mod);
146 declareDipoleFluxControl(mod);
147 declareDipolePsfFluxControl(mod);
148 declareDipoleCentroidAlgorithm(mod);
149 declareDipoleFluxAlgorithm(mod);
150 declareNaiveDipoleFlux(mod);
151 declareNaiveDipoleCentroid(mod);
152 declarePsfDipoleFlux(mod);