26 #include "pybind11/pybind11.h"
27 #include "pybind11/eigen.h"
28 #include "ndarray/pybind11.h"
29 #include "ndarray/eigen.h"
39 using namespace pybind11::literals;
45 void declareAstrometryTransform(
py::module &mod) {
46 py::class_<AstrometryTransform, std::shared_ptr<AstrometryTransform>> cls(mod,
"AstrometryTransform");
50 AstrometryTransform::apply,
53 (
jointcal::Frame(AstrometryTransform::*)(Frame
const &,
bool)
const) & AstrometryTransform::apply,
54 "inputframe"_a,
"inscribed"_a);
55 cls.def(
"getNpar", &AstrometryTransform::getNpar);
56 cls.def(
"offsetParams", &AstrometryTransform::offsetParams);
57 cls.def(
"linearApproximation", &AstrometryTransform::linearApproximation);
58 cls.def(
"computeDerivative", [](AstrometryTransform
const &
self, Point
const &where,
double const step) {
59 AstrometryTransformLinear derivative;
60 self.computeDerivative(where, derivative,
step);
67 void declareAstrometryTransformIdentity(
py::module &mod) {
68 py::class_<AstrometryTransformIdentity, std::shared_ptr<AstrometryTransformIdentity>, AstrometryTransform>
69 cls(mod,
"AstrometryTransformIdentity");
72 void declareAstrometryTransformPolynomial(
py::module &mod) {
73 py::class_<AstrometryTransformPolynomial, std::shared_ptr<AstrometryTransformPolynomial>,
75 cls(mod,
"AstrometryTransformPolynomial");
77 cls.def(py::init<const unsigned>(),
"order"_a);
78 cls.def(
"getOrder", &AstrometryTransformPolynomial::getOrder);
79 cls.def(
"getCoefficient", py::overload_cast<std::size_t, std::size_t, std::size_t>(
80 &AstrometryTransformPolynomial::getCoefficient, py::const_));
83 double value) {
self.getCoefficient(powX, powY, whichCoord) = value; });
84 cls.def(
"determinant", &AstrometryTransformPolynomial::determinant);
85 cls.def(
"getNpar", &AstrometryTransformPolynomial::getNpar);
86 cls.def(
"toAstMap", &AstrometryTransformPolynomial::toAstMap);
87 cls.def(
"write", [](AstrometryTransformPolynomial
const &
self) {
92 cls.def(
"read", [](AstrometryTransformPolynomial &
self,
std::string const &str) {
98 void declareAstrometryTransformLinear(
py::module &mod) {
99 py::class_<AstrometryTransformLinear, std::shared_ptr<AstrometryTransformLinear>,
100 AstrometryTransformPolynomial>
101 cls(mod,
"AstrometryTransformLinear");
103 cls.def(py::init<>());
106 void declareAstrometryTransformLinearShift(
py::module &mod) {
107 py::class_<AstrometryTransformLinearShift, std::shared_ptr<AstrometryTransformLinearShift>,
108 AstrometryTransformLinear>
109 cls(mod,
"AstrometryTransformLinearShift");
112 void declareAstrometryTransformLinearRot(
py::module &mod) {
113 py::class_<AstrometryTransformLinearRot, std::shared_ptr<AstrometryTransformLinearRot>,
114 AstrometryTransformLinear>
115 cls(mod,
"AstrometryTransformLinearRot");
118 void declareAstrometryTransformLinearScale(
py::module &mod) {
119 py::class_<AstrometryTransformLinearScale, std::shared_ptr<AstrometryTransformLinearScale>,
120 AstrometryTransformLinear>
121 cls(mod,
"AstrometryTransformLinearScale");
124 void declareAstrometryTransformSkyWcs(
py::module &mod) {
125 py::class_<AstrometryTransformSkyWcs, std::shared_ptr<AstrometryTransformSkyWcs>, AstrometryTransform>
126 cls(mod,
"AstrometryTransformSkyWcs");
127 cls.def(
"getSkyWcs", &AstrometryTransformSkyWcs::getSkyWcs);
131 py::class_<BaseTanWcs, std::shared_ptr<BaseTanWcs>, AstrometryTransform> cls(mod,
"BaseTanWcs");
134 void declareTanPixelToRaDec(
py::module &mod) {
135 py::class_<TanPixelToRaDec, std::shared_ptr<TanPixelToRaDec>, AstrometryTransform> cls(mod,
139 void declareTanRaDecToPixel(
py::module &mod) {
140 py::class_<TanRaDecToPixel, std::shared_ptr<TanRaDecToPixel>, AstrometryTransform> cls(mod,
144 void declareTanSipPixelToRaDec(
py::module &mod) {
145 py::class_<TanSipPixelToRaDec, std::shared_ptr<TanSipPixelToRaDec>, BaseTanWcs> cls(mod,
146 "TanSipPixelToRaDec");
150 py::module::import(
"astshim.mapping");
151 py::module::import(
"lsst.jointcal.frame");
152 py::module::import(
"lsst.jointcal.star");
153 declareAstrometryTransform(mod);
154 declareAstrometryTransformIdentity(mod);
155 declareAstrometryTransformPolynomial(mod);
156 declareAstrometryTransformLinear(mod);
157 declareAstrometryTransformLinearShift(mod);
158 declareAstrometryTransformLinearRot(mod);
159 declareAstrometryTransformLinearScale(mod);
160 declareAstrometryTransformSkyWcs(mod);
161 declareBaseTanWcs(mod);
162 declareTanPixelToRaDec(mod);
163 declareTanRaDecToPixel(mod);
164 declareTanSipPixelToRaDec(mod);
168 "maxOrder"_a = 9,
"nSteps"_a = 50);
rectangle with sides parallel to axes.
PYBIND11_MODULE(_cameraGeom, mod)
void addOutputOp(PyClass &cls, std::string const &method)
Add __str__ or __repr__ method implemented by operator<<.
std::shared_ptr< AstrometryTransformPolynomial > inversePolyTransform(AstrometryTransform const &forward, Frame const &domain, double const precision, std::size_t maxOrder=9, std::size_t nSteps=50)
Approximate the inverse by a polynomial, to some precision.
A base class for image defects.