24#include "pybind11/pybind11.h"
36using namespace pybind11::literals;
43template <
typename PixelT>
53template <
typename FromPixelT,
typename ToPixelT>
54void declareCastConstructor(PyExposure<ToPixelT> &cls) {
55 cls.def(py::init<Exposure<FromPixelT>
const &,
bool const>(),
"src"_a,
"deep"_a);
58template <
typename PixelT>
61 using ExposureT = Exposure<PixelT>;
62 using MaskedImageT =
typename ExposureT::MaskedImageT;
63 wrappers.
wrap([](
auto &mod) {
64 mod.def(
"makeExposure", &makeExposure<PixelT, MaskPixel, VariancePixel>,
"maskedImage"_a,
68 PyExposure<PixelT>(wrappers.module, (
"Exposure" + suffix).c_str()), [](
auto &mod,
auto &cls) {
70 cls.def(py::init<unsigned int, unsigned int, std::shared_ptr<geom::SkyWcs const>>(),
71 "width"_a,
"height"_a,
"wcs"_a = std::shared_ptr<geom::SkyWcs const>());
72 cls.def(py::init<lsst::geom::Extent2I const &, std::shared_ptr<geom::SkyWcs const>>(),
73 "dimensions"_a = lsst::geom::Extent2I(),
74 "wcs"_a = std::shared_ptr<geom::SkyWcs const>());
75 cls.def(py::init<lsst::geom::Box2I const &, std::shared_ptr<geom::SkyWcs const>>(),
"bbox"_a,
76 "wcs"_a = std::shared_ptr<geom::SkyWcs const>());
77 cls.def(py::init<MaskedImageT &, std::shared_ptr<geom::SkyWcs const>>(),
"maskedImage"_a,
78 "wcs"_a = std::shared_ptr<geom::SkyWcs const>());
79 cls.def(py::init<MaskedImageT &, std::shared_ptr<ExposureInfo>>(),
"maskedImage"_a,
81 cls.def(py::init<std::string const &, lsst::geom::Box2I const &, ImageOrigin, bool, bool>(),
82 "fileName"_a,
"bbox"_a = lsst::geom::Box2I(),
"origin"_a = PARENT,
83 "conformMasks"_a = false,
"allowUnsafe"_a = false);
84 cls.def(py::init<fits::MemFileManager &, lsst::geom::Box2I const &, ImageOrigin, bool,
86 "manager"_a,
"bbox"_a = lsst::geom::Box2I(),
"origin"_a = PARENT,
87 "conformMasks"_a = false,
"allowUnsafe"_a = false);
88 cls.def(py::init<ExposureT const &, bool>(),
"other"_a,
"deep"_a = false);
89 cls.def(py::init<ExposureT const &, lsst::geom::Box2I const &, ImageOrigin, bool>(),
90 "other"_a,
"bbox"_a,
"origin"_a = PARENT,
"deep"_a = false);
93 cls.def(
"getMaskedImage", (MaskedImageT(ExposureT::*)()) & ExposureT::getMaskedImage);
94 cls.def(
"setMaskedImage", &ExposureT::setMaskedImage,
"maskedImage"_a);
95 cls.def_property(
"maskedImage", (MaskedImageT(ExposureT::*)()) & ExposureT::getMaskedImage,
96 &ExposureT::setMaskedImage);
97 cls.def(
"getMetadata", &ExposureT::getMetadata);
98 cls.def(
"setMetadata", &ExposureT::setMetadata,
"metadata"_a);
99 cls.def_property(
"metadata", &ExposureT::getMetadata, &ExposureT::setMetadata);
100 cls.def(
"getWidth", &ExposureT::getWidth);
101 cls.def(
"getHeight", &ExposureT::getHeight);
102 cls.def_property_readonly(
"width", &ExposureT::getWidth);
103 cls.def_property_readonly(
"height", &ExposureT::getHeight);
104 cls.def(
"getDimensions", &ExposureT::getDimensions);
105 cls.def(
"getX0", &ExposureT::getX0);
106 cls.def(
"getY0", &ExposureT::getY0);
107 cls.def_property_readonly(
"x0", &ExposureT::getX0);
108 cls.def_property_readonly(
"y0", &ExposureT::getY0);
109 cls.def(
"getXY0", &ExposureT::getXY0);
110 cls.def(
"setXY0", &ExposureT::setXY0,
"xy0"_a);
111 cls.def(
"getBBox", &ExposureT::getBBox,
"origin"_a = PARENT);
112 cls.def(
"getWcs", (std::shared_ptr<geom::SkyWcs>(ExposureT::*)()) & ExposureT::getWcs);
113 cls.def_property_readonly(
114 "wcs", (std::shared_ptr<geom::SkyWcs>(ExposureT::*)()) & ExposureT::getWcs);
115 cls.def(
"setWcs", &ExposureT::setWcs,
"wcs"_a);
116 cls.def(
"hasWcs", &ExposureT::hasWcs);
117 cls.def(
"getDetector", &ExposureT::getDetector);
118 cls.def_property_readonly(
"detector", &ExposureT::getDetector);
119 cls.def(
"setDetector", &ExposureT::setDetector,
"detector"_a);
120 cls.def(
"getFilter", &ExposureT::getFilter);
121 cls.def_property_readonly(
"filter", &ExposureT::getFilter);
122 cls.def(
"setFilter", &ExposureT::setFilter,
"filterLabel"_a);
124 cls.def(
"getPhotoCalib", &ExposureT::getPhotoCalib);
125 cls.def_property_readonly(
"photoCalib", &ExposureT::getPhotoCalib);
126 cls.def(
"setPhotoCalib", &ExposureT::setPhotoCalib,
"photoCalib"_a);
127 cls.def(
"getPsf", (std::shared_ptr<detection::Psf>(ExposureT::*)()) & ExposureT::getPsf);
128 cls.def_property_readonly(
129 "psf", (std::shared_ptr<detection::Psf>(ExposureT::*)()) & ExposureT::getPsf);
130 cls.def(
"setPsf", &ExposureT::setPsf,
"psf"_a);
131 cls.def(
"hasPsf", &ExposureT::hasPsf);
132 cls.def(
"getInfo", (std::shared_ptr<ExposureInfo>(ExposureT::*)()) & ExposureT::getInfo);
133 cls.def_property_readonly(
134 "info", (std::shared_ptr<ExposureInfo>(ExposureT::*)()) & ExposureT::getInfo);
135 cls.def(
"setInfo", &ExposureT::setInfo,
"exposureInfo"_a);
137 cls.def_property_readonly(
"visitInfo",
138 [](ExposureT &self) { return self.getInfo()->getVisitInfo(); });
140 cls.def(
"setApCorrMap", &ExposureT::setApCorrMap,
"apCorrMap"_a);
141 cls.def_property_readonly(
"apCorrMap", [](ExposureT &self) {
return self.getApCorrMap(); });
143 cls.def(
"subset", &ExposureT::subset,
"bbox"_a,
"origin"_a = PARENT);
145 cls.def(
"writeFits", (
void(ExposureT::*)(
std::string const &) const) & ExposureT::
writeFits);
147 (
void(ExposureT::*)(fits::MemFileManager &) const) & ExposureT::
writeFits);
148 cls.def(
"writeFits", [](ExposureT &self, fits::Fits &fits) { self.writeFits(fits); });
153 fits::ImageWriteOptions
const &imageOptions,
154 fits::ImageWriteOptions
const &maskOptions,
155 fits::ImageWriteOptions
const &varianceOptions) {
156 self.writeFits(filename, imageOptions, maskOptions, varianceOptions);
158 "filename"_a,
"imageOptions"_a,
"maskOptions"_a,
"varianceOptions"_a);
161 [](ExposureT &self, fits::MemFileManager &manager,
162 fits::ImageWriteOptions
const &imageOptions,
163 fits::ImageWriteOptions
const &maskOptions,
164 fits::ImageWriteOptions
const &varianceOptions) {
165 self.writeFits(manager, imageOptions, maskOptions, varianceOptions);
167 "manager"_a,
"imageOptions"_a,
"maskOptions"_a,
"varianceOptions"_a);
170 [](ExposureT &self, fits::Fits &fits, fits::ImageWriteOptions
const &imageOptions,
171 fits::ImageWriteOptions
const &maskOptions,
172 fits::ImageWriteOptions
const &varianceOptions) {
173 self.writeFits(fits, imageOptions, maskOptions, varianceOptions);
175 "fits"_a,
"imageOptions"_a,
"maskOptions"_a,
"varianceOptions"_a);
177 cls.def_static(
"readFits", (ExposureT(*)(
std::string const &))ExposureT::readFits);
178 cls.def_static(
"readFits", (ExposureT(*)(fits::MemFileManager &))ExposureT::readFits);
181 py::overload_cast<lsst::geom::SpherePoint const &, lsst::geom::Extent2I const &>(
182 &ExposureT::getCutout, py::const_),
183 "center"_a,
"size"_a);
185 py::overload_cast<lsst::geom::Point2D const &, lsst::geom::Extent2I const &>(
186 &ExposureT::getCutout, py::const_),
187 "center"_a,
"size"_a);
189 py::overload_cast<lsst::geom::Box2I const &>(&ExposureT::getCutout, py::const_),
201 auto clsExposureF = declareExposure<float>(wrappers,
"F");
202 auto clsExposureD = declareExposure<double>(wrappers,
"D");
203 declareExposure<int>(wrappers,
"I");
204 declareExposure<std::uint16_t>(wrappers,
"U");
205 declareExposure<std::uint64_t>(wrappers,
"L");
209 declareCastConstructor<int, float>(clsExposureF);
210 declareCastConstructor<int, double>(clsExposureD);
212 declareCastConstructor<float, double>(clsExposureD);
213 declareCastConstructor<double, float>(clsExposureF);
215 declareCastConstructor<std::uint16_t, float>(clsExposureF);
216 declareCastConstructor<std::uint16_t, double>(clsExposureD);
218 declareCastConstructor<std::uint64_t, float>(clsExposureF);
219 declareCastConstructor<std::uint64_t, double>(clsExposureD);
Implementation of the Photometric Calibration class.
A helper class for subdividing pybind11 module across multiple translation units (i....
void addSignatureDependency(std::string const &name)
Indicate an external module that provides a type used in function/method signatures.
void wrap(WrapperCallback function)
Add a set of wrappers without defining a class.
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 finish()
Invoke all deferred wrapper-declaring callables.
PYBIND11_MODULE(_gauss2d, m)
writeFits(filename, stamps, metadata, type_name, write_mask, write_variance, write_archive=False)