23 #include "pybind11/pybind11.h"
27 #include "lsst/pex/config/python.h"
32 namespace py = pybind11;
33 using namespace pybind11::literals;
41 using PyFluxAlgorithm = py::class_<ScaledApertureFluxAlgorithm, std::shared_ptr<ScaledApertureFluxAlgorithm>,
43 using PyFluxControl = py::class_<ScaledApertureFluxControl>;
44 using PyFluxTransform =
45 py::class_<ScaledApertureFluxTransform, std::shared_ptr<ScaledApertureFluxTransform>, BaseTransform>;
47 PyFluxControl declareFluxControl(py::module &mod) {
48 PyFluxControl cls(mod,
"ScaledApertureFluxControl");
50 LSST_DECLARE_CONTROL_FIELD(cls, ScaledApertureFluxControl, scale);
51 LSST_DECLARE_CONTROL_FIELD(cls, ScaledApertureFluxControl, shiftKernel);
53 cls.def(py::init<>());
58 PyFluxAlgorithm declareFluxAlgorithm(py::module &mod) {
59 PyFluxAlgorithm cls(mod,
"ScaledApertureFluxAlgorithm");
61 cls.def(py::init<ScaledApertureFluxAlgorithm::Control
const &, std::string
const &,
62 afw::table::Schema &>(),
63 "ctrl"_a,
"name"_a,
"schema"_a);
65 cls.def(
"measure", &ScaledApertureFluxAlgorithm::measure,
"measRecord"_a,
"exposure"_a);
66 cls.def(
"fail", &ScaledApertureFluxAlgorithm::fail,
"measRecord"_a,
"error"_a =
nullptr);
71 PyFluxTransform declareFluxTransform(py::module &mod) {
72 PyFluxTransform cls(mod,
"ScaledApertureFluxTransform");
74 cls.def(py::init<ScaledApertureFluxTransform::Control
const &, std::string
const &,
75 afw::table::SchemaMapper &>(),
76 "ctrl"_a,
"name"_a,
"mapper"_a);
84 py::module::import(
"lsst.afw.table");
85 py::module::import(
"lsst.meas.base.algorithm");
86 py::module::import(
"lsst.meas.base.fluxUtilities");
87 py::module::import(
"lsst.meas.base.transform");
89 py::module mod(
"scaledApertureFlux");
91 auto clsFluxControl = declareFluxControl(mod);
92 auto clsFluxAlgorithm = declareFluxAlgorithm(mod);
93 auto clsFluxTransform = declareFluxTransform(mod);
95 clsFluxAlgorithm.attr(
"Control") = clsFluxControl;
96 clsFluxTransform.attr(
"Control") = clsFluxControl;
Measure the flux in an aperture scaled to the PSF.
PYBIND11_PLUGIN(algorithm)
void declareAlgorithm(PyAlg &clsAlgorithm)
Wrap the implicit API used by meas_base's algorithms.