mirror of
https://github.com/slsdetectorgroup/aare.git
synced 2025-06-11 06:47:14 +02:00
underlying container of ClusterVcetor is now a std::vector
This commit is contained in:
@ -58,7 +58,8 @@ void define_cluster(py::module &m, const std::string &typestr) {
|
||||
[](ClusterType &c, py::array_t<Type> arr) {
|
||||
py::buffer_info buf_info = arr.request();
|
||||
Type *ptr = static_cast<Type *>(buf_info.ptr);
|
||||
std::copy(ptr, ptr + ClusterSizeX * ClusterSizeY, c.data);
|
||||
std::copy(ptr, ptr + ClusterSizeX * ClusterSizeY,
|
||||
c.data); // TODO dont iterate over centers!!!
|
||||
});
|
||||
}
|
||||
|
||||
@ -68,14 +69,15 @@ void define_cluster_vector(py::module &m, const std::string &typestr) {
|
||||
|
||||
py::class_<ClusterVector<ClusterType>>(m, class_name.c_str(),
|
||||
py::buffer_protocol())
|
||||
|
||||
.def(py::init()) // TODO change!!!
|
||||
/*
|
||||
.def("push_back",
|
||||
[](ClusterVector<ClusterType> &self, ClusterType &cl) {
|
||||
// auto view = make_view_2d(data);
|
||||
self.push_back(cl);
|
||||
})
|
||||
*/
|
||||
/*
|
||||
.def("push_back",
|
||||
[](ClusterVector<ClusterType> &self, ClusterType &cl) {
|
||||
// auto view = make_view_2d(data);
|
||||
self.push_back(cl);
|
||||
})
|
||||
*/
|
||||
/*
|
||||
.def(
|
||||
"push_back",
|
||||
@ -92,15 +94,11 @@ void define_cluster_vector(py::module &m, const std::string &typestr) {
|
||||
})
|
||||
*/
|
||||
//.def("push_back", &ClusterVector<ClusterType>::push_back) //TODO
|
||||
//implement push_back
|
||||
// implement push_back
|
||||
.def_property_readonly("size", &ClusterVector<ClusterType>::size)
|
||||
.def("item_size", &ClusterVector<ClusterType>::item_size)
|
||||
.def_property_readonly("fmt",
|
||||
[typestr](ClusterVector<ClusterType> &self) {
|
||||
return fmt::format(
|
||||
self.fmt_base(), self.cluster_size_x(),
|
||||
self.cluster_size_y(), typestr);
|
||||
})
|
||||
[typestr]() { return fmt_format<ClusterType>; })
|
||||
/*
|
||||
.def("sum",
|
||||
[](ClusterVector<ClusterType> &self) {
|
||||
@ -124,13 +122,11 @@ void define_cluster_vector(py::module &m, const std::string &typestr) {
|
||||
.def_buffer(
|
||||
[typestr](ClusterVector<ClusterType> &self) -> py::buffer_info {
|
||||
return py::buffer_info(
|
||||
self.data(), /* Pointer to buffer */
|
||||
self.item_size(), /* Size of one scalar */
|
||||
fmt::format(self.fmt_base(), self.cluster_size_x(),
|
||||
self.cluster_size_y(),
|
||||
typestr), /* Format descriptor */
|
||||
1, /* Number of dimensions */
|
||||
{self.size()}, /* Buffer dimensions */
|
||||
self.data(), /* Pointer to buffer */
|
||||
self.item_size(), /* Size of one scalar */
|
||||
fmt_format<ClusterType>, /* Format descriptor */
|
||||
1, /* Number of dimensions */
|
||||
{self.size()}, /* Buffer dimensions */
|
||||
{self.item_size()} /* Strides (in bytes) for each index */
|
||||
);
|
||||
});
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "aare/NDView.hpp"
|
||||
|
||||
namespace py = pybind11;
|
||||
using namespace aare;
|
||||
|
||||
// Pass image data back to python as a numpy array
|
||||
template <typename T, int64_t Ndim>
|
||||
@ -64,4 +65,22 @@ template <class T, int Flags> auto make_view_2d(py::array_t<T, Flags> &arr) {
|
||||
}
|
||||
template <class T, int Flags> auto make_view_1d(py::array_t<T, Flags> &arr) {
|
||||
return aare::NDView<T, 1>(arr.mutable_data(), get_shape_1d<T, Flags>(arr));
|
||||
}
|
||||
}
|
||||
|
||||
template <typename ClusterType> struct fmt_format_trait; // forward declaration
|
||||
|
||||
template <typename T, uint8_t ClusterSizeX, uint8_t ClusterSizeY,
|
||||
typename CoordType>
|
||||
struct fmt_format_trait<Cluster<T, ClusterSizeX, ClusterSizeY, CoordType>> {
|
||||
|
||||
static std::string value() {
|
||||
return fmt::format("T{{{}:x;{}:y;{}:data;}}",
|
||||
py::format_descriptor<CoordType>::format(),
|
||||
py::format_descriptor<CoordType>::format(),
|
||||
fmt::format("{}{}", ClusterSizeX * ClusterSizeY,
|
||||
py::format_descriptor<T>::format()));
|
||||
}
|
||||
};
|
||||
|
||||
template <typename ClusterType>
|
||||
auto fmt_format = fmt_format_trait<ClusterType>::value();
|
Reference in New Issue
Block a user