23 #include "pybind11/pybind11.h"
27 namespace py = pybind11;
28 using namespace py::literals;
36 using PyFluxResult = py::class_<FluxResult, std::shared_ptr<FluxResult>>;
37 using PyFluxResultKey =
38 py::class_<FluxResultKey, std::shared_ptr<FluxResultKey>>;
39 using PyMagResult = py::class_<MagResult, std::shared_ptr<MagResult>>;
40 using PyMagResultKey =
41 py::class_<MagResultKey, std::shared_ptr<MagResultKey>>;
43 void declareFluxResult(py::module &mod) {
44 PyFluxResult cls(mod,
"FluxResult");
46 cls.def_readwrite(
"flux", &FluxResult::flux);
47 cls.def_readwrite(
"fluxSigma", &FluxResult::fluxSigma);
50 void declareFluxResultKey(py::module &mod) {
51 PyFluxResultKey cls(mod,
"FluxResultKey");
53 cls.def(py::init<>());
54 cls.def(py::init<afw::table::Key<meas::base::Flux>
const &, afw::table::Key<FluxErrElement>
const &>(),
55 "flux"_a,
"fluxSigma"_a);
56 cls.def(py::init<afw::table::SubSchema const &>());
58 cls.def(
"__eq__", &FluxResultKey::operator==, py::is_operator());
59 cls.def(
"__ne__", &FluxResultKey::operator!=, py::is_operator());
61 cls.def(
"get", &FluxResultKey::get);
62 cls.def(
"set", &FluxResultKey::set);
63 cls.def_static(
"addFields", &FluxResultKey::addFields,
"schema"_a,
"name"_a,
"doc"_a);
64 cls.def(
"isValid", &FluxResultKey::isValid);
65 cls.def(
"getFlux", &FluxResultKey::getFlux);
66 cls.def(
"getFluxSigma", &FluxResultKey::getFluxSigma);
69 void declareMagResult(py::module &mod) {
70 PyMagResult cls(mod,
"MagResult");
72 cls.def_readwrite(
"mag", &MagResult::mag);
73 cls.def_readwrite(
"magErr", &MagResult::magErr);
76 void declareMagResultKey(py::module &mod) {
77 PyMagResultKey cls(mod,
"MagResultKey");
79 cls.def(py::init<>());
80 cls.def(py::init<afw::table::SubSchema const &>());
82 cls.def(
"get", &MagResultKey::get);
84 (
void (MagResultKey::*)(afw::table::BaseRecord &, MagResult
const &)
const) & MagResultKey::set);
86 (
void (MagResultKey::*)(afw::table::BaseRecord &, std::pair<double, double>
const &)
const) &
88 cls.def_static(
"addFields", &MagResultKey::addFields,
"schema"_a,
"name"_a);
93 py::module::import(
"lsst.afw.table");
95 py::module mod(
"fluxUtilities");
97 declareFluxResult(mod);
98 declareFluxResultKey(mod);
99 declareMagResult(mod);
100 declareMagResultKey(mod);
PYBIND11_PLUGIN(algorithm)