23 #include <pybind11/pybind11.h>
27 #include "ndarray/pybind11.h"
33 using namespace pybind11::literals;
37 template <
typename T1,
typename T2,
int C1,
int C2>
39 py::class_<LeastSquares>
cls(mod,
"LeastSquares");
40 py::enum_<LeastSquares::Factorization>(
cls,
"Factorization")
41 .value(
"NORMAL_EIGENSYSTEM", LeastSquares::Factorization::NORMAL_EIGENSYSTEM)
42 .value(
"NORMAL_CHOLESKY", LeastSquares::Factorization::NORMAL_CHOLESKY)
43 .value(
"DIRECT_SVD", LeastSquares::Factorization::DIRECT_SVD)
45 cls.def_static(
"fromDesignMatrix",
46 (
LeastSquares(*)(ndarray::Array<T1, 2, C1>
const &, ndarray::Array<T2, 1, C2>
const &,
48 LeastSquares::fromDesignMatrix<T1, T2, C1, C2>,
49 "design"_a,
"data"_a,
"factorization"_a = LeastSquares::NORMAL_EIGENSYSTEM);
50 cls.def_static(
"fromNormalEquations",
51 (
LeastSquares(*)(ndarray::Array<T1, 2, C1>
const &, ndarray::Array<T2, 1, C2>
const &,
53 LeastSquares::fromNormalEquations<T1, T2, C1, C2>,
54 "fisher"_a,
"rhs"_a,
"factorization"_a = LeastSquares::NORMAL_EIGENSYSTEM);
55 cls.def(
"getRank", &LeastSquares::getRank);
56 cls.def(
"setDesignMatrix",
57 (
void (
LeastSquares::*)(ndarray::Array<T1, 2, C1>
const &, ndarray::Array<T2, 1, C2>
const &)) &
58 LeastSquares::setDesignMatrix<T1, T2, C1, C2>);
59 cls.def(
"getDimension", &LeastSquares::getDimension);
60 cls.def(
"setNormalEquations",
61 (
void (
LeastSquares::*)(ndarray::Array<T1, 2, C1>
const &, ndarray::Array<T2, 1, C2>
const &)) &
62 LeastSquares::setNormalEquations<T1, T2, C1, C2>);
63 cls.def(
"getSolution", &LeastSquares::getSolution);
64 cls.def(
"getFisherMatrix", &LeastSquares::getFisherMatrix);
65 cls.def(
"getCovariance", &LeastSquares::getCovariance);
66 cls.def(
"getFactorization", &LeastSquares::getFactorization);
67 cls.def(
"getDiagnostic", &LeastSquares::getDiagnostic);
68 cls.def(
"getThreshold", &LeastSquares::getThreshold);
69 cls.def(
"setThreshold", &LeastSquares::setThreshold);
73 declareLeastSquares<double, double, 0, 0>(mod);