23#include "pybind11/pybind11.h"
24#include "pybind11/eigen.h"
33using namespace pybind11::literals;
41using PyShapeResult = py::class_<ShapeResult, std::shared_ptr<ShapeResult>>;
42using PyShapeResultKey = py::class_<ShapeResultKey, std::shared_ptr<ShapeResultKey>>;
45 wrappers.
wrapType(PyShapeResult(wrappers.module,
"ShapeResult"), [](
auto &mod,
auto &cls) {
46 cls.def(py::init<>());
47 cls.def(py::init<ShapeElement, ShapeElement, ShapeElement, ShapeCov const &>(),
"xx"_a,
"yy"_a,
"xy"_a,
49 cls.def(py::init<ShapeElement, ShapeElement, ShapeElement, ErrElement, ErrElement, ErrElement>(),
"xx"_a,
50 "yy"_a,
"xy"_a,
"xxErr"_a,
"yyErr"_a,
"xyErr"_a);
51 cls.def(
"getShape", &ShapeResult::getShape);
52 cls.def(
"getQuadrupole", &ShapeResult::getQuadrupole);
53 cls.def(
"setShape", &ShapeResult::setShape,
"shape"_a);
54 cls.def(
"getShapeErr", &ShapeResult::getShapeErr);
55 cls.def(
"setShapeErr", (void (ShapeResult::*)(ShapeCov const &)) &ShapeResult::setShapeErr,
"matrix"_a);
56 cls.def(
"setShapeErr",
57 (void (ShapeResult::*)(ErrElement, ErrElement, ErrElement)) &ShapeResult::setShapeErr,
58 "xxErr"_a,
"yyErr"_a,
"xyErr"_a);
59 cls.def_readwrite(
"xx", &ShapeResult::xx);
60 cls.def_readwrite(
"yy", &ShapeResult::yy);
61 cls.def_readwrite(
"xy", &ShapeResult::xy);
62 cls.def_readwrite(
"xxErr", &ShapeResult::xxErr);
63 cls.def_readwrite(
"yyErr", &ShapeResult::yyErr);
64 cls.def_readwrite(
"xyErr", &ShapeResult::xyErr);
65 cls.def_readwrite(
"xx_yy_Cov", &ShapeResult::xx_yy_Cov);
66 cls.def_readwrite(
"xx_xy_Cov", &ShapeResult::xx_xy_Cov);
67 cls.def_readwrite(
"yy_xy_Cov", &ShapeResult::yy_xy_Cov);
72 wrappers.
wrapType(PyShapeResultKey(wrappers.module,
"ShapeResultKey"), [](
auto &mod,
auto &cls) {
73 cls.def_static(
"addFields", &ShapeResultKey::addFields,
"schema"_a,
"name"_a,
"doc"_a,
"uncertainty"_a,
74 "coordType"_a = afw::table::CoordinateType::PIXEL);
76 cls.def(py::init<>());
77 cls.def(py::init<afw::table::QuadrupoleKey const &,
78 afw::table::CovarianceMatrixKey<ErrElement, 3> const &>(),
79 "shape"_a,
"shapeErr"_a);
80 cls.def(py::init<afw::table::SubSchema const &>(),
"subSchema"_a);
82 cls.def(
"__eq__", &ShapeResultKey::operator==, py::is_operator());
83 cls.def(
"__ne__", &ShapeResultKey::operator!=, py::is_operator());
85 cls.def(
"get", &ShapeResultKey::get,
"record"_a);
86 cls.def(
"set", &ShapeResultKey::set,
"record"_a,
"value"_a);
87 cls.def(
"isValid", &ShapeResultKey::isValid);
88 cls.def(
"getShape", &ShapeResultKey::getShape);
89 cls.def(
"getShapeErr", &ShapeResultKey::getShapeErr);
90 cls.def(
"getIxx", &ShapeResultKey::getIxx);
91 cls.def(
"getIyy", &ShapeResultKey::getIyy);
92 cls.def(
"getIxy", &ShapeResultKey::getIxy);
99 declareShapeResult(wrappers);
100 declareShapeResultKey(wrappers);
101 wrappers.
wrap([](
auto &mod) {
A helper class for subdividing pybind11 module across multiple translation units (i....
void wrap(WrapperCallback function)
Add a set of wrappers without defining a class.
PyType wrapType(PyType cls, ClassWrapperCallback function, bool setModuleName=true)
Add a type (class or enum) wrapper, deferring method and other attribute definitions until finish() i...
void wrapShapeUtilities(WrapperCollection &)
ShapeTrMatrix makeShapeTransformMatrix(geom::LinearTransform const &xform)
Construct a matrix suitable for transforming second moments.