22 #include "pybind11/pybind11.h" 
   24 #include "ndarray/pybind11.h" 
   29 using namespace pybind11::literals;
 
   35     py::module::import(
"lsst.geom");
 
   36     py::module::import(
"lsst.afw.geom");
 
   37     py::module::import(
"lsst.afw.image");
 
   39     py::class_<ShapeletFunction, std::shared_ptr<ShapeletFunction>> clsShapeletFunction(mod,
 
   42     clsShapeletFunction.def_readonly_static(
"FLUX_FACTOR", &ShapeletFunction::FLUX_FACTOR);
 
   44     clsShapeletFunction.def(py::init<int, BasisTypeEnum>(), 
"order"_a, 
"basisType"_a);
 
   45     clsShapeletFunction.def(
py::init<
int, 
BasisTypeEnum, ndarray::Array<double, 1, 1> 
const &>(), 
"order"_a,
 
   46                             "basisType"_a, 
"coefficients"_a);
 
   47     clsShapeletFunction.def(py::init<int, BasisTypeEnum, double, geom::Point2D const &>(), 
"order"_a,
 
   50                                      ndarray::Array<double, 1, 1> 
const &>(),
 
   51                             "order"_a, 
"basisType"_a, 
"radius"_a, 
"center"_a, 
"coefficients"_a);
 
   52     clsShapeletFunction.def(py::init<int, BasisTypeEnum, afw::geom::ellipses::Ellipse const &>(), 
"order"_a,
 
   53                             "basisType"_a, 
"ellipse"_a);
 
   55                                      ndarray::Array<double const, 1, 1> 
const &>(),
 
   56                             "order"_a, 
"basisType"_a, 
"ellipse"_a, 
"coefficients"_a);
 
   57     clsShapeletFunction.def(py::init<ShapeletFunction>());
 
   59     clsShapeletFunction.def(
"getOrder", &ShapeletFunction::getOrder);
 
   62                             py::return_value_policy::reference_internal);
 
   63     clsShapeletFunction.def(
"setEllipse", &ShapeletFunction::setEllipse);
 
   64     clsShapeletFunction.def(
"getBasisType", &ShapeletFunction::getBasisType);
 
   65     clsShapeletFunction.def(
"changeBasisType", &ShapeletFunction::changeBasisType);
 
   66     clsShapeletFunction.def(
"normalize", &ShapeletFunction::normalize, 
"value"_a = 1.0);
 
   67     clsShapeletFunction.def(
"getCoefficients", (ndarray::Array<double, 1, 1> 
const (
ShapeletFunction::*)()) &
 
   68                                                        ShapeletFunction::getCoefficients);
 
   70     clsShapeletFunction.def(
"evaluate", &ShapeletFunction::evaluate);
 
   71     clsShapeletFunction.def(
"shiftInPlace", &ShapeletFunction::shiftInPlace);
 
   72     clsShapeletFunction.def(
"transformInPlace", &ShapeletFunction::transformInPlace);
 
   74     py::class_<ShapeletFunctionEvaluator, std::shared_ptr<ShapeletFunctionEvaluator>>
 
   75             clsShapeletFunctionEvaluator(mod, 
"ShapeletFunctionEvaluator");
 
   77     clsShapeletFunctionEvaluator.def(py::init<ShapeletFunction const &>(), 
"function"_a);
 
   79     clsShapeletFunctionEvaluator.def(
"__call__",
 
   81                                              ShapeletFunctionEvaluator::operator());
 
   82     clsShapeletFunctionEvaluator.def(
 
   84                                 ShapeletFunctionEvaluator::operator());
 
   85     clsShapeletFunctionEvaluator.def(
 
   87                                 ShapeletFunctionEvaluator::operator());
 
   89                                                          ndarray::Array<double const, 1> 
const &,
 
   90                                                          ndarray::Array<double const, 1> 
const &) 
const) &
 
   91                                                          ShapeletFunctionEvaluator::operator());
 
   93     clsShapeletFunctionEvaluator.def(
 
   98     clsShapeletFunctionEvaluator.def(
 
  103     clsShapeletFunctionEvaluator.def(
"computeMoments", &ShapeletFunctionEvaluator::computeMoments);
 
  104     clsShapeletFunctionEvaluator.def(
"update", &ShapeletFunctionEvaluator::update);