23 #include "pybind11/pybind11.h"
35 using namespace pybind11::literals;
42 template <
typename PixelT>
52 template <
typename FromPixelT,
typename ToPixelT>
53 void declareCastConstructor(PyExposure<ToPixelT> &cls) {
54 cls.def(
py::init<Exposure<FromPixelT>
const &,
bool const>(),
"src"_a,
"deep"_a);
57 template <
typename PixelT>
60 using ExposureT = Exposure<PixelT>;
61 using MaskedImageT =
typename ExposureT::MaskedImageT;
62 wrappers.
wrap([](
auto &mod) {
63 mod.def(
"makeExposure", &makeExposure<PixelT, MaskPixel, VariancePixel>,
"maskedImage"_a,
67 PyExposure<PixelT>(wrappers.
module, (
"Exposure" + suffix).c_str()), [](
auto &mod,
auto &cls) {
69 cls.def(py::init<unsigned int, unsigned int, std::shared_ptr<geom::SkyWcs const>>(),
70 "width"_a,
"height"_a,
"wcs"_a = std::shared_ptr<geom::SkyWcs const>());
71 cls.def(py::init<lsst::geom::Extent2I const &, std::shared_ptr<geom::SkyWcs const>>(),
72 "dimensions"_a = lsst::geom::Extent2I(),
73 "wcs"_a = std::shared_ptr<geom::SkyWcs const>());
74 cls.def(py::init<lsst::geom::Box2I const &, std::shared_ptr<geom::SkyWcs const>>(),
"bbox"_a,
75 "wcs"_a = std::shared_ptr<geom::SkyWcs const>());
76 cls.def(py::init<MaskedImageT &, std::shared_ptr<geom::SkyWcs const>>(),
"maskedImage"_a,
77 "wcs"_a = std::shared_ptr<geom::SkyWcs const>());
78 cls.def(py::init<MaskedImageT &, std::shared_ptr<ExposureInfo>>(),
"maskedImage"_a,
80 cls.def(py::init<std::string const &, lsst::geom::Box2I const &, ImageOrigin, bool, bool>(),
81 "fileName"_a,
"bbox"_a = lsst::geom::Box2I(),
"origin"_a = PARENT,
82 "conformMasks"_a = false,
"allowUnsafe"_a = false);
83 cls.def(py::init<fits::MemFileManager &, lsst::geom::Box2I const &, ImageOrigin, bool,
85 "manager"_a,
"bbox"_a = lsst::geom::Box2I(),
"origin"_a = PARENT,
86 "conformMasks"_a = false,
"allowUnsafe"_a = false);
87 cls.def(py::init<ExposureT const &, bool>(),
"other"_a,
"deep"_a = false);
88 cls.def(py::init<ExposureT const &, lsst::geom::Box2I const &, ImageOrigin, bool>(),
89 "other"_a,
"bbox"_a,
"origin"_a = PARENT,
"deep"_a = false);
92 cls.def(
"getMaskedImage", (MaskedImageT(ExposureT::*)()) & ExposureT::getMaskedImage);
93 cls.def(
"setMaskedImage", &ExposureT::setMaskedImage,
"maskedImage"_a);
94 cls.def_property(
"maskedImage", (MaskedImageT(ExposureT::*)()) & ExposureT::getMaskedImage,
95 &ExposureT::setMaskedImage);
96 cls.def(
"getMetadata", &ExposureT::getMetadata);
97 cls.def(
"setMetadata", &ExposureT::setMetadata,
"metadata"_a);
98 cls.def(
"getWidth", &ExposureT::getWidth);
99 cls.def(
"getHeight", &ExposureT::getHeight);
100 cls.def(
"getDimensions", &ExposureT::getDimensions);
101 cls.def(
"getX0", &ExposureT::getX0);
102 cls.def(
"getY0", &ExposureT::getY0);
103 cls.def(
"getXY0", &ExposureT::getXY0);
104 cls.def(
"setXY0", &ExposureT::setXY0,
"xy0"_a);
105 cls.def(
"getBBox", &ExposureT::getBBox,
"origin"_a = PARENT);
106 cls.def(
"getWcs", (std::shared_ptr<geom::SkyWcs>(ExposureT::*)()) & ExposureT::getWcs);
107 cls.def(
"setWcs", &ExposureT::setWcs,
"wcs"_a);
108 cls.def(
"hasWcs", &ExposureT::hasWcs);
109 cls.def(
"getDetector", &ExposureT::getDetector);
110 cls.def(
"setDetector", &ExposureT::setDetector,
"detector"_a);
111 cls.def(
"getFilter", &ExposureT::getFilter);
112 cls.def(
"setFilter", &ExposureT::setFilter,
"filter"_a);
113 cls.def(
"getFilterLabel", &ExposureT::getFilterLabel);
114 cls.def(
"setFilterLabel", &ExposureT::setFilterLabel,
"filterLabel"_a);
116 cls.def(
"getPhotoCalib", &ExposureT::getPhotoCalib);
117 cls.def(
"setPhotoCalib", &ExposureT::setPhotoCalib,
"photoCalib"_a);
118 cls.def(
"getPsf", (std::shared_ptr<detection::Psf>(ExposureT::*)()) & ExposureT::getPsf);
119 cls.def(
"setPsf", &ExposureT::setPsf,
"psf"_a);
120 cls.def(
"hasPsf", &ExposureT::hasPsf);
121 cls.def(
"getInfo", (std::shared_ptr<ExposureInfo>(ExposureT::*)()) & ExposureT::getInfo);
122 cls.def(
"setInfo", &ExposureT::setInfo,
"exposureInfo"_a);
124 cls.def(
"subset", &ExposureT::subset,
"bbox"_a,
"origin"_a = PARENT);
126 cls.def(
"writeFits", (void (ExposureT::*)(std::string const &) const) & ExposureT::writeFits);
128 (void (ExposureT::*)(fits::MemFileManager &) const) & ExposureT::writeFits);
129 cls.def(
"writeFits", [](ExposureT &self, fits::Fits &fits) { self.writeFits(fits); });
134 fits::ImageWriteOptions
const &imageOptions,
135 fits::ImageWriteOptions
const &maskOptions,
136 fits::ImageWriteOptions
const &varianceOptions) {
137 self.writeFits(filename, imageOptions, maskOptions, varianceOptions);
139 "filename"_a,
"imageOptions"_a,
"maskOptions"_a,
"varianceOptions"_a);
142 [](ExposureT &
self, fits::MemFileManager &manager,
143 fits::ImageWriteOptions
const &imageOptions,
144 fits::ImageWriteOptions
const &maskOptions,
145 fits::ImageWriteOptions
const &varianceOptions) {
146 self.writeFits(manager, imageOptions, maskOptions, varianceOptions);
148 "manager"_a,
"imageOptions"_a,
"maskOptions"_a,
"varianceOptions"_a);
151 [](ExposureT &
self, fits::Fits &
fits, fits::ImageWriteOptions
const &imageOptions,
152 fits::ImageWriteOptions
const &maskOptions,
153 fits::ImageWriteOptions
const &varianceOptions) {
154 self.writeFits(
fits, imageOptions, maskOptions, varianceOptions);
156 "fits"_a,
"imageOptions"_a,
"maskOptions"_a,
"varianceOptions"_a);
158 cls.def_static(
"readFits", (ExposureT(*)(
std::string const &))ExposureT::readFits);
159 cls.def_static(
"readFits", (ExposureT(*)(fits::MemFileManager &))ExposureT::readFits);
161 cls.def(
"getCutout", &ExposureT::getCutout,
"center"_a,
"size"_a);
170 auto clsExposureF = declareExposure<float>(wrappers,
"F");
171 auto clsExposureD = declareExposure<double>(wrappers,
"D");
172 declareExposure<int>(wrappers,
"I");
173 declareExposure<std::uint16_t>(wrappers,
"U");
174 declareExposure<std::uint64_t>(wrappers,
"L");
178 declareCastConstructor<int, float>(clsExposureF);
179 declareCastConstructor<int, double>(clsExposureD);
181 declareCastConstructor<float, double>(clsExposureD);
182 declareCastConstructor<double, float>(clsExposureF);
184 declareCastConstructor<std::uint16_t, float>(clsExposureF);
185 declareCastConstructor<std::uint16_t, double>(clsExposureD);
187 declareCastConstructor<std::uint64_t, float>(clsExposureF);
188 declareCastConstructor<std::uint64_t, double>(clsExposureD);
Implementation of the Photometric Calibration class.
A helper class for subdividing pybind11 module across multiple translation units (i....
pybind11::module module
The module object passed to the PYBIND11_MODULE block that contains this WrapperCollection.
void finish()
Invoke all deferred wrapper-declaring callables.
PyType wrapType(PyType cls, ClassWrapperCallback function, bool setModuleName=true)
Add a type (class or enum) wrapper, deferring method and other attribute definitions until finish() i...
void wrap(WrapperCallback function)
Add a set of wrappers without defining a class.
void addSignatureDependency(std::string const &name)
Indicate an external module that provides a type used in function/method signatures.
PYBIND11_MODULE(imageUtils, mod)
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
A base class for image defects.