| Directory: | ./ |
|---|---|
| File: | src/matrix/operator-python-module-py.cc |
| Date: | 2025-05-13 12:28:21 |
| Exec | Total | Coverage | |
|---|---|---|---|
| Lines: | 88 | 91 | 96.7% |
| Branches: | 16 | 32 | 50.0% |
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "dynamic-graph/python/module.hh" | ||
| 2 | #include "operator.hh" | ||
| 3 | |||
| 4 | namespace dg = dynamicgraph; | ||
| 5 | namespace dgs = dynamicgraph::sot; | ||
| 6 | namespace bp = boost::python; | ||
| 7 | |||
| 8 | typedef bp::return_value_policy<bp::reference_existing_object> | ||
| 9 | reference_existing_object; | ||
| 10 | |||
| 11 | template <typename Operator> | ||
| 12 | 70 | void exposeUnaryOp() { | |
| 13 | typedef dgs::UnaryOp<Operator> O_t; | ||
| 14 | dg::python::exposeEntity<O_t, bp::bases<dg::Entity>, | ||
| 15 | dg::python::AddCommands>() | ||
| 16 |
1/2✓ Branch 2 taken 35 times.
✗ Branch 3 not taken.
|
70 | .def_readonly("sin", &O_t::SIN) |
| 17 |
1/2✓ Branch 1 taken 35 times.
✗ Branch 2 not taken.
|
70 | .def_readonly("sout", &O_t::SOUT); |
| 18 | 70 | } | |
| 19 | |||
| 20 | template <typename Operator> | ||
| 21 | 30 | void exposeBinaryOp() { | |
| 22 | typedef dgs::BinaryOp<Operator> O_t; | ||
| 23 | dg::python::exposeEntity<O_t, bp::bases<dg::Entity>, | ||
| 24 | dg::python::AddCommands>() | ||
| 25 |
1/2✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
|
30 | .def_readonly("sin1", &O_t::SIN1) |
| 26 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
30 | .def_readonly("sin2", &O_t::SIN2) |
| 27 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
30 | .def_readonly("sout", &O_t::SOUT); |
| 28 | 30 | } | |
| 29 | |||
| 30 | template <typename Operator> | ||
| 31 | 26 | auto exposeVariadicOpBase() { | |
| 32 | typedef dgs::VariadicOp<Operator> O_t; | ||
| 33 | typedef typename O_t::Base B_t; | ||
| 34 | return dg::python::exposeEntity<O_t, bp::bases<dg::Entity>, | ||
| 35 | dg::python::AddCommands>() | ||
| 36 |
1/2✓ Branch 2 taken 13 times.
✗ Branch 3 not taken.
|
52 | .def_readonly("sout", &O_t::SOUT) |
| 37 | ✗ | .def("sin", &B_t::getSignalIn, reference_existing_object()) | |
| 38 |
1/2✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
|
26 | .add_property("n_sin", &B_t::getSignalNumber, &B_t::setSignalNumber, |
| 39 | "the number of input signal.") | ||
| 40 | |||
| 41 |
1/2✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
|
26 | .def("setSignalNumber", &B_t::setSignalNumber, |
| 42 |
1/2✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
|
52 | "set the number of input signal.", bp::arg("size")) |
| 43 |
1/2✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
|
26 | .def("getSignalNumber", &B_t::getSignalNumber, |
| 44 |
3/6✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 13 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 13 times.
✗ Branch 8 not taken.
|
78 | "get the number of input signal.", bp::arg("size")); |
| 45 | } | ||
| 46 | |||
| 47 | template <typename Operator> | ||
| 48 | struct exposeVariadicOpImpl { | ||
| 49 | 20 | static void run() { exposeVariadicOpBase<Operator>(); } | |
| 50 | }; | ||
| 51 | |||
| 52 | template <typename T> | ||
| 53 | struct exposeVariadicOpImpl<dgs::AdderVariadic<T> > { | ||
| 54 | 6 | static void run() { | |
| 55 | typedef dgs::VariadicOp<dgs::AdderVariadic<T> > E_t; | ||
| 56 |
1/2✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
|
6 | exposeVariadicOpBase<dgs::AdderVariadic<T> >().add_property( |
| 57 | ✗ | "coeffs", +[](E_t &e) { return e.op.coeffs; }, | |
| 58 | ✗ | +[](E_t &e, const dg::Vector &c) { e.op.setCoeffs(c); }, | |
| 59 | "the multipliers."); | ||
| 60 | 6 | } | |
| 61 | }; | ||
| 62 | |||
| 63 | template <typename Operator> | ||
| 64 | 26 | void exposeVariadicOp() { | |
| 65 | 26 | exposeVariadicOpImpl<Operator>::run(); | |
| 66 | 26 | } | |
| 67 | |||
| 68 |
2/4✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
4 | BOOST_PYTHON_MODULE(wrap) { |
| 69 | using namespace dynamicgraph; | ||
| 70 | using namespace dynamicgraph::sot; | ||
| 71 | |||
| 72 | 2 | exposeUnaryOp<VectorSelecter>(); | |
| 73 | 2 | exposeUnaryOp<VectorComponent>(); | |
| 74 | 2 | exposeUnaryOp<MatrixSelector>(); | |
| 75 | 2 | exposeUnaryOp<MatrixColumnSelector>(); | |
| 76 | 2 | exposeUnaryOp<MatrixTranspose>(); | |
| 77 | 2 | exposeUnaryOp<Diagonalizer>(); | |
| 78 | |||
| 79 | /* ---------------------------------------------------------------------- */ | ||
| 80 | /* --- INVERSION -------------------------------------------------------- */ | ||
| 81 | /* ---------------------------------------------------------------------- */ | ||
| 82 | 2 | exposeUnaryOp<Inverser<Matrix> >(); | |
| 83 | 2 | exposeUnaryOp<Inverser<MatrixHomogeneous> >(); | |
| 84 | 2 | exposeUnaryOp<Inverser<MatrixTwist> >(); | |
| 85 | 2 | exposeUnaryOp<Normalize>(); | |
| 86 | 2 | exposeUnaryOp<InverserRotation>(); | |
| 87 | 2 | exposeUnaryOp<InverserQuaternion>(); | |
| 88 | |||
| 89 | /* ----------------------------------------------------------------------- */ | ||
| 90 | /* --- SE3/SO3 conversions ----------------------------------------------- */ | ||
| 91 | /* ----------------------------------------------------------------------- */ | ||
| 92 | |||
| 93 | 2 | exposeUnaryOp<SkewSymToVector>(); | |
| 94 | 2 | exposeUnaryOp<PoseUThetaToMatrixHomo>(); | |
| 95 | 2 | exposeUnaryOp<MatrixHomoToPoseUTheta>(); | |
| 96 | 2 | exposeUnaryOp<MatrixHomoToSE3Vector>(); | |
| 97 | 2 | exposeUnaryOp<SE3VectorToMatrixHomo>(); | |
| 98 | 2 | exposeUnaryOp<PoseQuaternionToMatrixHomo>(); | |
| 99 | 2 | exposeUnaryOp<MatrixHomoToPoseQuaternion>(); | |
| 100 | 2 | exposeUnaryOp<MatrixHomoToPoseRollPitchYaw>(); | |
| 101 | 2 | exposeUnaryOp<PoseRollPitchYawToMatrixHomo>(); | |
| 102 | 2 | exposeUnaryOp<PoseRollPitchYawToPoseUTheta>(); | |
| 103 | 2 | exposeUnaryOp<HomoToMatrix>(); | |
| 104 | 2 | exposeUnaryOp<MatrixToHomo>(); | |
| 105 | 2 | exposeUnaryOp<HomoToTwist>(); | |
| 106 | 2 | exposeUnaryOp<HomoToRotation>(); | |
| 107 | 2 | exposeUnaryOp<MatrixHomoToPose>(); | |
| 108 | 2 | exposeUnaryOp<RPYToMatrix>(); | |
| 109 | 2 | exposeUnaryOp<MatrixToRPY>(); | |
| 110 | 2 | exposeUnaryOp<RPYToQuaternion>(); | |
| 111 | 2 | exposeUnaryOp<QuaternionToRPY>(); | |
| 112 | 2 | exposeUnaryOp<QuaternionToMatrix>(); | |
| 113 | 2 | exposeUnaryOp<MatrixToQuaternion>(); | |
| 114 | 2 | exposeUnaryOp<MatrixToUTheta>(); | |
| 115 | 2 | exposeUnaryOp<UThetaToQuaternion>(); | |
| 116 | |||
| 117 | /* --- MULTIPLICATION --------------------------------------------------- */ | ||
| 118 | |||
| 119 | 2 | exposeBinaryOp<Multiplier_double_vector>(); | |
| 120 | 2 | exposeBinaryOp<Multiplier_matrix_vector>(); | |
| 121 | 2 | exposeBinaryOp<Multiplier_matrixHomo_vector>(); | |
| 122 | 2 | exposeBinaryOp<Multiplier_matrixTwist_vector>(); | |
| 123 | |||
| 124 | /* --- SUBSTRACTION ----------------------------------------------------- */ | ||
| 125 | 2 | exposeBinaryOp<Substraction<dynamicgraph::Matrix> >(); | |
| 126 | 2 | exposeBinaryOp<Substraction<dynamicgraph::Vector> >(); | |
| 127 | 2 | exposeBinaryOp<Substraction<double> >(); | |
| 128 | |||
| 129 | /* --- STACK ------------------------------------------------------------ */ | ||
| 130 | 2 | exposeBinaryOp<VectorStack>(); | |
| 131 | |||
| 132 | /* ---------------------------------------------------------------------- */ | ||
| 133 | 2 | exposeBinaryOp<Composer>(); | |
| 134 | |||
| 135 | /* --- CONVOLUTION PRODUCT ---------------------------------------------- */ | ||
| 136 | 2 | exposeBinaryOp<ConvolutionTemporal>(); | |
| 137 | |||
| 138 | /* --- BOOLEAN REDUCTION ------------------------------------------------ */ | ||
| 139 | 2 | exposeBinaryOp<Comparison<double> >(); | |
| 140 | 2 | exposeBinaryOp<MatrixComparison<Vector> >(); | |
| 141 | |||
| 142 | 2 | exposeBinaryOp<WeightedAdder<dynamicgraph::Matrix> >(); | |
| 143 | 2 | exposeBinaryOp<WeightedAdder<dynamicgraph::Vector> >(); | |
| 144 | 2 | exposeBinaryOp<WeightedAdder<double> >(); | |
| 145 | |||
| 146 | /* --- VectorMix ------------------------------------------------------------ | ||
| 147 | */ | ||
| 148 | 2 | exposeVariadicOp<VectorMix>(); | |
| 149 | |||
| 150 | /* --- ADDITION --------------------------------------------------------- */ | ||
| 151 | 2 | exposeVariadicOp<AdderVariadic<Matrix> >(); | |
| 152 | 2 | exposeVariadicOp<AdderVariadic<Vector> >(); | |
| 153 | 2 | exposeVariadicOp<AdderVariadic<double> >(); | |
| 154 | |||
| 155 | /* --- MULTIPLICATION --------------------------------------------------- */ | ||
| 156 | 2 | exposeVariadicOp<Multiplier<Matrix> >(); | |
| 157 | 2 | exposeVariadicOp<Multiplier<Vector> >(); | |
| 158 | 2 | exposeVariadicOp<Multiplier<MatrixRotation> >(); | |
| 159 | 2 | exposeVariadicOp<Multiplier<MatrixHomogeneous> >(); | |
| 160 | 2 | exposeVariadicOp<Multiplier<MatrixTwist> >(); | |
| 161 | 2 | exposeVariadicOp<Multiplier<VectorQuaternion> >(); | |
| 162 | 2 | exposeVariadicOp<Multiplier<double> >(); | |
| 163 | |||
| 164 | /* --- BOOLEAN --------------------------------------------------------- */ | ||
| 165 | 2 | exposeVariadicOp<BoolOp<0> >(); | |
| 166 | 2 | exposeVariadicOp<BoolOp<1> >(); | |
| 167 | 2 | } | |
| 168 |