diff --git a/examples/getting_started_listing_01.cpp b/examples/getting_started_listing_01.cpp index 2eb8040f..f854dcc8 100644 --- a/examples/getting_started_listing_01.cpp +++ b/examples/getting_started_listing_01.cpp @@ -48,19 +48,19 @@ int main(int, char**) { for (auto bin : h.axis(0_c)) { std::cout << "bin " << bin.idx() << " x in [" << bin.lower() << ", " << bin.upper() << "): " - << h.bin(bin).value() << " +/- " - << std::sqrt(h.bin(bin).variance()) + << h.at(bin).value() << " +/- " + << std::sqrt(h.at(bin).variance()) << std::endl; } // accessing under- and overflow bins is easy, use indices -1 and 10 std::cout << "underflow bin [" << h.axis(0_c)[-1].lower() << ", " << h.axis(0_c)[-1].upper() << "): " - << h.bin(-1).value() << " +/- " << std::sqrt(h.bin(-1).variance()) + << h.at(-1).value() << " +/- " << std::sqrt(h.at(-1).variance()) << std::endl; std::cout << "overflow bin [" << h.axis(0_c)[10].lower() << ", " << h.axis(0_c)[10].upper() << "): " - << h.bin(10).value() << " +/- " << std::sqrt(h.bin(10).variance()) + << h.at(10).value() << " +/- " << std::sqrt(h.at(10).variance()) << std::endl; /* program output: diff --git a/examples/getting_started_listing_02.cpp b/examples/getting_started_listing_02.cpp index 475bbd5c..a8987158 100644 --- a/examples/getting_started_listing_02.cpp +++ b/examples/getting_started_listing_02.cpp @@ -41,7 +41,7 @@ int main() { std::printf("%s\n", cbin.value().c_str()); for (auto ybin : h.axis(2)) { // rows for (auto xbin : h.axis(1)) { // columns - std::printf("%3.0f ", h.bin(cbin, xbin, ybin).value()); + std::printf("%3.0f ", h.at(cbin, xbin, ybin).value()); } std::printf("\n"); } diff --git a/examples/getting_started_listing_04.py b/examples/getting_started_listing_04.py index ae428951..5db3c374 100644 --- a/examples/getting_started_listing_04.py +++ b/examples/getting_started_listing_04.py @@ -16,6 +16,6 @@ for x in (2e0, 2e1, 2e2, 2e3, 2e4): # iterate over bins and access bin counter for idx, (lower, upper) in enumerate(h.axis(0)): print("bin {0} x in [{1}, {2}): {3} +/- {4}".format( - idx, lower, upper, h.bin(idx).value, h.bin(idx).variance ** 0.5)) + idx, lower, upper, h.at(idx).value, h.at(idx).variance ** 0.5)) #] diff --git a/examples/guide_access_bin_counts.cpp b/examples/guide_access_bin_counts.cpp index c34d0cfd..7855fb17 100644 --- a/examples/guide_access_bin_counts.cpp +++ b/examples/guide_access_bin_counts.cpp @@ -19,31 +19,31 @@ int main() { h(bh::weight(4), 0.5, 3.5); // bin index 1, 1 // access count value, number of indices must match number of axes - std::cout << h.bin(0, 0).value() << " " - << h.bin(0, 1).value() << " " - << h.bin(1, 0).value() << " " - << h.bin(1, 1).value() + std::cout << h.at(0, 0).value() << " " + << h.at(0, 1).value() << " " + << h.at(1, 0).value() << " " + << h.at(1, 1).value() << std::endl; // prints: 1 2 3 4 // access count variance, number of indices must match number of axes - std::cout << h.bin(0, 0).variance() << " " - << h.bin(0, 1).variance() << " " - << h.bin(1, 0).variance() << " " - << h.bin(1, 1).variance() + std::cout << h.at(0, 0).variance() << " " + << h.at(0, 1).variance() << " " + << h.at(1, 0).variance() << " " + << h.at(1, 1).variance() << std::endl; // prints: 1 4 9 16 // you can also make a copy of the type that holds the bin count - auto c11 = h.bin(1, 1); + auto c11 = h.at(1, 1); std::cout << c11.value() << " " << c11.variance() << std::endl; // prints: 4 16 // histogram also supports access via container; using a container of // wrong size trips an assertion in debug mode auto idx = {0, 1}; - std::cout << h.bin(idx).value() << std::endl; + std::cout << h.at(idx).value() << std::endl; // prints: 2 // histogram also provides extended iterators diff --git a/examples/guide_custom_axis.cpp b/examples/guide_custom_axis.cpp index 07edec06..1f140278 100644 --- a/examples/guide_custom_axis.cpp +++ b/examples/guide_custom_axis.cpp @@ -28,7 +28,7 @@ int main() { for (auto xi : h.axis()) { std::cout << "bin " << xi.idx() << " [" << xi.lower() << ", " - << xi.upper() << ") " << h.bin(xi).value() + << xi.upper() << ") " << h.at(xi).value() << std::endl; } diff --git a/examples/guide_histogram_operators.cpp b/examples/guide_histogram_operators.cpp index f9fd53cb..5f49d5df 100644 --- a/examples/guide_histogram_operators.cpp +++ b/examples/guide_histogram_operators.cpp @@ -22,7 +22,7 @@ int main() { // accept and return rvalue references where possible auto h4 = h1 + h2 + h3; // counts are: 2 2 - std::cout << h4.bin(0).value() << " " << h4.bin(1).value() << std::endl; + std::cout << h4.at(0).value() << " " << h4.at(1).value() << std::endl; // prints: 2 2 // multiply by number @@ -31,7 +31,7 @@ int main() { // divide by number auto h5 = h4 / 4; // counts are: 1 1 - std::cout << h5.bin(0).value() << " " << h5.bin(1).value() << std::endl; + std::cout << h5.at(0).value() << " " << h5.at(1).value() << std::endl; // prints: 1 1 // compare histograms @@ -41,10 +41,10 @@ int main() { // note: special effect of multiplication on counter variance auto h = bh::make_static_histogram(bh::axis::regular<>(2, -1, 1)); h(-0.5); // counts are: 1 0 - std::cout << "value " << (2 * h).bin(0).value() - << " " << (h + h).bin(0).value() << "\n" - << "variance " << (2 * h).bin(0).variance() - << " " << (h + h).bin(0).variance() << std::endl; + std::cout << "value " << (2 * h).at(0).value() + << " " << (h + h).at(0).value() << "\n" + << "variance " << (2 * h).at(0).variance() + << " " << (h + h).at(0).variance() << std::endl; // equality operator also checks variances, so the statement is false std::cout << (h + h == 2 * h) << std::endl; /* prints: diff --git a/examples/guide_histogram_pickle.py b/examples/guide_histogram_pickle.py index 18f6f4d0..26a2061e 100644 --- a/examples/guide_histogram_pickle.py +++ b/examples/guide_histogram_pickle.py @@ -16,7 +16,7 @@ h2(0.5) h3 = h1 + h2 h4 = h3 * 2 -print(h4.bin(0).value, h4.bin(1).value) +print(h4.at(0).value, h4.at(1).value) # prints: 2.0 2.0 # now save the histogram diff --git a/examples/guide_histogram_reduction.cpp b/examples/guide_histogram_reduction.cpp index 1e91c8cf..498d08b6 100644 --- a/examples/guide_histogram_reduction.cpp +++ b/examples/guide_histogram_reduction.cpp @@ -39,7 +39,7 @@ int main() { for (auto yi : h.axis(1_c)) { for (auto xi : h.axis(0_c)) { - std::cout << h.bin(xi, yi).value() << " "; + std::cout << h.at(xi, yi).value() << " "; } std::cout << std::endl; } @@ -49,12 +49,12 @@ int main() { // 0 0 1 for (auto xi : hr0.axis()) - std::cout << hr0.bin(xi).value() << " "; + std::cout << hr0.at(xi).value() << " "; std::cout << std::endl; // prints: 1 1 1 for (auto yi : hr1.axis()) - std::cout << hr1.bin(yi).value() << " "; + std::cout << hr1.at(yi).value() << " "; std::cout << std::endl; // prints: 1 0 1 1 } diff --git a/examples/guide_mixed_cpp_python.py b/examples/guide_mixed_cpp_python.py index e0b42ce0..4697e7a1 100644 --- a/examples/guide_mixed_cpp_python.py +++ b/examples/guide_mixed_cpp_python.py @@ -14,7 +14,7 @@ cpp_filler.process(h) # histogram is filled with input values in C++ for iy, y in enumerate(h.axis(1)): for ix, x in enumerate(h.axis(0)): - print(h.bin(ix, iy).value, end=' ') + print(h.at(ix, iy).value, end=' ') print() # prints: diff --git a/examples/guide_python_histogram.py b/examples/guide_python_histogram.py index 75462bcc..7714f1a2 100644 --- a/examples/guide_python_histogram.py +++ b/examples/guide_python_histogram.py @@ -16,13 +16,13 @@ for x in (2e0, 2e1, 2e2, 2e3, 2e4): # iterate over bins and access bin counter for idx, (lower, upper) in enumerate(h.axis(0)): print("bin {0} x in [{1}, {2}): {3} +/- {4}".format( - idx, lower, upper, h.bin(idx).value, h.bin(idx).variance ** 0.5)) + idx, lower, upper, h.at(idx).value, h.at(idx).variance ** 0.5)) # under- and overflow bins are accessed like in C++ lo, up = h.axis(0)[-1] -print("underflow [{0}, {1}): {2} +/- {3}".format(lo, up, h.bin(-1).value, h.bin(-1).variance)) +print("underflow [{0}, {1}): {2} +/- {3}".format(lo, up, h.at(-1).value, h.at(-1).variance)) lo, up = h.axis(0)[5] -print("overflow [{0}, {1}): {2} +/- {3}".format(lo, up, h.bin(5).value, h.bin(5).variance)) +print("overflow [{0}, {1}): {2} +/- {3}".format(lo, up, h.at(5).value, h.at(5).variance)) # prints: # bin 0 x in [1.0, 10.0): 4.0 +/- 4.0 diff --git a/include/boost/histogram/dynamic_histogram.hpp b/include/boost/histogram/dynamic_histogram.hpp index 4c2af653..ef64ec47 100644 --- a/include/boost/histogram/dynamic_histogram.hpp +++ b/include/boost/histogram/dynamic_histogram.hpp @@ -183,7 +183,7 @@ public: } template - const_reference bin(Ts &&... ts) const { + const_reference at(Ts &&... ts) const { // case with one argument is ambiguous, is specialized below BOOST_ASSERT_MSG(dim() == sizeof...(Ts), "bin arguments does not match histogram dimension"); @@ -195,9 +195,9 @@ public: } template - const_reference bin(T&&t) const { + const_reference at(T&&t) const { // check whether T is unpackable - return bin_impl(detail::classify_container_t(), std::forward(t)); + return at_impl(detail::classify_container_t(), std::forward(t)); } /// Number of axes (dimensions) of histogram @@ -314,7 +314,7 @@ private: } template - const_reference bin_impl(detail::dynamic_container_tag, T && t) const { + const_reference at_impl(detail::dynamic_container_tag, T && t) const { BOOST_ASSERT_MSG(dim() == std::distance(std::begin(t), std::end(t)), "bin container does not match histogram dimension"); std::size_t idx = 0, stride = 1; @@ -325,7 +325,7 @@ private: } template - const_reference bin_impl(detail::static_container_tag, T && t) const { + const_reference at_impl(detail::static_container_tag, T && t) const { BOOST_ASSERT_MSG(dim() == detail::size_of::value, "bin container does not match histogram dimension"); std::size_t idx = 0, stride = 1; @@ -336,7 +336,7 @@ private: } template - const_reference bin_impl(detail::no_container_tag, T && t) const { + const_reference at_impl(detail::no_container_tag, T && t) const { BOOST_ASSERT_MSG(dim() == 1, "bin argument does not match histogram dimension"); std::size_t idx = 0, stride = 1; diff --git a/include/boost/histogram/static_histogram.hpp b/include/boost/histogram/static_histogram.hpp index 2d9c8576..452dc034 100644 --- a/include/boost/histogram/static_histogram.hpp +++ b/include/boost/histogram/static_histogram.hpp @@ -184,7 +184,7 @@ public: } template - const_reference bin(Indices &&... indices) const { + const_reference at(Indices &&... indices) const { // case with one argument is ambiguous, is specialized below static_assert(sizeof...(indices) == axes_size::value, "bin arguments do not match histogram dimension"); @@ -196,9 +196,9 @@ public: } template - const_reference bin(T&&t) const { + const_reference at(T&&t) const { // check whether we need to unpack argument - return bin_impl(detail::classify_container_t(), std::forward(t)); + return at_impl(detail::classify_container_t(), std::forward(t)); } /// Number of axes (dimensions) of histogram @@ -324,7 +324,7 @@ private: } template - const_reference bin_impl(detail::dynamic_container_tag, T && t) const { + const_reference at_impl(detail::dynamic_container_tag, T && t) const { BOOST_ASSERT_MSG(std::distance(std::begin(t), std::end(t)) == axes_size::value, "bin container does not match histogram dimension"); std::size_t idx = 0, stride = 1; @@ -335,7 +335,7 @@ private: } template - const_reference bin_impl(detail::static_container_tag, T&&t) const { + const_reference at_impl(detail::static_container_tag, T&&t) const { static_assert(detail::size_of::value == axes_size::value, "bin container does not match histogram dimension"); std::size_t idx = 0, stride = 1; @@ -346,7 +346,7 @@ private: } template - const_reference bin_impl(detail::no_container_tag, T&&t) const { + const_reference at_impl(detail::no_container_tag, T&&t) const { std::size_t idx = 0, stride = 1; lin<0>(idx, stride, detail::indirect_int_cast(t)); if (stride == 0) diff --git a/src/python/histogram.cpp b/src/python/histogram.cpp index 6d347d35..03171892 100644 --- a/src/python/histogram.cpp +++ b/src/python/histogram.cpp @@ -302,7 +302,7 @@ bp::object histogram_fill(bp::tuple args, bp::dict kwargs) { return bp::object(); } -bp::object histogram_bin(bp::tuple args, bp::dict kwargs) { +bp::object histogram_at(bp::tuple args, bp::dict kwargs) { const pyhistogram & self = bp::extract(args[0]); const unsigned dim = bp::len(args) - 1; @@ -328,9 +328,9 @@ bp::object histogram_bin(bp::tuple args, bp::dict kwargs) { idx[i] = bp::extract(args[1 + i]); if (dim == 1) - return bp::object(self.bin(idx[0])); + return bp::object(self.at(idx[0])); else - return bp::object(self.bin(span{idx, self.dim()})); + return bp::object(self.at(span{idx, self.dim()})); } bp::object histogram_reduce_to(bp::tuple args, bp::dict kwargs) { @@ -408,7 +408,10 @@ void register_histogram() { "\nbe mixed arbitrarily in the same call.") .add_property("bincount", &pyhistogram::bincount, ":return: total number of bins, including under- and overflow") - .def("bin", bp::raw_function(histogram_bin), + .def("at", bp::raw_function(histogram_at), + ":param int args: indices of the bin (number must match dimension)" + "\n:return: bin content") + .def("__getitem__", bp::raw_function(histogram_at), ":param int args: indices of the bin (number must match dimension)" "\n:return: bin content") .def("reduce_to", bp::raw_function(histogram_reduce_to), diff --git a/test/fail_histogram_dynamic_bin_0_test.cpp b/test/fail_histogram_dynamic_bin_0_test.cpp index ee90f141..c183aacb 100644 --- a/test/fail_histogram_dynamic_bin_0_test.cpp +++ b/test/fail_histogram_dynamic_bin_0_test.cpp @@ -3,5 +3,5 @@ using namespace boost::histogram; int main() { auto h = make_dynamic_histogram(axis::integer<>(0, 2)); - h.bin(0, 0); + h.at(0, 0); } diff --git a/test/fail_histogram_dynamic_bin_1_test.cpp b/test/fail_histogram_dynamic_bin_1_test.cpp index 7c72f1fe..4a86e789 100644 --- a/test/fail_histogram_dynamic_bin_1_test.cpp +++ b/test/fail_histogram_dynamic_bin_1_test.cpp @@ -3,5 +3,5 @@ using namespace boost::histogram; int main() { auto h = make_dynamic_histogram(axis::integer<>(0, 2)); - h.bin(-2); + h.at(-2); } diff --git a/test/fail_histogram_dynamic_bin_2_test.cpp b/test/fail_histogram_dynamic_bin_2_test.cpp index cc54df6e..48016fb9 100644 --- a/test/fail_histogram_dynamic_bin_2_test.cpp +++ b/test/fail_histogram_dynamic_bin_2_test.cpp @@ -5,5 +5,5 @@ using namespace boost::histogram; int main() { auto h = make_dynamic_histogram(axis::integer<>(0, 2), axis::integer<>(0, 2)); - h.bin(std::make_pair(-2, 0)); + h.at(std::make_pair(-2, 0)); } diff --git a/test/fail_histogram_dynamic_bin_3_test.cpp b/test/fail_histogram_dynamic_bin_3_test.cpp index 8cf3ea63..70ee1699 100644 --- a/test/fail_histogram_dynamic_bin_3_test.cpp +++ b/test/fail_histogram_dynamic_bin_3_test.cpp @@ -5,5 +5,5 @@ using namespace boost::histogram; int main() { auto h = make_dynamic_histogram(axis::integer<>(0, 2), axis::integer<>(0, 2)); - h.bin(std::vector({-2, 0})); + h.at(std::vector({-2, 0})); } diff --git a/test/fail_histogram_dynamic_bin_4_test.cpp b/test/fail_histogram_dynamic_bin_4_test.cpp index cc12fc77..370cd929 100644 --- a/test/fail_histogram_dynamic_bin_4_test.cpp +++ b/test/fail_histogram_dynamic_bin_4_test.cpp @@ -5,5 +5,5 @@ using namespace boost::histogram; int main() { auto h = make_dynamic_histogram(axis::integer<>(0, 2)); struct non_convertible_to_int {}; - h.bin(non_convertible_to_int{}); + h.at(non_convertible_to_int{}); } diff --git a/test/fail_histogram_static_bin_vector_out_of_bounds_test.cpp b/test/fail_histogram_static_bin_vector_out_of_bounds_test.cpp new file mode 100644 index 00000000..559dadf7 --- /dev/null +++ b/test/fail_histogram_static_bin_vector_out_of_bounds_test.cpp @@ -0,0 +1,9 @@ +#include +#include + +using namespace boost::histogram; +int main() { + auto h = make_static_histogram(axis::integer<>(0, 2), + axis::integer<>(0, 2)); + h.at(std::vector(-2, 0)); +} diff --git a/test/fail_histogram_static_bin_wrong_size_test.cpp b/test/fail_histogram_static_bin_wrong_size_test.cpp new file mode 100644 index 00000000..276d1b2a --- /dev/null +++ b/test/fail_histogram_static_bin_wrong_size_test.cpp @@ -0,0 +1,7 @@ +#include + +using namespace boost::histogram; +int main() { + auto h = make_static_histogram(axis::integer<>(0, 2)); + h.at(std::vector({0, 0})); +} diff --git a/test/histogram_test.cpp b/test/histogram_test.cpp index efceb7ed..60cbe4ed 100644 --- a/test/histogram_test.cpp +++ b/test/histogram_test.cpp @@ -268,10 +268,10 @@ template void run_tests() { BOOST_TEST_EQ(h.axis(0_c).shape(), 4); BOOST_TEST_EQ(sum(h), 4); - BOOST_TEST_EQ(h.bin(-1), 1); - BOOST_TEST_EQ(h.bin(0), 2); - BOOST_TEST_EQ(h.bin(1), 0); - BOOST_TEST_EQ(h.bin(2), 1); + BOOST_TEST_EQ(h.at(-1), 1); + BOOST_TEST_EQ(h.at(0), 2); + BOOST_TEST_EQ(h.at(1), 0); + BOOST_TEST_EQ(h.at(2), 1); } // d1_2 @@ -288,8 +288,8 @@ template void run_tests() { BOOST_TEST_EQ(h.axis(0_c).shape(), 2); BOOST_TEST_EQ(sum(h), 2); - BOOST_TEST_EQ(h.bin(0), 2); - BOOST_TEST_EQ(h.bin(1), 0); + BOOST_TEST_EQ(h.at(0), 2); + BOOST_TEST_EQ(h.at(1), 0); } // d1_3 @@ -306,8 +306,8 @@ template void run_tests() { BOOST_TEST_EQ(h.axis(0_c).shape(), 2); BOOST_TEST_EQ(sum(h), 2); - BOOST_TEST_EQ(h.bin(0), 1); - BOOST_TEST_EQ(h.bin(1), 1); + BOOST_TEST_EQ(h.at(0), 1); + BOOST_TEST_EQ(h.at(1), 1); } // d1w @@ -322,15 +322,15 @@ template void run_tests() { BOOST_TEST_EQ(sum(h).value(), 5.5); BOOST_TEST_EQ(sum(h).variance(), 7.25); - BOOST_TEST_EQ(h.bin(-1).value(), 1); - BOOST_TEST_EQ(h.bin(0).value(), 1.5); - BOOST_TEST_EQ(h.bin(1).value(), 1); - BOOST_TEST_EQ(h.bin(2).value(), 2); + BOOST_TEST_EQ(h.at(-1).value(), 1); + BOOST_TEST_EQ(h.at(0).value(), 1.5); + BOOST_TEST_EQ(h.at(1).value(), 1); + BOOST_TEST_EQ(h.at(2).value(), 2); - BOOST_TEST_EQ(h.bin(-1).variance(), 1); - BOOST_TEST_EQ(h.bin(0).variance(), 1.25); - BOOST_TEST_EQ(h.bin(1).variance(), 1); - BOOST_TEST_EQ(h.bin(2).variance(), 4); + BOOST_TEST_EQ(h.at(-1).variance(), 1); + BOOST_TEST_EQ(h.at(0).variance(), 1.25); + BOOST_TEST_EQ(h.at(1).variance(), 1); + BOOST_TEST_EQ(h.at(2).variance(), 4); } // d2 @@ -350,21 +350,21 @@ template void run_tests() { BOOST_TEST_EQ(h.axis(1_c).shape(), 3); BOOST_TEST_EQ(sum(h), 3); - BOOST_TEST_EQ(h.bin(-1, 0), 0); - BOOST_TEST_EQ(h.bin(-1, 1), 1); - BOOST_TEST_EQ(h.bin(-1, 2), 0); + BOOST_TEST_EQ(h.at(-1, 0), 0); + BOOST_TEST_EQ(h.at(-1, 1), 1); + BOOST_TEST_EQ(h.at(-1, 2), 0); - BOOST_TEST_EQ(h.bin(0, 0), 1); - BOOST_TEST_EQ(h.bin(0, 1), 1); - BOOST_TEST_EQ(h.bin(0, 2), 0); + BOOST_TEST_EQ(h.at(0, 0), 1); + BOOST_TEST_EQ(h.at(0, 1), 1); + BOOST_TEST_EQ(h.at(0, 2), 0); - BOOST_TEST_EQ(h.bin(1, 0), 0); - BOOST_TEST_EQ(h.bin(1, 1), 0); - BOOST_TEST_EQ(h.bin(1, 2), 0); + BOOST_TEST_EQ(h.at(1, 0), 0); + BOOST_TEST_EQ(h.at(1, 1), 0); + BOOST_TEST_EQ(h.at(1, 2), 0); - BOOST_TEST_EQ(h.bin(2, 0), 0); - BOOST_TEST_EQ(h.bin(2, 1), 0); - BOOST_TEST_EQ(h.bin(2, 2), 0); + BOOST_TEST_EQ(h.at(2, 0), 0); + BOOST_TEST_EQ(h.at(2, 1), 0); + BOOST_TEST_EQ(h.at(2, 2), 0); } // d2w @@ -380,37 +380,37 @@ template void run_tests() { BOOST_TEST_EQ(sum(h).value(), 18); BOOST_TEST_EQ(sum(h).variance(), 150); - BOOST_TEST_EQ(h.bin(-1, 0).value(), 0); - BOOST_TEST_EQ(h.bin(-1, 1).value(), 7); - BOOST_TEST_EQ(h.bin(-1, 2).value(), 0); + BOOST_TEST_EQ(h.at(-1, 0).value(), 0); + BOOST_TEST_EQ(h.at(-1, 1).value(), 7); + BOOST_TEST_EQ(h.at(-1, 2).value(), 0); - BOOST_TEST_EQ(h.bin(0, 0).value(), 10); - BOOST_TEST_EQ(h.bin(0, 1).value(), 1); - BOOST_TEST_EQ(h.bin(0, 2).value(), 0); + BOOST_TEST_EQ(h.at(0, 0).value(), 10); + BOOST_TEST_EQ(h.at(0, 1).value(), 1); + BOOST_TEST_EQ(h.at(0, 2).value(), 0); - BOOST_TEST_EQ(h.bin(1, 0).value(), 0); - BOOST_TEST_EQ(h.bin(1, 1).value(), 0); - BOOST_TEST_EQ(h.bin(1, 2).value(), 0); + BOOST_TEST_EQ(h.at(1, 0).value(), 0); + BOOST_TEST_EQ(h.at(1, 1).value(), 0); + BOOST_TEST_EQ(h.at(1, 2).value(), 0); - BOOST_TEST_EQ(h.bin(2, 0).value(), 0); - BOOST_TEST_EQ(h.bin(2, 1).value(), 0); - BOOST_TEST_EQ(h.bin(2, 2).value(), 0); + BOOST_TEST_EQ(h.at(2, 0).value(), 0); + BOOST_TEST_EQ(h.at(2, 1).value(), 0); + BOOST_TEST_EQ(h.at(2, 2).value(), 0); - BOOST_TEST_EQ(h.bin(-1, 0).variance(), 0); - BOOST_TEST_EQ(h.bin(-1, 1).variance(), 49); - BOOST_TEST_EQ(h.bin(-1, 2).variance(), 0); + BOOST_TEST_EQ(h.at(-1, 0).variance(), 0); + BOOST_TEST_EQ(h.at(-1, 1).variance(), 49); + BOOST_TEST_EQ(h.at(-1, 2).variance(), 0); - BOOST_TEST_EQ(h.bin(0, 0).variance(), 100); - BOOST_TEST_EQ(h.bin(0, 1).variance(), 1); - BOOST_TEST_EQ(h.bin(0, 2).variance(), 0); + BOOST_TEST_EQ(h.at(0, 0).variance(), 100); + BOOST_TEST_EQ(h.at(0, 1).variance(), 1); + BOOST_TEST_EQ(h.at(0, 2).variance(), 0); - BOOST_TEST_EQ(h.bin(1, 0).variance(), 0); - BOOST_TEST_EQ(h.bin(1, 1).variance(), 0); - BOOST_TEST_EQ(h.bin(1, 2).variance(), 0); + BOOST_TEST_EQ(h.at(1, 0).variance(), 0); + BOOST_TEST_EQ(h.at(1, 1).variance(), 0); + BOOST_TEST_EQ(h.at(1, 2).variance(), 0); - BOOST_TEST_EQ(h.bin(2, 0).variance(), 0); - BOOST_TEST_EQ(h.bin(2, 1).variance(), 0); - BOOST_TEST_EQ(h.bin(2, 2).variance(), 0); + BOOST_TEST_EQ(h.at(2, 0).variance(), 0); + BOOST_TEST_EQ(h.at(2, 1).variance(), 0); + BOOST_TEST_EQ(h.at(2, 2).variance(), 0); } // d3w @@ -429,8 +429,8 @@ template void run_tests() { for (auto i = 0; i < h.axis(0_c).size(); ++i) { for (auto j = 0; j < h.axis(1_c).size(); ++j) { for (auto k = 0; k < h.axis(2_c).size(); ++k) { - BOOST_TEST_EQ(h.bin(i, j, k).value(), i + j + k); - BOOST_TEST_EQ(h.bin(i, j, k).variance(), (i + j + k) * (i + j + k)); + BOOST_TEST_EQ(h.at(i, j, k).value(), i + j + k); + BOOST_TEST_EQ(h.at(i, j, k).variance(), (i + j + k) * (i + j + k)); } } } @@ -445,18 +445,18 @@ template void run_tests() { b(1); auto c = a; c += b; - BOOST_TEST_EQ(c.bin(-1), 0); - BOOST_TEST_EQ(c.bin(0), 1); - BOOST_TEST_EQ(c.bin(1), 0); - BOOST_TEST_EQ(c.bin(2), 1); - BOOST_TEST_EQ(c.bin(3), 0); + BOOST_TEST_EQ(c.at(-1), 0); + BOOST_TEST_EQ(c.at(0), 1); + BOOST_TEST_EQ(c.at(1), 0); + BOOST_TEST_EQ(c.at(2), 1); + BOOST_TEST_EQ(c.at(3), 0); auto d = a; d += b; - BOOST_TEST_EQ(d.bin(-1), 0); - BOOST_TEST_EQ(d.bin(0), 1); - BOOST_TEST_EQ(d.bin(1), 0); - BOOST_TEST_EQ(d.bin(2), 1); - BOOST_TEST_EQ(d.bin(3), 0); + BOOST_TEST_EQ(d.at(-1), 0); + BOOST_TEST_EQ(d.at(0), 1); + BOOST_TEST_EQ(d.at(1), 0); + BOOST_TEST_EQ(d.at(2), 1); + BOOST_TEST_EQ(d.at(3), 0); } // add_2 @@ -465,25 +465,25 @@ template void run_tests() { auto b = make_histogram(Type(), axis::integer<>(0, 2)); a(0); - BOOST_TEST_EQ(a.bin(0).variance(), 1); + BOOST_TEST_EQ(a.at(0).variance(), 1); b(weight(3), 1); - BOOST_TEST_EQ(b.bin(1).variance(), 9); + BOOST_TEST_EQ(b.at(1).variance(), 9); auto c = a; c += b; - BOOST_TEST_EQ(c.bin(-1).value(), 0); - BOOST_TEST_EQ(c.bin(0).value(), 1); - BOOST_TEST_EQ(c.bin(0).variance(), 1); - BOOST_TEST_EQ(c.bin(1).value(), 3); - BOOST_TEST_EQ(c.bin(1).variance(), 9); - BOOST_TEST_EQ(c.bin(2).value(), 0); + BOOST_TEST_EQ(c.at(-1).value(), 0); + BOOST_TEST_EQ(c.at(0).value(), 1); + BOOST_TEST_EQ(c.at(0).variance(), 1); + BOOST_TEST_EQ(c.at(1).value(), 3); + BOOST_TEST_EQ(c.at(1).variance(), 9); + BOOST_TEST_EQ(c.at(2).value(), 0); auto d = a; d += b; - BOOST_TEST_EQ(d.bin(-1).value(), 0); - BOOST_TEST_EQ(d.bin(0).value(), 1); - BOOST_TEST_EQ(d.bin(0).variance(), 1); - BOOST_TEST_EQ(d.bin(1).value(), 3); - BOOST_TEST_EQ(d.bin(1).variance(), 9); - BOOST_TEST_EQ(d.bin(2).value(), 0); + BOOST_TEST_EQ(d.at(-1).value(), 0); + BOOST_TEST_EQ(d.at(0).value(), 1); + BOOST_TEST_EQ(d.at(0).variance(), 1); + BOOST_TEST_EQ(d.at(1).value(), 3); + BOOST_TEST_EQ(d.at(1).variance(), 9); + BOOST_TEST_EQ(d.at(2).value(), 0); } // add_3 @@ -496,18 +496,18 @@ template void run_tests() { b(1); auto c = a; c += b; - BOOST_TEST_EQ(c.bin(-1), 0); - BOOST_TEST_EQ(c.bin(0), 1); - BOOST_TEST_EQ(c.bin(1), 0); - BOOST_TEST_EQ(c.bin(2), 1); - BOOST_TEST_EQ(c.bin(3), 0); + BOOST_TEST_EQ(c.at(-1), 0); + BOOST_TEST_EQ(c.at(0), 1); + BOOST_TEST_EQ(c.at(1), 0); + BOOST_TEST_EQ(c.at(2), 1); + BOOST_TEST_EQ(c.at(3), 0); auto d = a; d += b; - BOOST_TEST_EQ(d.bin(-1), 0); - BOOST_TEST_EQ(d.bin(0), 1); - BOOST_TEST_EQ(d.bin(1), 0); - BOOST_TEST_EQ(d.bin(2), 1); - BOOST_TEST_EQ(d.bin(3), 0); + BOOST_TEST_EQ(d.at(-1), 0); + BOOST_TEST_EQ(d.at(0), 1); + BOOST_TEST_EQ(d.at(1), 0); + BOOST_TEST_EQ(d.at(2), 1); + BOOST_TEST_EQ(d.at(3), 0); } // functional programming @@ -515,9 +515,9 @@ template void run_tests() { auto v = std::vector{0, 1, 2}; auto h = std::for_each(v.begin(), v.end(), make_histogram(Type(), axis::integer<>(0, 3))); - BOOST_TEST_EQ(h.bin(0), 1); - BOOST_TEST_EQ(h.bin(1), 1); - BOOST_TEST_EQ(h.bin(2), 1); + BOOST_TEST_EQ(h.at(0), 1); + BOOST_TEST_EQ(h.at(1), 1); + BOOST_TEST_EQ(h.at(2), 1); BOOST_TEST_EQ(sum(h), 3); } @@ -528,30 +528,30 @@ template void run_tests() { a(0); b(1); auto c = a + b; - BOOST_TEST_EQ(c.bin(0), 1); - BOOST_TEST_EQ(c.bin(1), 1); + BOOST_TEST_EQ(c.at(0), 1); + BOOST_TEST_EQ(c.at(1), 1); c += b; - BOOST_TEST_EQ(c.bin(0), 1); - BOOST_TEST_EQ(c.bin(1), 2); + BOOST_TEST_EQ(c.at(0), 1); + BOOST_TEST_EQ(c.at(1), 2); auto d = a + b + c; - BOOST_TEST_EQ(d.bin(0), 2); - BOOST_TEST_EQ(d.bin(1), 3); + BOOST_TEST_EQ(d.at(0), 2); + BOOST_TEST_EQ(d.at(1), 3); auto e = 3 * a; auto f = b * 2; - BOOST_TEST_EQ(e.bin(0).value(), 3); - BOOST_TEST_EQ(e.bin(1).value(), 0); - BOOST_TEST_EQ(f.bin(0).value(), 0); - BOOST_TEST_EQ(f.bin(1).value(), 2); + BOOST_TEST_EQ(e.at(0).value(), 3); + BOOST_TEST_EQ(e.at(1).value(), 0); + BOOST_TEST_EQ(f.at(0).value(), 0); + BOOST_TEST_EQ(f.at(1).value(), 2); auto r = a; r += b; r += e; - BOOST_TEST_EQ(r.bin(0).value(), 4); - BOOST_TEST_EQ(r.bin(1).value(), 1); + BOOST_TEST_EQ(r.at(0).value(), 4); + BOOST_TEST_EQ(r.at(1).value(), 1); BOOST_TEST_EQ(r, a + b + 3 * a); auto s = r / 4; r /= 4; - BOOST_TEST_EQ(r.bin(0).value(), 1); - BOOST_TEST_EQ(r.bin(1).value(), 0.25); + BOOST_TEST_EQ(r.at(0).value(), 1); + BOOST_TEST_EQ(r.at(1).value(), 0.25); BOOST_TEST_EQ(r, s); } @@ -602,12 +602,12 @@ template void run_tests() { Type(), axis::integer<>(0, 2, "", axis::uoflow::off)); h(0); h(1); - BOOST_TEST_EQ(h.bin(0), 1); - BOOST_TEST_EQ(h.bin(1), 1); + BOOST_TEST_EQ(h.at(0), 1); + BOOST_TEST_EQ(h.at(1), 1); BOOST_TEST_EQ(sum(h), 2); h.reset(); - BOOST_TEST_EQ(h.bin(0), 0); - BOOST_TEST_EQ(h.bin(1), 0); + BOOST_TEST_EQ(h.at(0), 0); + BOOST_TEST_EQ(h.at(1), 0); BOOST_TEST_EQ(sum(h), 0); } @@ -635,8 +635,8 @@ template void run_tests() { auto h1_0 = h1.reduce_to(0_c); BOOST_TEST_EQ(h1_0.dim(), 1); BOOST_TEST_EQ(sum(h1_0), 5); - BOOST_TEST_EQ(h1_0.bin(0), 2); - BOOST_TEST_EQ(h1_0.bin(1), 3); + BOOST_TEST_EQ(h1_0.at(0), 2); + BOOST_TEST_EQ(h1_0.at(1), 3); BOOST_TEST_EQ(h1_0.axis()[0].lower(), 0); BOOST_TEST_EQ(h1_0.axis()[1].lower(), 1); BOOST_TEST(axis_equal(Type(), h1_0.axis(), h1.axis(0_c))); @@ -644,9 +644,9 @@ template void run_tests() { auto h1_1 = h1.reduce_to(1_c); BOOST_TEST_EQ(h1_1.dim(), 1); BOOST_TEST_EQ(sum(h1_1), 5); - BOOST_TEST_EQ(h1_1.bin(0), 2); - BOOST_TEST_EQ(h1_1.bin(1), 2); - BOOST_TEST_EQ(h1_1.bin(2), 1); + BOOST_TEST_EQ(h1_1.at(0), 2); + BOOST_TEST_EQ(h1_1.at(1), 2); + BOOST_TEST_EQ(h1_1.at(2), 1); BOOST_TEST(axis_equal(Type(), h1_1.axis(), h1.axis(1_c))); auto h2 = make_histogram(Type(), axis::integer<>(0, 2), @@ -661,51 +661,51 @@ template void run_tests() { auto h2_0 = h2.reduce_to(0_c); BOOST_TEST_EQ(h2_0.dim(), 1); BOOST_TEST_EQ(sum(h2_0), 5); - BOOST_TEST_EQ(h2_0.bin(0), 4); - BOOST_TEST_EQ(h2_0.bin(1), 1); + BOOST_TEST_EQ(h2_0.at(0), 4); + BOOST_TEST_EQ(h2_0.at(1), 1); BOOST_TEST(axis_equal(Type(), h2_0.axis(), axis::integer<>(0, 2))); auto h2_1 = h2.reduce_to(1_c); BOOST_TEST_EQ(h2_1.dim(), 1); BOOST_TEST_EQ(sum(h2_1), 5); - BOOST_TEST_EQ(h2_1.bin(0), 3); - BOOST_TEST_EQ(h2_1.bin(1), 2); + BOOST_TEST_EQ(h2_1.at(0), 3); + BOOST_TEST_EQ(h2_1.at(1), 2); BOOST_TEST(axis_equal(Type(), h2_1.axis(), axis::integer<>(0, 3))); auto h2_2 = h2.reduce_to(2_c); BOOST_TEST_EQ(h2_2.dim(), 1); BOOST_TEST_EQ(sum(h2_2), 5); - BOOST_TEST_EQ(h2_2.bin(0), 2); - BOOST_TEST_EQ(h2_2.bin(1), 1); - BOOST_TEST_EQ(h2_2.bin(2), 2); + BOOST_TEST_EQ(h2_2.at(0), 2); + BOOST_TEST_EQ(h2_2.at(1), 1); + BOOST_TEST_EQ(h2_2.at(2), 2); BOOST_TEST(axis_equal(Type(), h2_2.axis(), axis::integer<>(0, 4))); auto h2_01 = h2.reduce_to(0_c, 1_c); BOOST_TEST_EQ(h2_01.dim(), 2); BOOST_TEST_EQ(sum(h2_01), 5); - BOOST_TEST_EQ(h2_01.bin(0, 0), 2); - BOOST_TEST_EQ(h2_01.bin(0, 1), 2); - BOOST_TEST_EQ(h2_01.bin(1, 0), 1); + BOOST_TEST_EQ(h2_01.at(0, 0), 2); + BOOST_TEST_EQ(h2_01.at(0, 1), 2); + BOOST_TEST_EQ(h2_01.at(1, 0), 1); BOOST_TEST(axis_equal(Type(), h2_01.axis(0_c), axis::integer<>(0, 2))); BOOST_TEST(axis_equal(Type(), h2_01.axis(1_c), axis::integer<>(0, 3))); auto h2_02 = h2.reduce_to(0_c, 2_c); BOOST_TEST_EQ(h2_02.dim(), 2); BOOST_TEST_EQ(sum(h2_02), 5); - BOOST_TEST_EQ(h2_02.bin(0, 0), 2); - BOOST_TEST_EQ(h2_02.bin(0, 1), 1); - BOOST_TEST_EQ(h2_02.bin(0, 2), 1); - BOOST_TEST_EQ(h2_02.bin(1, 2), 1); + BOOST_TEST_EQ(h2_02.at(0, 0), 2); + BOOST_TEST_EQ(h2_02.at(0, 1), 1); + BOOST_TEST_EQ(h2_02.at(0, 2), 1); + BOOST_TEST_EQ(h2_02.at(1, 2), 1); BOOST_TEST(axis_equal(Type(), h2_02.axis(0_c), axis::integer<>(0, 2))); BOOST_TEST(axis_equal(Type(), h2_02.axis(1_c), axis::integer<>(0, 4))); auto h2_12 = h2.reduce_to(1_c, 2_c); BOOST_TEST_EQ(h2_12.dim(), 2); BOOST_TEST_EQ(sum(h2_12), 5); - BOOST_TEST_EQ(h2_12.bin(0, 0), 1); - BOOST_TEST_EQ(h2_12.bin(1, 0), 1); - BOOST_TEST_EQ(h2_12.bin(1, 1), 1); - BOOST_TEST_EQ(h2_12.bin(0, 2), 2); + BOOST_TEST_EQ(h2_12.at(0, 0), 1); + BOOST_TEST_EQ(h2_12.at(1, 0), 1); + BOOST_TEST_EQ(h2_12.at(1, 1), 1); + BOOST_TEST_EQ(h2_12.at(0, 2), 2); BOOST_TEST(axis_equal(Type(), h2_12.axis(0_c), axis::integer<>(0, 3))); BOOST_TEST(axis_equal(Type(), h2_12.axis(1_c), axis::integer<>(0, 4))); } @@ -731,9 +731,9 @@ template void run_tests() { BOOST_TEST_EQ(h.dim(), 1); BOOST_TEST(h.axis() == custom_axis(0, 3)); - BOOST_TEST_EQ(h.bin(0), 1); - BOOST_TEST_EQ(h.bin(1), 1); - BOOST_TEST_EQ(h.bin(2), 0); + BOOST_TEST_EQ(h.at(0), 1); + BOOST_TEST_EQ(h.at(1), 1); + BOOST_TEST_EQ(h.at(2), 0); } // histogram iterator 1D @@ -855,9 +855,9 @@ template void run_tests() { h(std::make_pair(1, 3.0)); // pair out - BOOST_TEST_EQ(h.bin(std::make_pair(0, 0)), 1); + BOOST_TEST_EQ(h.at(std::make_pair(0, 0)), 1); // tuple out - BOOST_TEST_EQ(h.bin(std::make_tuple(1, 1)), 1); + BOOST_TEST_EQ(h.at(std::make_tuple(1, 1)), 1); // vector in, weights h(weight(2), std::vector({0, 2})); @@ -865,26 +865,26 @@ template void run_tests() { h(weight(2), std::make_pair(1, 3.0)); // vector - BOOST_TEST_EQ(h.bin(std::vector({0, 0})).value(), 3); + BOOST_TEST_EQ(h.at(std::vector({0, 0})).value(), 3); // // initializer_list - // BOOST_TEST_EQ(h.bin({1, 1}).variance(), 5); + // BOOST_TEST_EQ(h.at({1, 1}).variance(), 5); } // bin args out of range { auto h1 = make_histogram(Type(), axis::integer<>(0, 2)); - BOOST_TEST_THROWS(h1.bin(-2), std::out_of_range); - BOOST_TEST_THROWS(h1.bin(3), std::out_of_range); - BOOST_TEST_THROWS(h1.bin(std::make_tuple(-2)), std::out_of_range); - BOOST_TEST_THROWS(h1.bin(std::vector({3})), std::out_of_range); + BOOST_TEST_THROWS(h1.at(-2), std::out_of_range); + BOOST_TEST_THROWS(h1.at(3), std::out_of_range); + BOOST_TEST_THROWS(h1.at(std::make_tuple(-2)), std::out_of_range); + BOOST_TEST_THROWS(h1.at(std::vector({3})), std::out_of_range); auto h2 = make_histogram(Type(), axis::integer<>(0, 2), axis::integer<>(0, 2)); - BOOST_TEST_THROWS(h2.bin(0, -2), std::out_of_range); - BOOST_TEST_THROWS(h2.bin(std::make_tuple(0, -2)), std::out_of_range); - BOOST_TEST_THROWS(h2.bin(std::vector({0, -2})), std::out_of_range); + BOOST_TEST_THROWS(h2.at(0, -2), std::out_of_range); + BOOST_TEST_THROWS(h2.at(std::make_tuple(0, -2)), std::out_of_range); + BOOST_TEST_THROWS(h2.at(std::vector({0, -2})), std::out_of_range); } // pass histogram to function @@ -962,16 +962,16 @@ int main() { auto h1_0 = h1.reduce_to(0); BOOST_TEST_EQ(h1_0.dim(), 1); BOOST_TEST_EQ(sum(h1_0), 5); - BOOST_TEST_EQ(h1_0.bin(0), 2); - BOOST_TEST_EQ(h1_0.bin(1), 3); + BOOST_TEST_EQ(h1_0.at(0), 2); + BOOST_TEST_EQ(h1_0.at(1), 3); BOOST_TEST(axis_equal(dynamic_tag(), h1_0.axis(), h1.axis(0_c))); auto h1_1 = h1.reduce_to(1); BOOST_TEST_EQ(h1_1.dim(), 1); BOOST_TEST_EQ(sum(h1_1), 5); - BOOST_TEST_EQ(h1_1.bin(0), 2); - BOOST_TEST_EQ(h1_1.bin(1), 2); - BOOST_TEST_EQ(h1_1.bin(2), 1); + BOOST_TEST_EQ(h1_1.at(0), 2); + BOOST_TEST_EQ(h1_1.at(1), 2); + BOOST_TEST_EQ(h1_1.at(2), 1); BOOST_TEST(axis_equal(dynamic_tag(), h1_1.axis(), h1.axis(1_c))); } diff --git a/test/python_suite_test.py b/test/python_suite_test.py index dd3b703e..79d5041e 100644 --- a/test/python_suite_test.py +++ b/test/python_suite_test.py @@ -491,19 +491,19 @@ class test_histogram(unittest.TestCase): self.assertEqual(h1.axis(0).shape, 5) for h in (h0, h1): - self.assertEqual(h.bin(0).value, 2) - self.assertEqual(h.bin(1).value, 1) - self.assertEqual(h.bin(2).value, 3) + self.assertEqual(h.at(0).value, 2) + self.assertEqual(h.at(1).value, 1) + self.assertEqual(h.at(2).value, 3) with self.assertRaises(RuntimeError): - h.bin(0, 1).value + h.at(0, 1).value with self.assertRaises(RuntimeError): - h.bin(0, foo=None) - self.assertEqual(h.bin(0).variance, 2) - self.assertEqual(h.bin(1).variance, 1) - self.assertEqual(h.bin(2).variance, 3) + h.at(0, foo=None) + self.assertEqual(h.at(0).variance, 2) + self.assertEqual(h.at(1).variance, 1) + self.assertEqual(h.at(2).variance, 3) - self.assertEqual(h1.bin(-1).value, 1) - self.assertEqual(h1.bin(3).value, 1) + self.assertEqual(h1.at(-1).value, 1) + self.assertEqual(h1.at(3).value, 1) def test_growth(self): h = histogram(integer(-1, 2)) @@ -515,11 +515,11 @@ class test_histogram(unittest.TestCase): h(0) for i in range(1000 - 256): h(0) - self.assertEqual(h.bin(-1).value, 0) - self.assertEqual(h.bin(0).value, 1) - self.assertEqual(h.bin(1).value, 1000) - self.assertEqual(h.bin(2).value, 2) - self.assertEqual(h.bin(3).value, 0) + self.assertEqual(h.at(-1).value, 0) + self.assertEqual(h.at(0).value, 1) + self.assertEqual(h.at(1).value, 1000) + self.assertEqual(h.at(2).value, 2) + self.assertEqual(h.at(3).value, 0) def test_fill_2d(self): for uoflow in (False, True): @@ -544,7 +544,7 @@ class test_histogram(unittest.TestCase): [0, 0, 0, 0, 0, 0]] for i in range(-uoflow, len(h.axis(0)) + uoflow): for j in range(-uoflow, len(h.axis(1)) + uoflow): - self.assertEqual(h.bin(i, j).value, m[i][j]) + self.assertEqual(h.at(i, j).value, m[i][j]) def test_add_2d(self): for uoflow in (False, True): @@ -568,8 +568,8 @@ class test_histogram(unittest.TestCase): for i in range(-uoflow, len(h.axis(0)) + uoflow): for j in range(-uoflow, len(h.axis(1)) + uoflow): - self.assertEqual(h.bin(i, j).value, 2 * m[i][j]) - self.assertEqual(h.bin(i, j).variance, 2 * m[i][j]) + self.assertEqual(h.at(i, j).value, 2 * m[i][j]) + self.assertEqual(h.at(i, j).variance, 2 * m[i][j]) def test_add_2d_bad(self): a = histogram(integer(-1, 1)) @@ -606,8 +606,8 @@ class test_histogram(unittest.TestCase): for i in range(-uoflow, len(h.axis(0)) + uoflow): for j in range(-uoflow, len(h.axis(1)) + uoflow): - self.assertEqual(h.bin(i, j).value, 2 * m[i][j]) - self.assertEqual(h.bin(i, j).variance, 2 * m[i][j]) + self.assertEqual(h.at(i, j).value, 2 * m[i][j]) + self.assertEqual(h.at(i, j).variance, 2 * m[i][j]) def test_repr(self): h = histogram(regular(10, 0, 1), integer(0, 1)) @@ -632,38 +632,38 @@ class test_histogram(unittest.TestCase): h(*range(50)) with self.assertRaises(RuntimeError): - h.bin(*range(50)).value + h.at(*range(50)).value def test_out_of_range(self): h = histogram(regular(3, 0, 1)) h(-1) h(2) - self.assertEqual(h.bin(-1).value, 1) - self.assertEqual(h.bin(3).value, 1) + self.assertEqual(h.at(-1).value, 1) + self.assertEqual(h.at(3).value, 1) with self.assertRaises(IndexError): - h.bin(-2).value + h.at(-2).value with self.assertRaises(IndexError): - h.bin(4).value + h.at(4).value with self.assertRaises(IndexError): - h.bin(-2).variance + h.at(-2).variance with self.assertRaises(IndexError): - h.bin(4).variance + h.at(4).variance def test_operators(self): h = histogram(integer(0, 2)) h(0) h += h - self.assertEqual(h.bin(0).value, 2) - self.assertEqual(h.bin(0).variance, 2) - self.assertEqual(h.bin(1).value, 0) + self.assertEqual(h.at(0).value, 2) + self.assertEqual(h.at(0).variance, 2) + self.assertEqual(h.at(1).value, 0) h *= 2 - self.assertEqual(h.bin(0).value, 4) - self.assertEqual(h.bin(0).variance, 8) - self.assertEqual(h.bin(1).value, 0) - self.assertEqual((h + h).bin(0).value, (2 * h).bin(0).value) - self.assertEqual((h + h).bin(0).value, (h * 2).bin(0).value) - self.assertNotEqual((h + h).bin(0).variance, (2 * h).bin(0).variance) - self.assertNotEqual((h + h).bin(0).variance, (h * 2).bin(0).variance) + self.assertEqual(h.at(0).value, 4) + self.assertEqual(h.at(0).variance, 8) + self.assertEqual(h.at(1).value, 0) + self.assertEqual((h + h).at(0).value, (2 * h).at(0).value) + self.assertEqual((h + h).at(0).value, (h * 2).at(0).value) + self.assertNotEqual((h + h).at(0).variance, (2 * h).at(0).variance) + self.assertNotEqual((h + h).at(0).variance, (h * 2).at(0).variance) h2 = histogram(regular(2, 0, 2)) with self.assertRaises(ValueError): h + h2 @@ -677,12 +677,12 @@ class test_histogram(unittest.TestCase): h0 = h.reduce_to(0) self.assertEqual(h0.dim, 1) self.assertEqual(h0.axis(), integer(0, 2)) - self.assertEqual([h0.bin(i).value for i in range(2)], [2, 1]) + self.assertEqual([h0.at(i).value for i in range(2)], [2, 1]) h1 = h.reduce_to(1) self.assertEqual(h1.dim, 1) self.assertEqual(h1.axis(), integer(1, 4)) - self.assertEqual([h1.bin(i).value for i in range(3)], [1, 1, 1]) + self.assertEqual([h1.at(i).value for i in range(3)], [1, 1, 1]) def test_pickle_0(self): a = histogram(category(0, 1, 2), @@ -797,7 +797,7 @@ class test_histogram(unittest.TestCase): for i in range(len(a.axis(0))): for j in range(len(a.axis(1))): for k in range(len(a.axis(2))): - d[i, j, k] = a.bin(i, j, k).value + d[i, j, k] = a.at(i, j, k).value self.assertTrue(numpy.all(d == r)) @@ -826,8 +826,8 @@ class test_histogram(unittest.TestCase): for i in range(len(a.axis(0))): for j in range(len(a.axis(1))): for k in range(len(a.axis(2))): - c2[0, i, j, k] = a.bin(i, j, k).value - c2[1, i, j, k] = a.bin(i, j, k).variance + c2[0, i, j, k] = a.at(i, j, k).value + c2[1, i, j, k] = a.at(i, j, k).variance self.assertTrue(numpy.all(c == c2)) self.assertTrue(numpy.all(c == r)) @@ -895,9 +895,9 @@ class test_histogram(unittest.TestCase): a = histogram(integer(0, 3, uoflow=False)) a(ar(-1, 0, 1, 2, 1)) a((4, -1, 0, 1, 2)) - self.assertEqual(a.bin(0).value, 2) - self.assertEqual(a.bin(1).value, 3) - self.assertEqual(a.bin(2).value, 2) + self.assertEqual(a.at(0).value, 2) + self.assertEqual(a.at(1).value, 3) + self.assertEqual(a.at(2).value, 2) with self.assertRaises(ValueError): a(numpy.empty((2, 2))) @@ -909,19 +909,19 @@ class test_histogram(unittest.TestCase): a = histogram(integer(0, 2, uoflow=False), regular(2, 0, 2, uoflow=False)) a(ar(-1, 0, 1), ar(-1., 1., 0.1)) - self.assertEqual(a.bin(0, 0).value, 0) - self.assertEqual(a.bin(0, 1).value, 1) - self.assertEqual(a.bin(1, 0).value, 1) - self.assertEqual(a.bin(1, 1).value, 0) + self.assertEqual(a.at(0, 0).value, 0) + self.assertEqual(a.at(0, 1).value, 1) + self.assertEqual(a.at(1, 0).value, 1) + self.assertEqual(a.at(1, 1).value, 0) with self.assertRaises(ValueError): a(ar(1, 2, 3)) a = histogram(integer(0, 3, uoflow=False)) a(ar(0, 0, 1, 2, 1, 0, 2, 2)) - self.assertEqual(a.bin(0).value, 3) - self.assertEqual(a.bin(1).value, 2) - self.assertEqual(a.bin(2).value, 3) + self.assertEqual(a.at(0).value, 3) + self.assertEqual(a.at(1).value, 2) + self.assertEqual(a.at(2).value, 3) @unittest.skipUnless(HAVE_NUMPY, "requires build with numpy-support") def test_fill_with_numpy_array_1(self): @@ -932,19 +932,19 @@ class test_histogram(unittest.TestCase): w = ar( 2, 3, 4, 5, 6, 7) # noqa a(v, weight=w) a((0, 1), weight=(2, 3)) - self.assertEqual(a.bin(-1).value, 2) - self.assertEqual(a.bin(0).value, 5) - self.assertEqual(a.bin(1).value, 7) - self.assertEqual(a.bin(2).value, 5) - self.assertEqual(a.bin(-1).variance, 4) - self.assertEqual(a.bin(0).variance, 13) - self.assertEqual(a.bin(1).variance, 25) - self.assertEqual(a.bin(2).variance, 25) + self.assertEqual(a.at(-1).value, 2) + self.assertEqual(a.at(0).value, 5) + self.assertEqual(a.at(1).value, 7) + self.assertEqual(a.at(2).value, 5) + self.assertEqual(a.at(-1).variance, 4) + self.assertEqual(a.at(0).variance, 13) + self.assertEqual(a.at(1).variance, 25) + self.assertEqual(a.at(2).variance, 25) a((1, 2), weight=1) a(0, weight=(1, 2)) - self.assertEqual(a.bin(0).value, 8) - self.assertEqual(a.bin(1).value, 8) - self.assertEqual(a.bin(2).value, 6) + self.assertEqual(a.at(0).value, 8) + self.assertEqual(a.at(1).value, 8) + self.assertEqual(a.at(2).value, 6) with self.assertRaises(RuntimeError): a((1, 2), foo=(1, 1)) @@ -960,16 +960,16 @@ class test_histogram(unittest.TestCase): a = histogram(integer(0, 2, uoflow=False), regular(2, 0, 2, uoflow=False)) a((-1, 0, 1), (-1, 1, 0.1)) - self.assertEqual(a.bin(0, 0).value, 0) - self.assertEqual(a.bin(0, 1).value, 1) - self.assertEqual(a.bin(1, 0).value, 1) - self.assertEqual(a.bin(1, 1).value, 0) + self.assertEqual(a.at(0, 0).value, 0) + self.assertEqual(a.at(0, 1).value, 1) + self.assertEqual(a.at(1, 0).value, 1) + self.assertEqual(a.at(1, 1).value, 0) a = histogram(integer(0, 3, uoflow=False)) a((0, 0, 1, 2)) a((1, 0, 2, 2)) - self.assertEqual(a.bin(0).value, 3) - self.assertEqual(a.bin(1).value, 2) - self.assertEqual(a.bin(2).value, 3) + self.assertEqual(a.at(0).value, 3) + self.assertEqual(a.at(1).value, 2) + self.assertEqual(a.at(2).value, 3) if __name__ == "__main__":