23#include "pybind11/pybind11.h"
24#include "pybind11/eigen.h"
32using namespace pybind11::literals;
40using PyCentroidChecker = py::class_<CentroidChecker>;
41using PyCentroidResult = py::classh<CentroidResult>;
42using PyCentroidResultKey = py::classh<CentroidResultKey>;
43using PyCentroidTransform = py::classh<CentroidTransform, BaseTransform>;
45void declareCentroidResult(lsst::cpputils::python::WrapperCollection &
wrappers) {
46 wrappers.wrapType(PyCentroidResult(
wrappers.module,
"CentroidResult"), [](
auto &mod,
auto &cls) {
47 cls.def_readwrite(
"x", &CentroidResult::x);
48 cls.def_readwrite(
"y", &CentroidResult::y);
49 cls.def_readwrite(
"xErr", &CentroidResult::xErr);
50 cls.def_readwrite(
"yErr", &CentroidResult::yErr);
51 cls.def_readwrite(
"x_y_Cov", &CentroidResult::x_y_Cov);
53 cls.def(py::init<>());
54 cls.def(py::init<CentroidElement, CentroidElement, CentroidCov const &>(),
"x"_a,
"y"_a,
"matrix"_a);
55 cls.def(py::init<CentroidElement, CentroidElement, ErrElement, ErrElement>(),
"x"_a,
"y"_a,
"xErr"_a,
58 cls.def(
"getCentroid", &CentroidResult::getCentroid);
59 cls.def(
"setCentroid", &CentroidResult::setCentroid,
"centroid"_a);
60 cls.def(
"getPoint", &CentroidResult::getPoint);
61 cls.def(
"getCentroidErr", &CentroidResult::getCentroidErr);
62 cls.def(
"setCentroidErr",
63 (void(CentroidResult::*)(CentroidCov const &)) & CentroidResult::setCentroidErr,
"matrix"_a);
64 cls.def(
"setCentroidErr",
65 (void(CentroidResult::*)(ErrElement, ErrElement)) & CentroidResult::setCentroidErr,
"xErr"_a,
67 cpputils::python::addOutputOp(cls,
"__str__");
68 cpputils::python::addOutputOp(cls,
"__repr__");
72void declareCentroidResultKey(lsst::cpputils::python::WrapperCollection &
wrappers) {
73 wrappers.wrapType(PyCentroidResultKey(
wrappers.module,
"CentroidResultKey"), [](
auto &mod,
auto &cls) {
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_static(
"addFields", &CentroidResultKey::addFields,
"schema"_a,
"name"_a,
"doc"_a,
83 cls.def(
"__eq__", &CentroidResultKey::operator==, py::is_operator());
84 cls.def(
"__nq__", &CentroidResultKey::operator!=, py::is_operator());
86 cls.def(
"get", &CentroidResultKey::get,
"record"_a);
87 cls.def(
"set", &CentroidResultKey::set,
"record"_a,
"value"_a);
88 cls.def(
"isValid", &CentroidResultKey::isValid);
89 cls.def(
"getCentroid", &CentroidResultKey::getCentroid);
90 cls.def(
"getCentroidErr", &CentroidResultKey::getCentroidErr);
91 cls.def(
"getX", &CentroidResultKey::getX);
92 cls.def(
"getY", &CentroidResultKey::getY);
96void declareCentroidTransform(lsst::cpputils::python::WrapperCollection &
wrappers) {
97 wrappers.wrapType(PyCentroidTransform(
wrappers.module,
"CentroidTransform"), [](
auto &mod,
auto &cls) {
98 cls.def(py::init<std::string const &, afw::table::SchemaMapper &>(),
"name"_a,
"mapper"_a);
100 cls.def(
"__call__", &CentroidTransform::operator(),
"inputCatalog"_a,
"outputCatalog"_a,
"wcs"_a,
105void declareCentroidChecker(lsst::cpputils::python::WrapperCollection &
wrappers) {
106 wrappers.wrapType(PyCentroidChecker(
wrappers.module,
"CentroidChecker"), [](
auto &mod,
auto &cls) {
107 cls.def(py::init<afw::table::Schema &, std::string const &, bool, double>(),
"schema"_a,
"name"_a,
108 "inside"_a = true,
"maxDistFromPeak"_a = -1.0);
110 cls.def(
"__call__", &CentroidChecker::operator(),
"record"_a);
114void declareUncertaintyEnum(lsst::cpputils::python::WrapperCollection &
wrappers) {
115 wrappers.wrapType(py::enum_<UncertaintyEnum>(
wrappers.module,
"UncertaintyEnum"),
116 [](
auto &mod,
auto &enm) {
117 enm.value(
"NO_UNCERTAINTY", UncertaintyEnum::NO_UNCERTAINTY);
118 enm.value(
"SIGMA_ONLY", UncertaintyEnum::SIGMA_ONLY);
119 enm.value(
"FULL_COVARIANCE", UncertaintyEnum::FULL_COVARIANCE);
A helper class for subdividing pybind11 module across multiple translation units (i....
void wrapCentroidUtilities(WrapperCollection &)