25 #include <pybind11/pybind11.h>
26 #include <pybind11/complex.h>
27 #include <pybind11/stl.h>
33 using namespace pybind11::literals;
40 py::class_<FoundValue<T>> cls(mod, (
"FoundValue" + suffix).c_str());
42 cls.def(py::init<bool, T const &>(),
"found"_a,
"value"_a);
44 cls.def_readwrite(
"found", &FoundValue<T>::found);
45 cls.def_readwrite(
"value", &FoundValue<T>::value);
49 py::module::import(
"astshim.channel");
51 py::enum_<FitsKeyState>(mod,
"FitsKeyState")
52 .value(
"ABSENT", FitsKeyState::ABSENT)
53 .value(
"NOVALUE", FitsKeyState::NOVALUE)
54 .value(
"PRESENT", FitsKeyState::PRESENT)
57 py::enum_<CardType>(mod,
"CardType")
58 .value(
"NOTYPE", CardType::NOTYPE)
59 .value(
"COMMENT", CardType::COMMENT)
60 .value(
"INT", CardType::INT)
61 .value(
"FLOAT", CardType::FLOAT)
62 .value(
"STRING", CardType::STRING)
63 .value(
"COMPLEXF", CardType::COMPLEXF)
64 .value(
"COMPLEXI", CardType::COMPLEXI)
65 .value(
"LOGICAL", CardType::LOGICAL)
66 .value(
"CONTINUE", CardType::CONTINUE)
67 .value(
"UNDEF", CardType::UNDEF)
71 wrapFoundValue<std::string>(mod,
"S");
72 wrapFoundValue<std::complex<double>>(mod,
"CF");
73 wrapFoundValue<double>(mod,
"F");
74 wrapFoundValue<int>(mod,
"I");
75 wrapFoundValue<bool>(mod,
"L");
78 py::class_<FitsChan, std::shared_ptr<FitsChan>, Channel> cls(mod,
"FitsChan");
80 cls.def(py::init<Stream &, std::string const &>(),
"stream"_a,
"options"_a =
"");
82 cls.def_property(
"carLin", &FitsChan::getCarLin, &FitsChan::setCarLin);
83 cls.def_property(
"cdMatrix", &FitsChan::getCDMatrix, &FitsChan::setCDMatrix);
84 cls.def_property(
"clean", &FitsChan::getClean, &FitsChan::setClean);
85 cls.def_property(
"defB1950", &FitsChan::getDefB1950, &FitsChan::setDefB1950);
86 cls.def_property(
"encoding", &FitsChan::getEncoding, &FitsChan::setEncoding);
87 cls.def_property(
"fitsAxisOrder", &FitsChan::getFitsAxisOrder, &FitsChan::setFitsAxisOrder);
88 cls.def_property(
"fitsDigits", &FitsChan::getFitsDigits, &FitsChan::setFitsDigits);
89 cls.def_property_readonly(
"nCard", &FitsChan::getNCard);
90 cls.def_property_readonly(
"nKey", &FitsChan::getNKey);
91 cls.def_property(
"iwc", &FitsChan::getIwc, &FitsChan::setIwc);
92 cls.def_property(
"sipOK", &FitsChan::getSipOK, &FitsChan::setSipOK);
93 cls.def_property(
"sipReplace", &FitsChan::getSipReplace, &FitsChan::setSipReplace);
94 cls.def_property(
"tabOK", &FitsChan::getTabOK, &FitsChan::setTabOK);
95 cls.def_property(
"polyTan", &FitsChan::getPolyTan, &FitsChan::setPolyTan);
96 cls.def_property(
"warnings", &FitsChan::getWarnings, &FitsChan::setWarnings);
97 cls.def_property(
"fitsTol", &FitsChan::getFitsTol, &FitsChan::setFitsTol);
99 cls.def(
"delFits", &FitsChan::delFits);
100 cls.def(
"emptyFits", &FitsChan::emptyFits);
101 cls.def(
"findFits", &FitsChan::findFits,
"name"_a,
"inc"_a);
102 cls.def(
"getFitsCF", &FitsChan::getFitsCF,
"name"_a =
"",
"defval"_a =
std::complex<double>(0, 0));
103 cls.def(
"getFitsCN", &FitsChan::getFitsCN,
"name"_a =
"",
"defval"_a =
"");
104 cls.def(
"getFitsF", &FitsChan::getFitsF,
"name"_a =
"",
"defval"_a = 0);
105 cls.def(
"getFitsI", &FitsChan::getFitsI,
"name"_a =
"",
"defval"_a = 0);
106 cls.def(
"getFitsL", &FitsChan::getFitsL,
"name"_a =
"",
"defval"_a =
false);
107 cls.def(
"getFitsS", &FitsChan::getFitsS,
"name"_a =
"",
"defval"_a =
"");
108 cls.def(
"getAllCardNames", &FitsChan::getAllCardNames);
109 cls.def(
"getAllWarnings", &FitsChan::getAllWarnings);
110 cls.def(
"getCard", &FitsChan::getCard);
111 cls.def(
"getCardComm", &FitsChan::getCardComm);
112 cls.def(
"getCardName", &FitsChan::getCardName);
113 cls.def(
"getCardType", &FitsChan::getCardType);
114 cls.def(
"getTables", &FitsChan::getTables);
115 cls.def(
"purgeWcs", &FitsChan::purgeWcs);
116 cls.def(
"putCards", &FitsChan::putCards,
"cards"_a);
117 cls.def(
"putFits", &FitsChan::putFits,
"card"_a,
"overwrite"_a);
118 cls.def(
"readFits", &FitsChan::readFits);
119 cls.def(
"retainFits", &FitsChan::retainFits);
120 cls.def(
"setFitsCF", &FitsChan::setFitsCF,
"name"_a,
"value"_a,
"comment"_a =
"",
"overwrite"_a =
false);
121 cls.def(
"setFitsCM", &FitsChan::setFitsCM,
"comment"_a =
"",
"overwrite"_a =
false);
122 cls.def(
"setFitsCN", &FitsChan::setFitsCN,
"name"_a,
"value"_a,
"comment"_a =
"",
"overwrite"_a =
false);
123 cls.def(
"setFitsF", &FitsChan::setFitsF,
"name"_a,
"value"_a,
"comment"_a =
"",
"overwrite"_a =
false);
124 cls.def(
"setFitsI", &FitsChan::setFitsI,
"name"_a,
"value"_a,
"comment"_a =
"",
"overwrite"_a =
false);
125 cls.def(
"setFitsL", &FitsChan::setFitsL,
"name"_a,
"value"_a,
"comment"_a =
"",
"overwrite"_a =
false);
126 cls.def(
"setFitsS", &FitsChan::setFitsS,
"name"_a,
"value"_a,
"comment"_a =
"",
"overwrite"_a =
false);
127 cls.def(
"setFitsU", &FitsChan::setFitsU,
"name"_a,
"comment"_a =
"",
"overwrite"_a =
false);
128 cls.def(
"showFits", &FitsChan::showFits);
129 cls.def(
"testFits", &FitsChan::testFits,
"name"_a =
"");
131 cls.def(
"clearCard", &FitsChan::clearCard);
132 cls.def(
"setCard", &FitsChan::setCard,
"i"_a);
AST wrapper classes and functions.
PYBIND11_MODULE(_cameraGeom, mod)
def writeFits(filename, stamp_ims, metadata, type_name, write_mask, write_variance)