diff --git a/corsika/detail/framework/utility/SaveBoostHistogram.inl b/corsika/detail/framework/utility/SaveBoostHistogram.inl index 94e5e1bbc8a383f99ef6a70776e622e6f0f2ad28..c934bede326870311b27e39a7f09604076de1836 100644 --- a/corsika/detail/framework/utility/SaveBoostHistogram.inl +++ b/corsika/detail/framework/utility/SaveBoostHistogram.inl @@ -23,12 +23,9 @@ namespace corsika { template <class Axes, class Storage> inline void save_hist(boost::histogram::histogram<Axes, Storage> const& h, - std::string const& filename, SaveMode mode) { + std::string const& filename) { unsigned const rank = h.rank(); - // append vs. overwrite - const std::string mode_str = (mode == SaveMode::append ? "a" : "w"); - std::vector<size_t> axes_dims; axes_dims.reserve(rank); @@ -58,7 +55,7 @@ namespace corsika { ax_edges.push_back(ax.bin(ax.size() - 1).upper()); cnpy::npz_save(filename, std::string{"binedges_"} + std::to_string(i), - ax_edges.data(), {ax_edges.size()}, mode_str); + ax_edges.data(), {ax_edges.size()}, "a"); } else { axis_types.push_back('d'); std::vector<int64_t> bins; // we assume that discrete axes have integer bins @@ -67,14 +64,13 @@ namespace corsika { for (int j = 0; j < ax.size(); ++j) { bins.push_back(ax.bin(j).lower()); } cnpy::npz_save(filename, std::string{"bins_"} + std::to_string(i), bins.data(), - {bins.size()}, mode_str); + {bins.size()}, "a"); } } - cnpy::npz_save(filename, std::string{"axistypes"}, axis_types.data(), {rank}, - mode_str); - cnpy::npz_save(filename, std::string{"overflow"}, overflow.get(), {rank}, mode_str); - cnpy::npz_save(filename, std::string{"underflow"}, underflow.get(), {rank}, mode_str); + cnpy::npz_save(filename, std::string{"axistypes"}, axis_types.data(), {rank}, "a"); + cnpy::npz_save(filename, std::string{"overflow"}, overflow.get(), {rank}, "a"); + cnpy::npz_save(filename, std::string{"underflow"}, underflow.get(), {rank}, "a"); auto const prod_axis_size = std::accumulate(axes_dims.cbegin(), axes_dims.cend(), unsigned{1}, std::multiplies<>()); @@ -98,9 +94,9 @@ namespace corsika { temp[p] = *x; } - cnpy::npz_save(filename, "data", temp.get(), axes_dims, mode_str); + cnpy::npz_save(filename, "data", temp.get(), axes_dims, "a"); // In Python this array can directly be assigned to a histogram view if that // histogram has its axes correspondingly: hist.view(flow=True)[:] = file['data'] } // namespace corsika -} // namespace corsika \ No newline at end of file +} // namespace corsika diff --git a/corsika/framework/utility/SaveBoostHistogram.hpp b/corsika/framework/utility/SaveBoostHistogram.hpp index 13a079410e7c4735e88eb0ec56f5346f96ad2407..ab418e1b2a70ab146d2753b5bf262200c0311a28 100644 --- a/corsika/framework/utility/SaveBoostHistogram.hpp +++ b/corsika/framework/utility/SaveBoostHistogram.hpp @@ -12,8 +12,6 @@ namespace corsika { - enum class SaveMode { overwrite, append }; - /** * This functions saves a boost::histogram into a numpy file. Only rather basic axis * types are supported: regular, variable, integer, category<int>. Only "ordinary" bin @@ -24,7 +22,7 @@ namespace corsika { */ template <class Axes, class Storage> inline void save_hist(boost::histogram::histogram<Axes, Storage> const& h, - std::string const& filename, SaveMode mode = SaveMode::append); + std::string const& filename); } // namespace corsika #include <corsika/detail/framework/utility/SaveBoostHistogram.inl>