LSSTApplications  20.0.0
LSSTDataManagementBasePackage
Functions
gaussianProcess.cc File Reference
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include "ndarray/pybind11.h"
#include "lsst/afw/math/GaussianProcess.h"

Go to the source code of this file.

Functions

template<typename T >
void declareKdTree (py::module &mod, const std::string &suffix)
 
template<typename T >
void declareCovariograms (py::module &mod, const std::string &suffix)
 
template<typename T >
void declareGaussianProcess (py::module &mod, const std::string &suffix)
 
 PYBIND11_MODULE (gaussianProcess, mod)
 

Function Documentation

◆ declareCovariograms()

template<typename T >
void declareCovariograms ( py::module &  mod,
const std::string suffix 
)

Definition at line 50 of file gaussianProcess.cc.

50  {
51  /* Covariogram */
52  py::class_<Covariogram<T>, std::shared_ptr<Covariogram<T>>> clsCovariogram(
53  mod, ("Covariogram" + suffix).c_str());
54  clsCovariogram.def(py::init<>());
55  clsCovariogram.def("__call__", &Covariogram<T>::operator());
56 
57  /* SquaredExpCovariogram */
58  py::class_<SquaredExpCovariogram<T>, std::shared_ptr<SquaredExpCovariogram<T>>, Covariogram<T>>
59  clsSquaredExpCovariogram(mod, ("SquaredExpCovariogram" + suffix).c_str());
60  clsSquaredExpCovariogram.def(py::init<>());
61  clsSquaredExpCovariogram.def("__call__", &SquaredExpCovariogram<T>::operator());
62  clsSquaredExpCovariogram.def("setEllSquared", &SquaredExpCovariogram<T>::setEllSquared);
63 
64  /* SquaredExpCovariogram */
65  py::class_<NeuralNetCovariogram<T>, std::shared_ptr<NeuralNetCovariogram<T>>, Covariogram<T>>
66  clsNeuralNetCovariogram(mod, ("NeuralNetCovariogram" + suffix).c_str());
67  clsNeuralNetCovariogram.def(py::init<>());
68  clsNeuralNetCovariogram.def("setSigma0", &NeuralNetCovariogram<T>::setSigma0);
69  clsNeuralNetCovariogram.def("setSigma1", &NeuralNetCovariogram<T>::setSigma1);
70 };

◆ declareGaussianProcess()

template<typename T >
void declareGaussianProcess ( py::module &  mod,
const std::string suffix 
)

Definition at line 73 of file gaussianProcess.cc.

