23 #include <pybind11/pybind11.h> 
   25 #include <pybind11/stl.h> 
   32 using namespace py::literals;
 
   37     py::class_<Kernel, std::shared_ptr<Kernel>> clsKernel(mod, 
"Kernel");
 
   39     lsst::afw::table::io::python::addPersistableMethods<Kernel>(clsKernel);
 
   42     clsKernel.def(
"resized", &Kernel::resized, 
"width"_a, 
"height"_a);
 
   43     clsKernel.def(
"computeImage", &Kernel::computeImage, 
"image"_a, 
"doNormalize"_a, 
"x"_a = 0.0,
 
   45     clsKernel.def(
"getDimensions", &Kernel::getDimensions);
 
   46     clsKernel.def(
"setDimensions", &Kernel::setDimensions);
 
   47     clsKernel.def(
"setWidth", &Kernel::setWidth);
 
   48     clsKernel.def(
"setHeight", &Kernel::setHeight);
 
   49     clsKernel.def(
"getWidth", &Kernel::getWidth);
 
   50     clsKernel.def(
"getHeight", &Kernel::getHeight);
 
   51     clsKernel.def(
"getCtr", &Kernel::getCtr);
 
   54     clsKernel.def(
"getBBox", &Kernel::getBBox);
 
   55     clsKernel.def(
"getNKernelParameters", &Kernel::getNKernelParameters);
 
   56     clsKernel.def(
"getNSpatialParameters", &Kernel::getNSpatialParameters);
 
   57     clsKernel.def(
"getSpatialFunction", &Kernel::getSpatialFunction);
 
   58     clsKernel.def(
"getSpatialFunctionList", &Kernel::getSpatialFunctionList);
 
   59     clsKernel.def(
"getKernelParameter", &Kernel::getKernelParameter);
 
   60     clsKernel.def(
"getKernelParameters", &Kernel::getKernelParameters);
 
   61     clsKernel.def(
"growBBox", &Kernel::growBBox);
 
   62     clsKernel.def(
"shrinkBBox", &Kernel::shrinkBBox);
 
   63     clsKernel.def(
"setCtr", &Kernel::setCtr);
 
   66     clsKernel.def(
"getSpatialParameters", &Kernel::getSpatialParameters);
 
   67     clsKernel.def(
"isSpatiallyVarying", &Kernel::isSpatiallyVarying);
 
   68     clsKernel.def(
"setKernelParameters",
 
   70     clsKernel.def(
"setKernelParameters",
 
   73     clsKernel.def(
"computeKernelParametersFromSpatialModel",
 
   74                   &Kernel::computeKernelParametersFromSpatialModel);
 
   75     clsKernel.def(
"toString", &Kernel::toString, 
"prefix"_a = 
"");
 
   76     clsKernel.def(
"computeCache", &Kernel::computeCache);
 
   77     clsKernel.def(
"getCacheSize", &Kernel::getCacheSize);
 
   79     py::class_<FixedKernel, std::shared_ptr<FixedKernel>, 
Kernel> clsFixedKernel(mod, 
"FixedKernel");
 
   81     clsFixedKernel.def(py::init<>());
 
   83     clsFixedKernel.def(py::init<lsst::afw::math::Kernel const &, lsst::geom::Point2D const &>(), 
"kernel"_a,
 
   86     clsFixedKernel.def(
"resized", &FixedKernel::resized, 
"width"_a, 
"height"_a);
 
   87     clsFixedKernel.def(
"toString", &FixedKernel::toString, 
"prefix"_a = 
"");
 
   88     clsFixedKernel.def(
"getSum", &FixedKernel::getSum);
 
   89     clsFixedKernel.def(
"isPersistable", &FixedKernel::isPersistable);
 
   91     py::class_<AnalyticKernel, std::shared_ptr<AnalyticKernel>, 
Kernel> clsAnalyticKernel(mod,
 
   93     clsAnalyticKernel.def(py::init<>());
 
   95     clsAnalyticKernel.def(py::init<int, int, AnalyticKernel::KernelFunction const &>(), 
"width"_a, 
"height"_a,
 
   97     clsAnalyticKernel.def(
 
   98             py::init<int, int, AnalyticKernel::KernelFunction const &, Kernel::SpatialFunction const &>(),
 
   99             "width"_a, 
"height"_a, 
"kernelFunction"_a, 
"spatialFunction"_a);
 
  102                           "width"_a, 
"height"_a, 
"kernelFunction"_a, 
"spatialFunctionList"_a);
 
  104     clsAnalyticKernel.def(
"resized", &AnalyticKernel::resized, 
"width"_a, 
"height"_a);
 
  105     clsAnalyticKernel.def(
"computeImage", &AnalyticKernel::computeImage, 
"image"_a, 
"doNormalize"_a,
 
  106                           "x"_a = 0.0, 
"y"_a = 0.0);
 
  107     clsAnalyticKernel.def(
"getKernelParameters", &AnalyticKernel::getKernelParameters);
 
  108     clsAnalyticKernel.def(
"getKernelFunction", &AnalyticKernel::getKernelFunction);
 
  109     clsAnalyticKernel.def(
"toString", &AnalyticKernel::toString, 
"prefix"_a = 
"");
 
  110     clsAnalyticKernel.def(
"isPersistable", &AnalyticKernel::isPersistable);
 
  112     py::class_<DeltaFunctionKernel, std::shared_ptr<DeltaFunctionKernel>, 
Kernel> clsDeltaFunctionKernel(
 
  113             mod, 
"DeltaFunctionKernel");
 
  115     clsDeltaFunctionKernel.def(py::init<int, int, lsst::geom::Point2I const &>(), 
"width"_a, 
"height"_a,
 
  118     clsDeltaFunctionKernel.def(
"resized", &DeltaFunctionKernel::resized, 
"width"_a, 
"height"_a);
 
  119     clsDeltaFunctionKernel.def(
"getPixel", &DeltaFunctionKernel::getPixel);
 
  120     clsDeltaFunctionKernel.def(
"toString", &DeltaFunctionKernel::toString, 
"prefix"_a = 
"");
 
  121     clsDeltaFunctionKernel.def(
"isPersistable", &DeltaFunctionKernel::isPersistable);
 
  123     py::class_<LinearCombinationKernel, std::shared_ptr<LinearCombinationKernel>, 
Kernel>
 
  124             clsLinearCombinationKernel(mod, 
"LinearCombinationKernel");
 
  126     clsLinearCombinationKernel.def(py::init<>());
 
  128                                    "kernelList"_a, 
"kernelParameters"_a);
 
  129     clsLinearCombinationKernel.def(py::init<KernelList const &, Kernel::SpatialFunction const &>(),
 
  130                                    "kernelList"_a, 
"spatialFunction"_a);
 
  131     clsLinearCombinationKernel.def(
 
  133             "spatialFunctionList"_a);
 
  135     clsLinearCombinationKernel.def(
"resized", &LinearCombinationKernel::resized, 
"width"_a, 
"height"_a);
 
  136     clsLinearCombinationKernel.def(
"getKernelParameters", &LinearCombinationKernel::getKernelParameters);
 
  137     clsLinearCombinationKernel.def(
"getKernelList", &LinearCombinationKernel::getKernelList);
 
  138     clsLinearCombinationKernel.def(
"getKernelSumList", &LinearCombinationKernel::getKernelSumList);
 
  139     clsLinearCombinationKernel.def(
"getNBasisKernels", &LinearCombinationKernel::getNBasisKernels);
 
  140     clsLinearCombinationKernel.def(
"checkKernelList", &LinearCombinationKernel::checkKernelList);
 
  141     clsLinearCombinationKernel.def(
"isDeltaFunctionBasis", &LinearCombinationKernel::isDeltaFunctionBasis);
 
  142     clsLinearCombinationKernel.def(
"refactor", &LinearCombinationKernel::refactor);
 
  143     clsLinearCombinationKernel.def(
"toString", &LinearCombinationKernel::toString, 
"prefix"_a = 
"");
 
  144     clsLinearCombinationKernel.def(
"isPersistable", &LinearCombinationKernel::isPersistable);
 
  146     py::class_<SeparableKernel, std::shared_ptr<SeparableKernel>, 
Kernel> clsSeparableKernel(
 
  147             mod, 
"SeparableKernel");
 
  149     clsSeparableKernel.def(py::init<>());
 
  153                            "width"_a, 
"height"_a, 
"kernelColFunction"_a, 
"kernelRowFunction"_a);
 
  154     clsSeparableKernel.def(
 
  157             "width"_a, 
"height"_a, 
"kernelColFunction"_a, 
"kernelRowFunction"_a, 
"spatialFunction"_a);
 
  161                            "width"_a, 
"height"_a, 
"kernelColFunction"_a, 
"kernelRowFunction"_a,
 
  162                            "spatialFunctionList"_a);
 
  164     clsSeparableKernel.def(
"resized", &SeparableKernel::resized, 
"width"_a, 
"height"_a);
 
  165     clsSeparableKernel.def(
"computeVectors", &SeparableKernel::computeVectors);
 
  166     clsSeparableKernel.def(
"getKernelParameter", &SeparableKernel::getKernelParameter);
 
  167     clsSeparableKernel.def(
"getKernelParameters", &SeparableKernel::getKernelParameters);
 
  168     clsSeparableKernel.def(
"getKernelColFunction", &SeparableKernel::getKernelColFunction);
 
  169     clsSeparableKernel.def(
"getKernelRowFunction", &SeparableKernel::getKernelRowFunction);
 
  170     clsSeparableKernel.def(
"toString", &SeparableKernel::toString, 
"prefix"_a = 
"");
 
  171     clsSeparableKernel.def(
"computeCache", &SeparableKernel::computeCache);
 
  172     clsSeparableKernel.def(
"getCacheSize", &SeparableKernel::getCacheSize);