23 #include <pybind11/pybind11.h> 
   26 #include "ndarray/pybind11.h" 
   38 void declareKdTree(lsst::utils::python::WrapperCollection &wrappers, 
const std::string &suffix) {
 
   40             py::class_<
KdTree<T>>(wrappers.module, (
"KdTree" + suffix).c_str()), [](
auto &mod, 
auto &cls) {
 
   41                 cls.def(py::init<>());
 
   42                 cls.def(
"Initialize", &KdTree<T>::Initialize);
 
   43                 cls.def(
"removePoint", &KdTree<T>::removePoint);
 
   44                 cls.def(
"getData", (T(KdTree<T>::*)(int, int) const) & KdTree<T>::getData);
 
   45                 cls.def(
"getData", (ndarray::Array<T, 1, 1>(KdTree<T>::*)(int) const) & KdTree<T>::getData);
 
   46                 cls.def(
"addPoint", &KdTree<T>::addPoint);
 
   47                 cls.def(
"getNPoints", &KdTree<T>::getNPoints);
 
   48                 cls.def(
"getTreeNode", &KdTree<T>::getTreeNode);
 
   49                 cls.def(
"findNeighbors", &KdTree<T>::findNeighbors);
 
   54 void declareCovariograms(lsst::utils::python::WrapperCollection &wrappers, 
const std::string &suffix) {
 
   58                               wrappers.module, (
"Covariogram" + suffix).c_str()),
 
   59                       [](
auto &mod, 
auto &cls) {
 
   60                           cls.def(py::init<>());
 
   61                           cls.def(
"__call__", &Covariogram<T>::operator());
 
   66                     wrappers.module, (
"SquaredExpCovariogram" + suffix).c_str()),
 
   67             [](
auto &mod, 
auto &cls) {
 
   68                 cls.def(py::init<>());
 
   69                 cls.def(
"__call__", &SquaredExpCovariogram<T>::operator());
 
   70                 cls.def(
"setEllSquared", &SquaredExpCovariogram<T>::setEllSquared);
 
   75                     wrappers.module, (
"NeuralNetCovariogram" + suffix).c_str()),
 
   76             [](
auto &mod, 
auto &cls) {
 
   77                 cls.def(py::init<>());
 
   78                 cls.def(
"setSigma0", &NeuralNetCovariogram<T>::setSigma0);
 
   79                 cls.def(
"setSigma1", &NeuralNetCovariogram<T>::setSigma1);
 
   84 void declareGaussianProcess(lsst::utils::python::WrapperCollection &wrappers, 
const std::string &suffix) {
 
   87             [](
auto &mod, 
auto &cls) {
 
   89                 cls.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 1, 1> const &,
 
   90                                  std::shared_ptr<Covariogram<T>> const &>());
 
   91                 cls.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 1, 1> const &,
 
   92                                  ndarray::Array<T, 1, 1> const &, ndarray::Array<T, 1, 1> const &,
 
   93                                  std::shared_ptr<Covariogram<T>> const &>());
 
   94                 cls.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 2, 2> const &,
 
   95                                  std::shared_ptr<Covariogram<T>> const &>());
 
   96                 cls.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 1, 1> const &,
 
   97                                  ndarray::Array<T, 1, 1> const &, ndarray::Array<T, 2, 2> const &,
 
   98                                  std::shared_ptr<Covariogram<T>> const &>());
 
  100                 cls.def(
"interpolate",
 
  101                         (T(GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1> const &,
 
  103                                 GaussianProcess<T>::interpolate);
 
  104                 cls.def(
"interpolate",
 
  105                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1>,
 
  106                                                       ndarray::Array<T, 1, 1> const &, int) const) &
 
  107                                 GaussianProcess<T>::interpolate);
 
  108                 cls.def(
"selfInterpolate",
 
  109                         (T(GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, int, int) const) &
 
  110                                 GaussianProcess<T>::selfInterpolate);
 
  111                 cls.def(
"selfInterpolate",
 
  112                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1>, int,
 
  114                                 GaussianProcess<T>::selfInterpolate);
 
  115                 cls.def(
"setLambda", &GaussianProcess<T>::setLambda);
 
  116                 cls.def(
"setCovariogram", &GaussianProcess<T>::setCovariogram);
 
  117                 cls.def(
"addPoint", (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1> const &, T)) &
 
  118                                             GaussianProcess<T>::addPoint);
 
  119                 cls.def(
"addPoint", (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1> const &,
 
  120                                                                   ndarray::Array<T, 1, 1> const &)) &
 
  121                                             GaussianProcess<T>::addPoint);
 
  122                 cls.def(
"batchInterpolate",
 
  123                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1>,
 
  124                                                       ndarray::Array<T, 2, 2> const &) const) &
 
  125                                 GaussianProcess<T>::batchInterpolate);
 
  126                 cls.def(
"batchInterpolate",
 
  127                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>,
 
  128                                                       ndarray::Array<T, 2, 2> const &) const) &
 
  129                                 GaussianProcess<T>::batchInterpolate);
 
  130                 cls.def(
"batchInterpolate",
 
  131                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>, ndarray::Array<T, 2, 2>,
 
  132                                                       ndarray::Array<T, 2, 2> const &) const) &
 
  133                                 GaussianProcess<T>::batchInterpolate);
 
  134                 cls.def(
"batchInterpolate",
 
  135                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>,
 
  136                                                       ndarray::Array<T, 2, 2> const &) const) &
 
  137                                 GaussianProcess<T>::batchInterpolate);
 
  138                 cls.def(
"setKrigingParameter", &GaussianProcess<T>::setKrigingParameter);
 
  139                 cls.def(
"removePoint", &GaussianProcess<T>::removePoint);
 
  140                 cls.def(
"getNPoints", &GaussianProcess<T>::getNPoints);
 
  142                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>, ndarray::Array<T, 1, 1>,
 
  143                                                       ndarray::Array<int, 1, 1>) const) &
 
  144                                 GaussianProcess<T>::getData);
 
  146                         (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>, ndarray::Array<T, 2, 2>,
 
  147                                                       ndarray::Array<int, 1, 1>) const) &
 
  148                                 GaussianProcess<T>::getData);
 
  154     declareCovariograms<double>(wrappers, 
"D");
 
  155     declareGaussianProcess<double>(wrappers, 
"D");
 
  156     declareKdTree<double>(wrappers, 
"D");
 
The parent class of covariogram functions for use in Gaussian Process interpolation.
Stores values of a function sampled on an image and allows you to interpolate the function to unsampl...
The data for GaussianProcess is stored in a KD tree to facilitate nearest-neighbor searches.
a Covariogram that recreates a neural network with one hidden layer and infinite units in that layer
void wrapGaussianProcess(lsst::utils::python::WrapperCollection &wrappers)
A base class for image defects.