73  {
74  py::class_<GaussianProcess<T>> clsGaussianProcess(mod, ("GaussianProcess" + suffix).c_str());
75  /* Constructors */
76  clsGaussianProcess.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 1, 1> const &,
77  std::shared_ptr<Covariogram<T>> const &>());
78  clsGaussianProcess.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 1, 1> const &,
79  ndarray::Array<T, 1, 1> const &, ndarray::Array<T, 1, 1> const &,
80  std::shared_ptr<Covariogram<T>> const &>());
81  clsGaussianProcess.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 2, 2> const &,
82  std::shared_ptr<Covariogram<T>> const &>());
83  clsGaussianProcess.def(py::init<ndarray::Array<T, 2, 2> const &, ndarray::Array<T, 1, 1> const &,
84  ndarray::Array<T, 1, 1> const &, ndarray::Array<T, 2, 2> const &,
85  std::shared_ptr<Covariogram<T>> const &>());
86  /* Members */
87  clsGaussianProcess.def(
88  "interpolate",
89  (T (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1> const &, int) const) &
91  clsGaussianProcess.def("interpolate",
92  (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1>,
93  ndarray::Array<T, 1, 1> const &, int) const) &
95  clsGaussianProcess.def("selfInterpolate",
96  (T (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, int, int) const) &
98  clsGaussianProcess.def(
99  "selfInterpolate",
100  (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1>, int, int) const) &
102  clsGaussianProcess.def("setLambda", &GaussianProcess<T>::setLambda);
103  clsGaussianProcess.def("setCovariogram", &GaussianProcess<T>::setCovariogram);
104  clsGaussianProcess.def("addPoint", (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1> const &, T)) &
106  clsGaussianProcess.def("addPoint", (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1> const &,
107  ndarray::Array<T, 1, 1> const &)) &
109  clsGaussianProcess.def("batchInterpolate",
110  (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 1, 1>,
111  ndarray::Array<T, 2, 2> const &) const) &
113  clsGaussianProcess.def(
114  "batchInterpolate",
115  (void (GaussianProcess<T>::*)(ndarray::Array<T, 1, 1>, ndarray::Array<T, 2, 2> const &) const) &
117  clsGaussianProcess.def("batchInterpolate",
118  (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>, ndarray::Array<T, 2, 2>,
119  ndarray::Array<T, 2, 2> const &) const) &
121  clsGaussianProcess.def(
122  "batchInterpolate",
123  (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>, ndarray::Array<T, 2, 2> const &) const) &
125  clsGaussianProcess.def("setKrigingParameter", &GaussianProcess<T>::setKrigingParameter);
126  clsGaussianProcess.def("removePoint", &GaussianProcess<T>::removePoint);
127  clsGaussianProcess.def("getNPoints", &GaussianProcess<T>::getNPoints);
128  clsGaussianProcess.def("getData",
129  (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>, ndarray::Array<T, 1, 1>,
130  ndarray::Array<int, 1, 1>) const) &
132  clsGaussianProcess.def("getData",
133  (void (GaussianProcess<T>::*)(ndarray::Array<T, 2, 2>, ndarray::Array<T, 2, 2>,
134  ndarray::Array<int, 1, 1>) const) &
136 };

◆ declareKdTree()

template<typename T >
void declareKdTree ( py::module &  mod,
const std::string suffix 
)

Definition at line 36 of file gaussianProcess.cc.

36  {
37  py::class_<KdTree<T>> clsKdTree(mod, ("KdTree" + suffix).c_str());
38  clsKdTree.def(py::init<>());
39  clsKdTree.def("Initialize", &KdTree<T>::Initialize);
40  clsKdTree.def("removePoint", &KdTree<T>::removePoint);
41  clsKdTree.def("getData", (T (KdTree<T>::*)(int, int) const) & KdTree<T>::getData);
42  clsKdTree.def("getData", (ndarray::Array<T, 1, 1> (KdTree<T>::*)(int) const) & KdTree<T>::getData);
43  clsKdTree.def("addPoint", &KdTree<T>::addPoint);
44  clsKdTree.def("getNPoints", &KdTree<T>::getNPoints);
45  clsKdTree.def("getTreeNode", &KdTree<T>::getTreeNode);
46  clsKdTree.def("findNeighbors", &KdTree<T>::findNeighbors);
47 };

◆ PYBIND11_MODULE()

PYBIND11_MODULE ( gaussianProcess  ,
mod   
)

Definition at line 138 of file gaussianProcess.cc.

138  {
139  declareCovariograms<double>(mod, "D");
140  declareGaussianProcess<double>(mod, "D");
141  declareKdTree<double>(mod, "D");
142 }
std::shared_ptr
STL class.
lsst::afw::math::Covariogram
The parent class of covariogram functions for use in Gaussian Process interpolation.
Definition: GaussianProcess.h:126
lsst::afw::math::KdTree
The data for GaussianProcess is stored in a KD tree to facilitate nearest-neighbor searches.
Definition: GaussianProcess.h:224
lsst::afw::math::GaussianProcess
Stores values of a function sampled on an image and allows you to interpolate the function to unsampl...
Definition: GaussianProcess.h:471
lsst::afw::math::SquaredExpCovariogram
SquaredExpCovariogram.
Definition: GaussianProcess.h:164
lsst::afw::math::NeuralNetCovariogram
a Covariogram that recreates a neural network with one hidden layer and infinite units in that layer
Definition: GaussianProcess.h:193
lsst::utils.tests.init
def init()
Definition: tests.py:58