22 #include "pybind11/pybind11.h"
23 #include "pybind11/stl.h"
31 using namespace pybind11::literals;
38 static void declareSipTransformBase(
py::module &mod) {
39 py::class_<SipTransformBase, std::shared_ptr<SipTransformBase>> cls(mod,
"_SipTransformBase");
41 cls.def(
"getPixelOrigin", &SipTransformBase::getPixelOrigin, py::return_value_policy::copy);
42 cls.def(
"getCdMatrix", &SipTransformBase::getCdMatrix, py::return_value_policy::copy);
43 cls.def(
"getPoly", &SipTransformBase::getPoly, py::return_value_policy::copy);
46 static void declareSipForwardTransform(
py::module &mod) {
47 py::class_<SipForwardTransform, std::shared_ptr<SipForwardTransform>, SipTransformBase> cls(
48 mod,
"SipForwardTransform");
50 cls.def(py::init<geom::Point2D const &, geom::LinearTransform const &, PolynomialTransform const &>(),
51 "pixelOrigin"_a,
"cdMatrix"_a,
"forwardSipPoly"_a);
52 cls.def(py::init<SipForwardTransform const &>(),
"other"_a);
54 cls.def_static(
"convert",
55 (SipForwardTransform(*)(PolynomialTransform
const &,
geom::Point2D const &,
57 SipForwardTransform::convert,
58 "poly"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
59 cls.def_static(
"convert",
60 (SipForwardTransform(*)(ScaledPolynomialTransform
const &,
geom::Point2D const &,
62 SipForwardTransform::convert,
63 "scaled"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
64 cls.def_static(
"convert",
65 (SipForwardTransform(*)(ScaledPolynomialTransform
const &)) & SipForwardTransform::convert,
68 cls.def(
"__call__", &SipForwardTransform::operator(),
"in"_a);
69 cls.def(
"transformPixels", &SipForwardTransform::transformPixels,
"s"_a);
71 cls.def(
"linearize", &SipForwardTransform::linearize);
74 static void declareSipReverseTransform(
py::module &mod) {
75 py::class_<SipReverseTransform, std::shared_ptr<SipReverseTransform>, SipTransformBase> cls(
76 mod,
"SipReverseTransform");
78 cls.def(py::init<geom::Point2D const &, geom::LinearTransform const &, PolynomialTransform const &>(),
79 "pixelOrigin"_a,
"cdMatrix"_a,
"reverseSipPoly"_a);
80 cls.def(py::init<SipReverseTransform const &>(),
"other"_a);
82 cls.def_static(
"convert",
83 (SipReverseTransform(*)(PolynomialTransform
const &,
geom::Point2D const &,
85 SipReverseTransform::convert,
86 "poly"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
87 cls.def_static(
"convert",
88 (SipReverseTransform(*)(ScaledPolynomialTransform
const &,
geom::Point2D const &,
90 SipReverseTransform::convert,
91 "scaled"_a,
"pixelOrigin"_a,
"cdMatrix"_a);
92 cls.def_static(
"convert",
93 (SipReverseTransform(*)(ScaledPolynomialTransform
const &)) & SipReverseTransform::convert,
96 cls.def(
"__call__", &SipReverseTransform::operator(),
"in"_a);
97 cls.def(
"transformPixels", &SipReverseTransform::transformPixels,
"s"_a);
99 cls.def(
"linearize", &SipReverseTransform::linearize);
105 declareSipTransformBase(mod);
106 declareSipForwardTransform(mod);
107 declareSipReverseTransform(mod);
109 mod.def(
"makeWcs",
makeWcs,
"sipForward"_a,
"sipReverse"_a,
"skyOrigin"_a);
111 mod.def(
"rotateWcsPixelsBy90",
rotateWcsPixelsBy90,
"wcs"_a,
"nQuarter"_a,
"dimensions"_a);
std::shared_ptr< afw::geom::SkyWcs > transformWcsPixels(afw::geom::SkyWcs const &wcs, geom::AffineTransform const &s)
Create a new SkyWcs whose pixel coordinate system has been transformed via an affine transform.
PYBIND11_MODULE(sipTransform, mod)
std::shared_ptr< afw::geom::SkyWcs > rotateWcsPixelsBy90(afw::geom::SkyWcs const &wcs, int nQuarter, geom::Extent2I const &dimensions)
Return a new SkyWcs that represents a rotation of the image it corresponds to about the image's cente...
std::shared_ptr< afw::geom::SkyWcs > makeWcs(SipForwardTransform const &sipForward, SipReverseTransform const &sipReverse, geom::SpherePoint const &skyOrigin)
Create a new TAN SIP Wcs from a pair of SIP transforms and the sky origin.
A base class for image defects.