#include "aare/Pedestal.hpp" #include "np_helper.hpp" #include #include #include #include namespace py = pybind11; template void define_pedestal_bindings(py::module &m, const std::string &name) { py::class_>(m, name.c_str()) .def(py::init()) .def(py::init()) .def("mean", [](Pedestal &self) { auto m = new NDArray{}; *m = self.mean(); return return_image_data(m); }) .def("variance", [](Pedestal &self) { auto m = new NDArray{}; *m = self.variance(); return return_image_data(m); }) .def("std", [](Pedestal &self) { auto m = new NDArray{}; *m = self.std(); return return_image_data(m); }) .def("clear", py::overload_cast<>(&Pedestal::clear)) .def_property_readonly("rows", &Pedestal::rows) .def_property_readonly("cols", &Pedestal::cols) .def_property_readonly("n_samples", &Pedestal::n_samples) .def_property_readonly("sum", &Pedestal::get_sum) .def_property_readonly("sum2", &Pedestal::get_sum2) .def("clone", [&](Pedestal &pedestal) { return Pedestal(pedestal); }) //TODO! add push for other data types .def("push", [](Pedestal &pedestal, py::array_t &f) { auto v = make_view_2d(f); pedestal.push(v); }); }