27 #include <pybind11/pybind11.h> 
   39 using namespace py::literals;
 
   54 template <
typename KernelT>
 
   55 void declareWarpingKernel(lsst::utils::python::WrapperCollection &wrappers, 
std::string const &
name) {
 
   56     using PyClass = py::class_<KernelT, std::shared_ptr<KernelT>, SeparableKernel>;
 
   57     wrappers.wrapType(
PyClass(wrappers.module, 
name.c_str()), [](
auto &mod, 
auto &cls) {
 
   58         cls.def(py::init<int>(), 
"order"_a);
 
   59         cls.def(
"getOrder", &KernelT::getOrder);
 
   60         cls.def(
"clone", &KernelT::clone);
 
   61         table::io::python::addPersistableMethods(cls);
 
   73 template <
typename KernelT>
 
   74 void declareSimpleWarpingKernel(lsst::utils::python::WrapperCollection &wrappers, 
std::string const &
name) {
 
   75     using PyClass = py::class_<KernelT, std::shared_ptr<KernelT>, SeparableKernel>;
 
   76     wrappers.wrapType(
PyClass(wrappers.module, 
name.c_str()), [](
auto &mod, 
auto &cls) {
 
   77         cls.def(py::init<>());
 
   78         cls.def(
"clone", &KernelT::clone);
 
   79         table::io::python::addPersistableMethods(cls);
 
   91 template <
typename DestImageT, 
typename SrcImageT>
 
   92 void declareImageWarpingFunctions(lsst::utils::python::WrapperCollection &wrappers) {
 
   93     wrappers.wrap([](
auto &mod) {
 
   94         typename DestImageT::SinglePixel 
const EdgePixel =
 
   95                 edgePixel<DestImageT>(
typename image::detail::image_traits<DestImageT>::image_category());
 
   97                 (
int (*)(DestImageT &, geom::SkyWcs 
const &, SrcImageT 
const &, geom::SkyWcs 
const &,
 
   98                          WarpingControl 
const &, 
typename DestImageT::SinglePixel)) &
 
   99                         warpImage<DestImageT, SrcImageT>,
 
  100                 "destImage"_a, 
"destWcs"_a, 
"srcImage"_a, 
"srcWcs"_a, 
"control"_a, 
"padValue"_a = EdgePixel);
 
  104                          WarpingControl 
const &, 
typename DestImageT::SinglePixel)) &
 
  105                         warpImage<DestImageT, SrcImageT>,
 
  106                 "destImage"_a, 
"srcImage"_a, 
"srcToDest"_a, 
"control"_a, 
"padValue"_a = EdgePixel);
 
  108         mod.def(
"warpCenteredImage", &warpCenteredImage<DestImageT, SrcImageT>, 
"destImage"_a, 
"srcImage"_a,
 
  109                 "linearTransform"_a, 
"centerPoint"_a, 
"control"_a, 
"padValue"_a = EdgePixel);
 
  123 template <
typename DestPixelT, 
typename SrcPixelT>
 
  124 void declareWarpingFunctions(lsst::utils::python::WrapperCollection &wrappers) {
 
  131     wrappers.wrap([](
auto &mod) {
 
  132         mod.def(
"warpExposure", &warpExposure<DestExposureT, SrcExposureT>, 
"destExposure"_a, 
"srcExposure"_a,
 
  134                 "padValue"_a = edgePixel<DestMaskedImageT>(
 
  135                         typename image::detail::image_traits<DestMaskedImageT>::image_category()));
 
  137     declareImageWarpingFunctions<DestImageT, SrcImageT>(wrappers);
 
  138     declareImageWarpingFunctions<DestMaskedImageT, SrcMaskedImageT>(wrappers);
 
  141 void declareWarpExposure(lsst::utils::python::WrapperCollection &wrappers) {
 
  142     using PyClass = py::class_<WarpingControl, std::shared_ptr<WarpingControl>>;
 
  143     wrappers.wrapType(
PyClass(wrappers.module, 
"WarpingControl"), [](
auto &mod, 
auto cls) {
 
  144         cls.def(py::init<std::string, std::string, int, int, image::MaskPixel>(), 
"warpingKernelName"_a,
 
  145                 "maskWarpingKernelName"_a = 
"", 
"cacheSize"_a = 0, 
"interpLength"_a = 0,
 
  146                 "growFullMask"_a = 0);
 
  148         cls.def(
"getCacheSize", &WarpingControl::getCacheSize);
 
  149         cls.def(
"setCacheSize", &WarpingControl::setCacheSize, 
"cacheSize"_a);
 
  150         cls.def(
"getInterpLength", &WarpingControl::getInterpLength);
 
  151         cls.def(
"setInterpLength", &WarpingControl::setInterpLength, 
"interpLength"_a);
 
  152         cls.def(
"setWarpingKernelName", &WarpingControl::setWarpingKernelName, 
"warpingKernelName"_a);
 
  153         cls.def(
"getWarpingKernel", &WarpingControl::getWarpingKernel);
 
  154         cls.def(
"setWarpingKernel", &WarpingControl::setWarpingKernel, 
"warpingKernel"_a);
 
  155         cls.def(
"setMaskWarpingKernelName", &WarpingControl::setMaskWarpingKernelName,
 
  156                 "maskWarpingKernelName"_a);
 
  157         cls.def(
"getMaskWarpingKernel", &WarpingControl::getMaskWarpingKernel);
 
  158         cls.def(
"hasMaskWarpingKernel", &WarpingControl::hasMaskWarpingKernel);
 
  159         cls.def(
"setMaskWarpingKernelName", &WarpingControl::setMaskWarpingKernelName,
 
  160                 "maskWarpingKernelName"_a);
 
  161         cls.def(
"setMaskWarpingKernel", &WarpingControl::setMaskWarpingKernel, 
"maskWarpingKernel"_a);
 
  162         cls.def(
"getGrowFullMask", &WarpingControl::getGrowFullMask);
 
  163         cls.def(
"setGrowFullMask", &WarpingControl::setGrowFullMask, 
"growFullMask"_a);
 
  164         table::io::python::addPersistableMethods(cls);
 
  169     wrappers.addSignatureDependency(
"lsst.afw.image");
 
  170     wrappers.addSignatureDependency(
"lsst.afw.geom.skyWcs");
 
  172     declareWarpExposure(wrappers);
 
  173     declareWarpingKernel<LanczosWarpingKernel>(wrappers, 
"LanczosWarpingKernel");
 
  174     declareSimpleWarpingKernel<BilinearWarpingKernel>(wrappers, 
"BilinearWarpingKernel");
 
  175     declareSimpleWarpingKernel<NearestWarpingKernel>(wrappers, 
"NearestWarpingKernel");
 
  176     declareWarpingFunctions<double, double>(wrappers);
 
  177     declareWarpingFunctions<double, float>(wrappers);
 
  178     declareWarpingFunctions<double, int>(wrappers);
 
  179     declareWarpingFunctions<double, std::uint16_t>(wrappers);
 
  180     declareWarpingFunctions<float, float>(wrappers);
 
  181     declareWarpingFunctions<float, int>(wrappers);
 
  182     declareWarpingFunctions<float, std::uint16_t>(wrappers);
 
  183     declareWarpingFunctions<int, int>(wrappers);
 
  184     declareWarpingFunctions<std::uint16_t, std::uint16_t>(wrappers);
 
table::Key< std::string > name
A class to contain the data, WCS, and other information needed to describe an image of the sky.
A class to represent a 2-dimensional array of pixels.
A class to manipulate images, masks, and variance as a single object.
Transform< Point2Endpoint, Point2Endpoint > TransformPoint2ToPoint2
void wrapWarpExposure(lsst::utils::python::WrapperCollection &)
py::class_< PixelAreaBoundedField, std::shared_ptr< PixelAreaBoundedField >, BoundedField > PyClass
A base class for image defects.