24 #include "pybind11/pybind11.h" 
   25 #include "pybind11/stl.h" 
   27 #include "ndarray/pybind11.h" 
   34 using namespace pybind11::literals;
 
   41 using PyModel = py::class_<Model, std::shared_ptr<Model>>;
 
   44     py::module::import(
"lsst.shapelet");
 
   45     py::module::import(
"lsst.meas.modelfit.priors");
 
   46     py::module::import(
"lsst.meas.modelfit.unitSystem");
 
   48     PyModel 
cls(mod, 
"Model");
 
   50     py::enum_<Model::CenterEnum>(
cls, 
"CenterEnum")
 
   51             .value(
"FIXED_CENTER", Model::FIXED_CENTER)
 
   52             .value(
"SINGLE_CENTER", Model::SINGLE_CENTER)
 
   53             .value(
"MULTI_CENTER", Model::MULTI_CENTER)
 
   59                    "basisVector"_a, 
"prefixes"_a, 
"center"_a);
 
   63                    "basis"_a, 
"center"_a);
 
   64     cls.def_static(
"makeGaussian", &Model::makeGaussian, 
"center"_a, 
"radius"_a = 1.0);
 
   65     cls.def(
"getNonlinearDim", &Model::getNonlinearDim);
 
   66     cls.def(
"getAmplitudeDim", &Model::getAmplitudeDim);
 
   67     cls.def(
"getFixedDim", &Model::getFixedDim);
 
   68     cls.def(
"getBasisCount", &Model::getBasisCount);
 
   69     cls.def(
"getNonlinearNames", &Model::getNonlinearNames, py::return_value_policy::copy);
 
   70     cls.def(
"getAmplitudeNames", &Model::getAmplitudeNames, py::return_value_policy::copy);
 
   71     cls.def(
"getFixedNames", &Model::getFixedNames, py::return_value_policy::copy);
 
   72     cls.def(
"getBasisVector", &Model::getBasisVector, py::return_value_policy::copy);
 
   73     cls.def(
"makeShapeletFunction", &Model::makeShapeletFunction);
 
   74     cls.def(
"adaptPrior", &Model::adaptPrior);
 
   75     cls.def(
"makeEllipseVector", &Model::makeEllipseVector);
 
   76     cls.def(
"writeEllipses",
 
   77             (Model::EllipseVector (Model::*)(ndarray::Array<Scalar const, 1, 1> 
const &,
 
   78                                              ndarray::Array<Scalar const, 1, 1> 
const &) 
const) &
 
   80             "nonlinear"_a, 
"fixed"_a);
 
   81     cls.def(
"readEllipses",
 
   82             (
void (Model::*)(Model::EllipseVector 
const &, ndarray::Array<Scalar, 1, 1> 
const &,
 
   83                              ndarray::Array<Scalar, 1, 1> 
const &) 
const) &
 
   85             "ellipses"_a, 
"nonlinear"_a, 
"fixed"_a);
 
   86     cls.def(
"transformParameters", &Model::transformParameters, 
"transform"_a, 
"nonlinear"_a, 
"amplitudes"_a,