24 #include "pybind11/pybind11.h"
25 #include "pybind11/eigen.h"
29 #include "ndarray/pybind11.h"
44 using namespace pybind11::literals;
50 using utils::python::WrapperCollection;
54 using PySourceRecord = py::class_<SourceRecord, std::shared_ptr<SourceRecord>, SimpleRecord>;
55 using PySourceTable = py::class_<SourceTable, std::shared_ptr<SourceTable>, SimpleTable>;
56 using PySourceColumnView =
58 ColumnViewT<SourceRecord>>;
63 PySourceRecord declareSourceRecord(WrapperCollection &wrappers) {
64 return wrappers.wrapType(PySourceRecord(wrappers.module,
"SourceRecord"), [](
auto &mod,
auto &cls) {
65 cls.def(
"getFootprint", &SourceRecord::getFootprint);
66 cls.def(
"setFootprint", &SourceRecord::setFootprint);
67 cls.def(
"getTable", &SourceRecord::getTable);
68 cls.def_property_readonly(
"table", &SourceRecord::getTable);
70 cls.def(
"getParent", &SourceRecord::getParent);
71 cls.def(
"setParent", &SourceRecord::setParent,
"id"_a);
73 cls.def(
"getPsfInstFlux", &SourceRecord::getPsfInstFlux);
74 cls.def(
"getPsfInstFluxErr", &SourceRecord::getPsfInstFluxErr);
75 cls.def(
"getPsfFluxFlag", &SourceRecord::getPsfFluxFlag);
77 cls.def(
"getModelInstFlux", &SourceRecord::getModelInstFlux);
78 cls.def(
"getModelInstFluxErr", &SourceRecord::getModelInstFluxErr);
79 cls.def(
"getModelFluxFlag", &SourceRecord::getModelFluxFlag);
81 cls.def(
"getApInstFlux", &SourceRecord::getApInstFlux);
82 cls.def(
"getApInstFluxErr", &SourceRecord::getApInstFluxErr);
83 cls.def(
"getApFluxFlag", &SourceRecord::getApFluxFlag);
85 cls.def(
"getGaussianInstFlux", &SourceRecord::getGaussianInstFlux);
86 cls.def(
"getGaussianInstFluxErr", &SourceRecord::getGaussianInstFluxErr);
87 cls.def(
"getGaussianFluxFlag", &SourceRecord::getGaussianFluxFlag);
89 cls.def(
"getCalibInstFlux", &SourceRecord::getCalibInstFlux);
90 cls.def(
"getCalibInstFluxErr", &SourceRecord::getCalibInstFluxErr);
91 cls.def(
"getCalibFluxFlag", &SourceRecord::getCalibFluxFlag);
93 cls.def(
"getCentroid", &SourceRecord::getCentroid);
94 cls.def(
"getCentroidErr", &SourceRecord::getCentroidErr);
95 cls.def(
"getCentroidFlag", &SourceRecord::getCentroidFlag);
97 cls.def(
"getShape", &SourceRecord::getShape);
98 cls.def(
"getShapeErr", &SourceRecord::getShapeErr);
99 cls.def(
"getShapeFlag", &SourceRecord::getShapeFlag);
101 cls.def(
"getX", &SourceRecord::getX);
102 cls.def(
"getY", &SourceRecord::getY);
103 cls.def(
"getIxx", &SourceRecord::getIxx);
104 cls.def(
"getIyy", &SourceRecord::getIyy);
105 cls.def(
"getIxy", &SourceRecord::getIxy);
106 cls.def(
"updateCoord", (void (SourceRecord::*)(geom::SkyWcs const &)) & SourceRecord::updateCoord,
108 cls.def(
"updateCoord",
109 (void (SourceRecord::*)(geom::SkyWcs const &, PointKey<double> const &)) &
110 SourceRecord::updateCoord,
118 PySourceTable declareSourceTable(WrapperCollection &wrappers) {
119 return wrappers.wrapType(PySourceTable(wrappers.module,
"SourceTable"), [](
auto &mod,
auto &cls) {
120 cls.def(
"clone", &SourceTable::clone);
121 cls.def_static(
"make",
122 (std::shared_ptr<SourceTable>(*)(Schema const &, std::shared_ptr<IdFactory> const &)) &
124 cls.def_static(
"make", (std::shared_ptr<SourceTable>(*)(Schema const &)) & SourceTable::make);
125 cls.def_static(
"makeMinimalSchema", &SourceTable::makeMinimalSchema);
126 cls.def_static(
"getParentKey", &SourceTable::getParentKey);
127 cls.def(
"copyRecord", (std::shared_ptr<SourceRecord>(SourceTable::*)(BaseRecord const &)) &
128 SourceTable::copyRecord);
129 cls.def(
"copyRecord",
130 (std::shared_ptr<SourceRecord>(SourceTable::*)(BaseRecord const &, SchemaMapper const &)) &
131 SourceTable::copyRecord);
132 cls.def(
"makeRecord", &SourceTable::makeRecord);
134 cls.def(
"getPsfFluxSlot", &SourceTable::getPsfFluxSlot);
135 cls.def(
"definePsfFlux", &SourceTable::definePsfFlux,
"name"_a);
137 cls.def(
"getModelFluxSlot", &SourceTable::getModelFluxSlot);
138 cls.def(
"defineModelFlux", &SourceTable::defineModelFlux,
"name"_a);
140 cls.def(
"getApFluxSlot", &SourceTable::getApFluxSlot);
141 cls.def(
"defineApFlux", &SourceTable::defineApFlux,
"name"_a);
143 cls.def(
"getGaussianFluxSlot", &SourceTable::getGaussianFluxSlot);
144 cls.def(
"defineGaussianFlux", &SourceTable::defineGaussianFlux,
"name"_a);
146 cls.def(
"getCalibFluxSlot", &SourceTable::getCalibFluxSlot);
147 cls.def(
"defineCalibFlux", &SourceTable::defineCalibFlux,
"name"_a);
149 cls.def(
"getCentroidSlot", &SourceTable::getCentroidSlot);
150 cls.def(
"defineCentroid", &SourceTable::defineCentroid,
"name"_a);
152 cls.def(
"getShapeSlot", &SourceTable::getShapeSlot);
153 cls.def(
"defineShape", &SourceTable::defineShape,
"name"_a);
157 PySourceColumnView declareSourceColumnView(WrapperCollection &wrappers) {
158 table::python::declareColumnView<SourceRecord>(wrappers,
"Source",
true);
159 return wrappers.wrapType(PySourceColumnView(wrappers.module,
"SourceColumnView"),
160 [](
auto &mod,
auto &cls) {
161 using Class = SourceColumnViewT<SourceRecord>;
162 cls.def(
"getPsfInstFlux", &Class::getPsfInstFlux);
163 cls.def(
"getPsfInstFluxErr", &Class::getPsfInstFluxErr);
164 cls.def(
"getApInstFlux", &Class::getApInstFlux);
165 cls.def(
"getApInstFluxErr", &Class::getApInstFluxErr);
166 cls.def(
"getModelInstFlux", &Class::getModelInstFlux);
167 cls.def(
"getModelInstFluxErr", &Class::getModelInstFluxErr);
168 cls.def(
"getGaussianInstFlux", &Class::getGaussianInstFlux);
169 cls.def(
"getGaussianInstFluxErr", &Class::getGaussianInstFluxErr);
170 cls.def(
"getCalibInstFlux", &Class::getCalibInstFlux);
171 cls.def(
"getCalibInstFluxErr", &Class::getCalibInstFluxErr);
172 cls.def(
"getX", &Class::getX);
173 cls.def(
"getY", &Class::getY);
174 cls.def(
"getIxx", &Class::getIxx);
175 cls.def(
"getIyy", &Class::getIyy);
176 cls.def(
"getIxy", &Class::getIxy);
189 auto &mod = wrappers.
module;
191 mod.attr(
"SOURCE_IO_NO_HEAVY_FOOTPRINTS") =
194 auto clsSourceRecord = declareSourceRecord(wrappers);
195 auto clsSourceTable = declareSourceTable(wrappers);
196 auto clsSourceColumnView = declareSourceColumnView(wrappers);
197 auto clsSourceCatalog = table::python::declareSortedCatalog<SourceRecord>(wrappers,
"Source");
199 clsSourceRecord.attr(
"Table") = clsSourceTable;
200 clsSourceRecord.attr(
"ColumnView") = clsSourceColumnView;
201 clsSourceRecord.attr(
"Catalog") = clsSourceCatalog;
202 clsSourceTable.attr(
"Record") = clsSourceRecord;
203 clsSourceTable.attr(
"ColumnView") = clsSourceColumnView;
204 clsSourceTable.attr(
"Catalog") = clsSourceCatalog;
205 clsSourceCatalog.attr(
"Record") = clsSourceRecord;
206 clsSourceCatalog.attr(
"Table") = clsSourceTable;
207 clsSourceCatalog.attr(
"ColumnView") = clsSourceColumnView;
A helper class for subdividing pybind11 module across multiple translation units (i....
pybind11::module module
The module object passed to the PYBIND11_MODULE block that contains this WrapperCollection.
void wrapSource(WrapperCollection &wrappers)
@ SOURCE_IO_NO_FOOTPRINTS
Do not read/write footprints at all.
@ SOURCE_IO_NO_HEAVY_FOOTPRINTS
Read/write heavy footprints as non-heavy footprints.
A base class for image defects.