23 #include "pybind11/pybind11.h" 27 #include "lsst/pex/config/python.h" 32 namespace py = pybind11;
41 using PyBlendenessAlgorithm =
42 py::class_<BlendednessAlgorithm, std::shared_ptr<BlendednessAlgorithm>, SimpleAlgorithm>;
43 using PyBlendenessControl = py::class_<BlendednessControl>;
45 PyBlendenessControl declareBlendednessControl(py::module &mod) {
46 PyBlendenessControl cls(mod,
"BlendednessControl");
48 LSST_DECLARE_CONTROL_FIELD(cls, BlendednessControl, doOld);
49 LSST_DECLARE_CONTROL_FIELD(cls, BlendednessControl, doFlux);
50 LSST_DECLARE_CONTROL_FIELD(cls, BlendednessControl, doShape);
51 LSST_DECLARE_CONTROL_FIELD(cls, BlendednessControl, nSigmaWeightMax);
53 cls.def(py::init<>());
58 PyBlendenessAlgorithm declareBlendednessAlgorithm(py::module &mod) {
59 PyBlendenessAlgorithm cls(mod,
"BlendednessAlgorithm");
61 cls.def(py::init<BlendednessAlgorithm::Control const &, std::string const &, afw::table::Schema &>(),
62 "ctrl"_a,
"name"_a,
"schema"_a);
64 cls.attr(
"FAILURE") = py::cast(BlendednessAlgorithm::FAILURE);
65 cls.attr(
"NO_CENTROID") = py::cast(BlendednessAlgorithm::NO_CENTROID);
66 cls.attr(
"NO_SHAPE") = py::cast(BlendednessAlgorithm::NO_SHAPE);
68 cls.def_static(
"computeAbsExpectation", &BlendednessAlgorithm::computeAbsExpectation,
69 "data"_a,
"variance"_a);
70 cls.def_static(
"computeAbsBias", &BlendednessAlgorithm::computeAbsBias,
71 "mu"_a,
"variance"_a);
72 cls.def(
"measureChildPixels", &BlendednessAlgorithm::measureChildPixels,
"image"_a,
"child"_a);
73 cls.def(
"measureParentPixels", &BlendednessAlgorithm::measureParentPixels,
"image"_a,
"child"_a);
74 cls.def(
"measure", &BlendednessAlgorithm::measure,
"measRecord"_a,
"exposure"_a);
75 cls.def(
"fail", &BlendednessAlgorithm::measure,
"measRecord"_a,
"error"_a =
nullptr);
83 py::module::import(
"lsst.afw.table");
84 py::module::import(
"lsst.meas.base.algorithm");
85 py::module::import(
"lsst.meas.base.flagHandler");
87 py::module mod(
"blendedness");
89 auto clsBlendednessControl = declareBlendednessControl(mod);
90 auto clsBlendednessAlgorithm = declareBlendednessAlgorithm(mod);
92 clsBlendednessAlgorithm.attr(
"Control") = clsBlendednessControl;
94 python::declareAlgorithm<BlendednessAlgorithm, BlendednessControl>(clsBlendednessAlgorithm,
95 clsBlendednessControl);
PYBIND11_PLUGIN(blendedness)