25 #include "pybind11/pybind11.h"
26 #include "pybind11/eigen.h"
27 #include "ndarray/pybind11.h"
28 #include "ndarray/eigen.h"
36 using namespace pybind11::literals;
42 void declarePhotometryTransform(
py::module &mod) {
43 py::class_<PhotometryTransform, std::shared_ptr<PhotometryTransform>>
cls(mod,
"PhotometryTransform");
47 "x"_a,
"y"_a,
"value"_a);
48 cls.def(
"transformError",
49 (
double (PhotometryTransform::*)(
double,
double,
double,
double)
const) &
50 PhotometryTransform::transformError,
51 "x"_a,
"y"_a,
"value"_a,
"valueErr"_a);
52 cls.def(
"offsetParams", &PhotometryTransform::offsetParams);
54 cls.def(
"getNpar", &PhotometryTransform::getNpar);
55 cls.def(
"getParameters", &PhotometryTransform::getParameters);
56 cls.def(
"computeParameterDerivatives",
57 [](PhotometryTransform
const &
self,
double x,
double y,
double instFlux) {
58 Eigen::VectorXd derivatives(
self.getNpar());
59 self.computeParameterDerivatives(
x,
y, instFlux, derivatives);
67 void declarePhotometryTransformSpatiallyInvariant(
py::module &mod) {
68 py::class_<PhotometryTransformSpatiallyInvariant, std::shared_ptr<PhotometryTransformSpatiallyInvariant>,
70 cls(mod,
"PhotometryTransformSpatiallyInvariant");
73 void declareFluxTransformSpatiallyInvariant(
py::module &mod) {
74 py::class_<FluxTransformSpatiallyInvariant, std::shared_ptr<FluxTransformSpatiallyInvariant>,
75 PhotometryTransformSpatiallyInvariant, PhotometryTransform>
76 cls(mod,
"FluxTransformSpatiallyInvariant");
78 cls.def(py::init<double>(),
"value"_a = 1);
81 void declareMagnitudeTransformSpatiallyInvariant(
py::module &mod) {
82 py::class_<MagnitudeTransformSpatiallyInvariant, std::shared_ptr<MagnitudeTransformSpatiallyInvariant>,
83 PhotometryTransformSpatiallyInvariant, PhotometryTransform>
84 cls(mod,
"MagnitudeTransformSpatiallyInvariant");
86 cls.def(py::init<double>(),
"value"_a = 0);
89 void declarePhotometryTransformChebyshev(
py::module &mod) {
90 py::class_<PhotometryTransformChebyshev, std::shared_ptr<PhotometryTransformChebyshev>,
92 cls(mod,
"PhotometryTransformChebyshev");
94 cls.def(
"getCoefficients", &PhotometryTransformChebyshev::getCoefficients);
95 cls.def(
"getOrder", &PhotometryTransformChebyshev::getOrder);
96 cls.def(
"getBBox", &PhotometryTransformChebyshev::getBBox);
103 void declareFluxTransformChebyshev(
py::module &mod) {
104 py::class_<FluxTransformChebyshev, std::shared_ptr<FluxTransformChebyshev>, PhotometryTransformChebyshev>
105 cls(mod,
"FluxTransformChebyshev");
107 cls.def(py::init<size_t, geom::Box2D const &>(),
"order"_a,
"bbox"_a);
112 void declareMagnitudeTransformChebyshev(
py::module &mod) {
113 py::class_<MagnitudeTransformChebyshev, std::shared_ptr<MagnitudeTransformChebyshev>,
114 PhotometryTransformChebyshev>
115 cls(mod,
"MagnitudeTransformChebyshev");
117 cls.def(py::init<size_t, geom::Box2D const &>(),
"order"_a,
"bbox"_a);
123 declarePhotometryTransform(mod);
125 declarePhotometryTransformSpatiallyInvariant(mod);
126 declareFluxTransformSpatiallyInvariant(mod);
127 declareMagnitudeTransformSpatiallyInvariant(mod);
128 declarePhotometryTransformChebyshev(mod);
129 declareFluxTransformChebyshev(mod);
130 declareMagnitudeTransformChebyshev(mod);