24 #include <pybind11/pybind11.h>
25 #include <pybind11/stl.h>
34 using namespace pybind11::literals;
42 template <
typename ReturnT>
47 clsPolynomialFunction1(mod, (
"PolynomialFunction1" + suffix).c_str());
50 clsPolynomialFunction1.def(py::init<unsigned int>(),
"order"_a);
61 clsPolynomialFunction2(mod, (
"PolynomialFunction2" + suffix).c_str());
64 clsPolynomialFunction2.def(py::init<unsigned int>(),
"order"_a);
74 template <
typename ReturnT>
79 clsChebyshev1Function1(mod, (
"Chebyshev1Function1" + suffix).c_str());
83 clsChebyshev1Function1.def(py::init<unsigned int, double, double>(),
"order"_a,
"minX"_a = -1,
97 clsChebyshev1Function2(mod, (
"Chebyshev1Function2" + suffix).c_str());
101 clsChebyshev1Function2.def(py::init<unsigned int, lsst::geom::Box2D const &>(),
"order"_a,
112 template <
typename ReturnT>
116 clsGaussianFunction1(mod, (
"GaussianFunction1" + suffix).c_str());
118 clsGaussianFunction1.def(py::init<double>(),
"sigma"_a);
126 clsGaussianFunction2(mod, (
"GaussianFunction2" + suffix).c_str());
128 clsGaussianFunction2.def(py::init<double, double, double>(),
"sigma1"_a,
"sigma2"_a,
"angle"_a = 0.0);
138 clsDoubleGaussianFunction2(mod, (
"DoubleGaussianFunction2" + suffix).c_str());
140 clsDoubleGaussianFunction2.def(py::init<double, double, double>(),
"sigma1"_a,
"sigma2"_a = 0,
149 template <
typename ReturnT>
154 clsIntegerDeltaFunction1(mod, (
"IntegerDeltaFunction1" + suffix).c_str());
156 clsIntegerDeltaFunction1.def(py::init<double>(),
"xo"_a);
165 clsIntegerDeltaFunction2(mod, (
"IntegerDeltaFunction2" + suffix).c_str());
167 clsIntegerDeltaFunction2.def(py::init<double, double>(),
"xo"_a,
"yo"_a);
174 template <
typename ReturnT>
178 clsLanczosFunction1(mod, (
"LanczosFunction1" + suffix).c_str());
180 clsLanczosFunction1.def(py::init<unsigned int, double>(),
"n"_a,
"xOffset"_a = 0.0);
189 clsLanczosFunction2(mod, (
"LanczosFunction2" + suffix).c_str());
191 clsLanczosFunction2.def(py::init<unsigned int, double, double>(),
"n"_a,
"xOffset"_a = 0.0,
201 py::module::import(
"lsst.geom");
202 py::module::import(
"lsst.afw.math.function");
204 declarePolynomialFunctions<float>(mod,
"F");
205 declareChebyshevFunctions<float>(mod,
"F");
206 declareGaussianFunctions<float>(mod,
"F");
207 declareIntegerDeltaFunctions<float>(mod,
"F");
208 declareLanczosFunctions<float>(mod,
"F");
210 declarePolynomialFunctions<double>(mod,
"D");
211 declareChebyshevFunctions<double>(mod,
"D");
212 declareGaussianFunctions<double>(mod,
"D");
213 declareIntegerDeltaFunctions<double>(mod,
"D");
214 declareLanczosFunctions<double>(mod,
"D");
Base class for 2-dimensional polynomials of the form:
1-dimensional weighted sum of Chebyshev polynomials of the first kind.
2-dimensional weighted sum of Chebyshev polynomials of the first kind.
double Guassian (sum of two Gaussians)
A Function taking one argument.
A Function taking two arguments.
1-dimensional integer delta function.
2-dimensional integer delta function.
1-dimensional Lanczos function
2-dimensional separable Lanczos function
1-dimensional polynomial function.
2-dimensional polynomial function with cross terms
A floating-point coordinate rectangle geometry.
PYBIND11_MODULE(functionLibrary, mod)
void declareLanczosFunctions(py::module &mod, const std::string &suffix)
void declareIntegerDeltaFunctions(py::module &mod, const std::string &suffix)
void declareChebyshevFunctions(py::module &mod, const std::string &suffix)
void declareGaussianFunctions(py::module &mod, const std::string &suffix)
void declarePolynomialFunctions(py::module &mod, const std::string &suffix)
A base class for image defects.
PYBIND11_DECLARE_HOLDER_TYPE(MyType, std::shared_ptr< MyType >)