23 #include "pybind11/pybind11.h"
27 #include "numpy/arrayobject.h"
28 #include "ndarray/pybind11.h"
32 namespace py = pybind11;
33 using namespace pybind11::literals;
41 using PyCentroidChecker = py::class_<CentroidChecker>;
42 using PyCentroidResult = py::class_<CentroidResult, std::shared_ptr<CentroidResult>>;
43 using PyCentroidResultKey = py::class_<CentroidResultKey>;
44 using PyCentroidTransform = py::class_<CentroidTransform, std::shared_ptr<CentroidTransform>, BaseTransform>;
46 void declareCentroidResult(py::module & mod) {
47 PyCentroidResult cls(mod,
"CentroidResult");
51 cls.def_readwrite(
"xSigma", &CentroidResult::xSigma);
52 cls.def_readwrite(
"ySigma", &CentroidResult::ySigma);
53 cls.def_readwrite(
"x_y_Cov", &CentroidResult::x_y_Cov);
55 cls.def(py::init<>());
56 cls.def(py::init<CentroidElement, CentroidElement, CentroidCov const &>(),
"x"_a,
"y"_a,
"matrix"_a);
57 cls.def(py::init<CentroidElement, CentroidElement, ErrElement, ErrElement>(),
"x"_a,
"y"_a,
"xSigma"_a,
60 cls.def(
"getCentroid", &CentroidResult::getCentroid);
61 cls.def(
"setCentroid", &CentroidResult::setCentroid,
"centroid"_a);
62 cls.def(
"getPoint", &CentroidResult::getPoint);
63 cls.def(
"getCentroidErr", &CentroidResult::getCentroidErr);
64 cls.def(
"setCentroidErr",
65 (
void (CentroidResult::*)(
CentroidCov const &)) & CentroidResult::setCentroidErr,
"matrix"_a);
66 cls.def(
"setCentroidErr",
71 void declareCentroidResultKey(py::module & mod) {
72 PyCentroidResultKey cls(mod,
"CentroidResultKey");
74 cls.def(py::init<>());
75 cls.def(py::init<afw::table::PointKey<CentroidElement>
const &,
76 afw::table::CovarianceMatrixKey<ErrElement, 2>
const &>(),
77 "centroid"_a,
"uncertainty"_a);
78 cls.def(py::init<afw::table::SubSchema const &>(),
"subSchema"_a);
80 cls.def(
"__eq__", &CentroidResultKey::operator==, py::is_operator());
81 cls.def(
"__nq__", &CentroidResultKey::operator!=, py::is_operator());
83 cls.def(
"get", &CentroidResultKey::get,
"record"_a);
84 cls.def(
"set", &CentroidResultKey::set,
"record"_a,
"value"_a);
85 cls.def(
"isValid", &CentroidResultKey::isValid);
86 cls.def(
"getCentroid", &CentroidResultKey::getCentroid);
87 cls.def(
"getCentroidErr", &CentroidResultKey::getCentroidErr);
88 cls.def(
"getX", &CentroidResultKey::getX);
89 cls.def(
"getY", &CentroidResultKey::getY);
92 void declareCentroidTransform(py::module & mod) {
93 PyCentroidTransform cls(mod,
"CentroidTransform");
95 cls.def(py::init<std::string const &, afw::table::SchemaMapper &>(),
"name"_a,
"mapper"_a);
97 cls.def(
"__call__", &CentroidTransform::operator(),
"inputCatalog"_a,
"outputCatalog"_a,
"wcs"_a,
101 void declareCentroidChecker(py::module &mod) {
102 PyCentroidChecker cls(mod,
"CentroidChecker");
104 cls.def(py::init<afw::table::Schema &, std::string const &, bool, double>(),
"schema"_a,
"name"_a,
105 "inside"_a =
true,
"maxDistFromPeak"_a = -1.0);
107 cls.def(
"__call__", &CentroidChecker::operator(),
"record"_a);
113 py::module::import(
"lsst.afw.table");
114 py::module::import(
"lsst.meas.base.transform");
116 py::module mod(
"centroidUtilities");
118 if (_import_array() < 0) {
119 PyErr_SetString(PyExc_ImportError,
"numpy.core.multiarray failed to import");
123 declareCentroidResult(mod);
124 declareCentroidResultKey(mod);
125 declareCentroidTransform(mod);
126 declareCentroidChecker(mod);
Eigen::Matrix< ErrElement, 2, 2, Eigen::DontAlign > CentroidCov
PYBIND11_PLUGIN(algorithm)