25 #include "pybind11/pybind11.h" 
   26 #include "pybind11/eigen.h" 
   27 #include "pybind11/stl.h" 
   28 #include "ndarray/pybind11.h" 
   29 #include "ndarray/eigen.h" 
   36 using namespace pybind11::literals;
 
   42 void declarePhotometryMappingBase(
py::module &mod) {
 
   43     py::class_<PhotometryMappingBase, std::shared_ptr<PhotometryMappingBase>> 
cls(mod,
 
   44                                                                                   "PhotometryMappingBase");
 
   46     cls.def(
"getNpar", &PhotometryMappingBase::getNpar);
 
   48     cls.def(
"transformError", &PhotometryMappingBase::transformError);
 
   49     cls.def(
"computeParameterDerivatives",
 
   50             [](PhotometryMappingBase 
const &
self, MeasuredStar 
const &star, 
double instFlux) {
 
   51                 Eigen::VectorXd derivatives(
self.getNpar());
 
   52                 self.computeParameterDerivatives(star, instFlux, derivatives);
 
   56     cls.def(
"getParameters", &PhotometryMappingBase::getParameters);
 
   58     cls.def(
"getMappingIndices", [](PhotometryMappingBase 
const &
self) {
 
   60         self.getMappingIndices(indices);
 
   64     cls.def(
"getIndex", &PhotometryMappingBase::getIndex);
 
   65     cls.def(
"setIndex", &PhotometryMappingBase::setIndex);
 
   68 void declarePhotometryMapping(
py::module &mod) {
 
   69     py::class_<PhotometryMapping, std::shared_ptr<PhotometryMapping>, PhotometryMappingBase> 
cls(
 
   70             mod, 
"PhotometryMapping");
 
   73     cls.def(
"offsetParams", &PhotometryMapping::offsetParams);
 
   74     cls.def(
"getTransform", &PhotometryMapping::getTransform);
 
   75     cls.def(
"getTransformErrors", &PhotometryMapping::getTransformErrors);
 
   78 void declareChipVisitPhotometryMapping(
py::module &mod) {
 
   79     py::class_<ChipVisitPhotometryMapping, std::shared_ptr<ChipVisitPhotometryMapping>, PhotometryMappingBase>
 
   80             cls(mod, 
"ChipVisitPhotometryMapping");
 
   82     cls.def(
"setWhatToFit", &ChipVisitPhotometryMapping::setWhatToFit);
 
   84     cls.def(
"getChipMapping", &ChipVisitPhotometryMapping::getChipMapping);
 
   85     cls.def(
"getVisitMapping", &ChipVisitPhotometryMapping::getVisitMapping);
 
   86     cls.def(
"getNParChip", &ChipVisitPhotometryMapping::getNParChip);
 
   87     cls.def(
"getNParVisit", &ChipVisitPhotometryMapping::getNParVisit);
 
   90 void declareChipVisitFluxMapping(
py::module &mod) {
 
   91     py::class_<ChipVisitFluxMapping, std::shared_ptr<ChipVisitFluxMapping>, ChipVisitPhotometryMapping> 
cls(
 
   92             mod, 
"ChipVisitFluxMapping");
 
   95             "chipMapping"_a, 
"visitMapping"_a);
 
   98 void declareChipVisitMagnitudeMapping(
py::module &mod) {
 
   99     py::class_<ChipVisitMagnitudeMapping, std::shared_ptr<ChipVisitMagnitudeMapping>,
 
  100                ChipVisitPhotometryMapping>
 
  101             cls(mod, 
"ChipVisitMagnitudeMapping");
 
  104             "chipMapping"_a, 
"visitMapping"_a);
 
  108     py::module::import(
"lsst.jointcal.star");
 
  109     py::module::import(
"lsst.jointcal.photometryTransform");
 
  110     declarePhotometryMappingBase(mod);
 
  111     declarePhotometryMapping(mod);
 
  112     declareChipVisitPhotometryMapping(mod);
 
  113     declareChipVisitFluxMapping(mod);
 
  114     declareChipVisitMagnitudeMapping(mod);