24 #include "pybind11/pybind11.h"
25 #include "pybind11/stl.h"
27 #include "numpy/arrayobject.h"
28 #include "ndarray/pybind11.h"
30 #include "lsst/pex/config/python.h"
33 namespace py = pybind11;
34 using namespace pybind11::literals;
41 using PyUnitTransformedLikelihoodControl =
42 py::class_<UnitTransformedLikelihoodControl, std::shared_ptr<UnitTransformedLikelihoodControl>>;
44 using PyEpochFootprint = py::class_<EpochFootprint, std::shared_ptr<EpochFootprint>>;
46 using PyUnitTransformedLikelihood =
47 py::class_<UnitTransformedLikelihood, std::shared_ptr<UnitTransformedLikelihood>, Likelihood>;
49 PYBIND11_PLUGIN(unitTransformedLikelihood) {
50 py::module::import(
"lsst.afw.geom.ellipses");
51 py::module::import(
"lsst.afw.detection");
52 py::module::import(
"lsst.afw.image");
53 py::module::import(
"lsst.meas.modelfit.model");
54 py::module::import(
"lsst.meas.modelfit.likelihood");
55 py::module::import(
"lsst.meas.modelfit.unitSystem");
59 if (_import_array() < 0) {
60 PyErr_SetString(PyExc_ImportError,
"numpy.core.multiarray failed to import");
64 PyUnitTransformedLikelihoodControl clsControl(mod,
"UnitTransformedLikelihoodControl");
65 LSST_DECLARE_CONTROL_FIELD(clsControl, UnitTransformedLikelihoodControl, usePixelWeights);
66 LSST_DECLARE_CONTROL_FIELD(clsControl, UnitTransformedLikelihoodControl, weightsMultiplier);
67 clsControl.def(py::init<bool>(),
"usePixelWeights"_a =
false);
69 PyEpochFootprint clsEpochFootprint(mod,
"EpochFootprint");
70 clsEpochFootprint.def(py::init<afw::detection::Footprint
const &, afw::image::Exposure<Pixel>
const &,
71 shapelet::MultiShapeletFunction
const &>(),
72 "footprint"_a,
"exposure"_a,
"psf"_a);
73 clsEpochFootprint.def_readonly(
"footprint", &EpochFootprint::footprint);
74 clsEpochFootprint.def_readonly(
"exposure", &EpochFootprint::exposure);
75 clsEpochFootprint.def_readonly(
"psf", &EpochFootprint::psf);
77 PyUnitTransformedLikelihood clsUnitTransformedLikelihood(mod,
"UnitTransformedLikelihood");
78 clsUnitTransformedLikelihood.def(
79 py::init<std::shared_ptr<Model>, ndarray::Array<Scalar const, 1, 1>
const &, UnitSystem
const &,
80 afw::coord::Coord
const &, afw::image::Exposure<Pixel>
const &,
81 afw::detection::Footprint
const &, shapelet::MultiShapeletFunction
const &,
82 UnitTransformedLikelihoodControl
const &>(),
83 "model"_a,
"fixed"_a,
"fitSys"_a,
"position"_a,
"exposure"_a,
"footprint"_a,
"psf"_a,
"ctrl"_a);
84 clsUnitTransformedLikelihood.def(
85 py::init<std::shared_ptr<Model>, ndarray::Array<Scalar const, 1, 1>
const &, UnitSystem
const &,
86 afw::coord::Coord
const &, std::vector<std::shared_ptr<EpochFootprint>>
const &,
87 UnitTransformedLikelihoodControl
const &>(),
88 "model"_a,
"fixed"_a,
"fitSys"_a,
"position"_a,
"epochFootprintList"_a,
"ctrl"_a);