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);