mirror of
https://github.com/boostorg/histogram.git
synced 2025-05-11 13:14:06 +00:00
switch from fill to increment
This commit is contained in:
parent
719e6036b7
commit
fcf9366d89
20
README.md
20
README.md
@ -71,15 +71,15 @@ Example 1: Fill a 1d-histogram in C++
|
||||
auto h = bh::make_static_histogram(bh::regular_axis(10, -1.0, 2.0, "x"));
|
||||
|
||||
// fill histogram with data
|
||||
h.fill(-1.5); // put in underflow bin
|
||||
h.fill(-1.0); // included in first bin, bin interval is semi-open
|
||||
h.fill(-0.5);
|
||||
h.fill(1.1);
|
||||
h.fill(0.3);
|
||||
h.fill(1.7);
|
||||
h.fill(2.0); // put in overflow bin, bin interval is semi-open
|
||||
h.fill(20.0); // put in overflow bin
|
||||
h.wfill(0.1, 5.0); // fill with a weighted entry, weight is 5.0
|
||||
h.increment(-1.5); // put in underflow bin
|
||||
h.increment(-1.0); // included in first bin, bin interval is semi-open
|
||||
h.increment(-0.5);
|
||||
h.increment(1.1);
|
||||
h.increment(0.3);
|
||||
h.increment(1.7);
|
||||
h.increment(2.0); // put in overflow bin, bin interval is semi-open
|
||||
h.increment(20.0); // put in overflow bin
|
||||
h.wincrement(0.1, 5.0); // fill with a weighted entry, weight is 5.0
|
||||
|
||||
// access histogram counts, loop includes under- and overflow bin
|
||||
const auto& a = h.axis<0>();
|
||||
@ -132,7 +132,7 @@ Example 2: Fill a 2d-histogram in Python with data in Numpy arrays
|
||||
rphi[:, 1] = np.arctan2(y, x) # compute phi
|
||||
|
||||
# fill histogram with numpy array
|
||||
h.fill(rphi)
|
||||
h.increment(rphi)
|
||||
|
||||
# access histogram counts (no copy)
|
||||
count_matrix = np.asarray(h)
|
||||
|
@ -21,7 +21,7 @@ Properties
|
||||
Getter/setter-like functions are wrapped as properties.
|
||||
|
||||
Keyword-based parameters
|
||||
C++ member functions :cpp:func:`histogram::fill` and :cpp:func:`histogram::wfill` are wrapped by the single Python member function :py:func:`histogram.fill` with an optional keyword parameter `w` to pass a weight.
|
||||
C++ member functions :cpp:func:`histogram::fill` and :cpp:func:`histogram::wfill` are wrapped by the single Python member function :py:func:`histogram.increment` with an optional keyword parameter `w` to pass a weight.
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -26,14 +26,14 @@ How to make a 1d-histogram in C++ and to fill it:
|
||||
* axis are placed in the overflow and underflow bins.
|
||||
* Normally you would loop over a source of values.
|
||||
*/
|
||||
h.fill(-1.5); // put in underflow bin
|
||||
h.fill(-0.5);
|
||||
h.fill(1.1);
|
||||
h.fill(-1.0); // included, interval is semi-open
|
||||
h.fill(0.3);
|
||||
h.fill(1.7);
|
||||
h.fill(2.0); // put in overflow bin, interval is semi-open
|
||||
h.fill(20.0); // put in overflow bin
|
||||
h.increment(-1.5); // put in underflow bin
|
||||
h.increment(-0.5);
|
||||
h.increment(1.1);
|
||||
h.increment(-1.0); // included, interval is semi-open
|
||||
h.increment(0.3);
|
||||
h.increment(1.7);
|
||||
h.increment(2.0); // put in overflow bin, interval is semi-open
|
||||
h.increment(20.0); // put in overflow bin
|
||||
|
||||
/* Fill histogram with a weighted count. This increases the
|
||||
* bin counter not by one, but by the specified weight.
|
||||
@ -46,7 +46,7 @@ How to make a 1d-histogram in C++ and to fill it:
|
||||
*
|
||||
* Use wfill(...) if you have to, else prefer fill(...).
|
||||
*/
|
||||
h.wfill(0.1, 5.0);
|
||||
h.wincrement(0.1, 5.0);
|
||||
|
||||
/* Print a table representation of the histogram showing the bin
|
||||
* value and a estimate of the standard deviation. Overflow and
|
||||
@ -111,7 +111,7 @@ How to make a 2d-histogram in Python and to fill it using a Numpy array:
|
||||
rphi = np.empty((1000, 2))
|
||||
rphi[:, 0] = (x ** 2 + y ** 2) ** 0.5 # compute radius
|
||||
rphi[:, 1] = np.arctan2(y, x) # compute phi
|
||||
h.fill(rphi)
|
||||
h.increment(rphi)
|
||||
|
||||
# access counts as a numpy array (no data is copied)
|
||||
count_matrix = np.asarray(h)
|
||||
|
@ -3,7 +3,7 @@ import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
h = hg.histogram(hg.regular_axis(10, -3, 3))
|
||||
h.fill(np.random.randn(1000))
|
||||
h.increment(np.random.randn(1000))
|
||||
|
||||
bins = h.axis(0).bins
|
||||
|
||||
|
@ -6,7 +6,7 @@ h = hg.histogram(hg.regular_axis(10, -3, 3, uoflow=False),
|
||||
hg.regular_axis(10, -3, 3, uoflow=False))
|
||||
xy = np.random.randn(2000).reshape((1000, 2))
|
||||
xy[:,1] *= 0.5
|
||||
h.fill(xy)
|
||||
h.increment(xy)
|
||||
|
||||
bins = h.axis(0).bins
|
||||
|
||||
|
@ -133,7 +133,7 @@ public:
|
||||
}
|
||||
|
||||
template <typename... Values>
|
||||
void fill(Values... values)
|
||||
void increment(Values... values)
|
||||
{
|
||||
BOOST_ASSERT_MSG(sizeof...(values) == dim(),
|
||||
"number of arguments does not match histogram dimension");
|
||||
@ -145,7 +145,7 @@ public:
|
||||
|
||||
template <typename Iterator,
|
||||
typename = detail::is_iterator<Iterator>>
|
||||
void fill(Iterator begin, Iterator end)
|
||||
void increment(Iterator begin, Iterator end)
|
||||
{
|
||||
BOOST_ASSERT_MSG(std::distance(begin, end) == dim(),
|
||||
"number of arguments does not match histogram dimension");
|
||||
@ -157,16 +157,16 @@ public:
|
||||
|
||||
template <typename Sequence,
|
||||
typename = detail::is_sequence<Sequence>>
|
||||
void fill(const Sequence& values)
|
||||
void increment(const Sequence& values)
|
||||
{
|
||||
fill(std::begin(values), std::end(values));
|
||||
increment(std::begin(values), std::end(values));
|
||||
}
|
||||
|
||||
template <typename... Values>
|
||||
void wfill(value_type w, Values... values)
|
||||
void wincrement(value_type w, Values... values)
|
||||
{
|
||||
static_assert(detail::has_weight_support<Storage>::value,
|
||||
"wfill only supported for adaptive_storage");
|
||||
"wincrement only supported for adaptive_storage");
|
||||
BOOST_ASSERT_MSG(sizeof...(values) == dim(),
|
||||
"number of arguments does not match histogram dimension");
|
||||
detail::linearize_x lin;
|
||||
@ -177,10 +177,10 @@ public:
|
||||
|
||||
template <typename Iterator,
|
||||
typename = detail::is_iterator<Iterator>>
|
||||
void wfill(value_type w, Iterator begin, Iterator end)
|
||||
void wincrement(value_type w, Iterator begin, Iterator end)
|
||||
{
|
||||
static_assert(detail::has_weight_support<Storage>::value,
|
||||
"wfill only supported for adaptive_storage");
|
||||
"wincrement only supported for adaptive_storage");
|
||||
BOOST_ASSERT_MSG(std::distance(begin, end) == dim(),
|
||||
"iterator range does not match histogram dimension");
|
||||
detail::linearize_x lin;
|
||||
@ -191,9 +191,9 @@ public:
|
||||
|
||||
template <typename Sequence,
|
||||
typename = detail::is_sequence<Sequence>>
|
||||
void wfill(value_type w, const Sequence& values)
|
||||
void wincrement(value_type w, const Sequence& values)
|
||||
{
|
||||
wfill(w, std::begin(values), std::end(values));
|
||||
wincrement(w, std::begin(values), std::end(values));
|
||||
}
|
||||
|
||||
template <typename... Indices>
|
||||
|
@ -103,7 +103,7 @@ public:
|
||||
}
|
||||
|
||||
template <typename... Values>
|
||||
void fill(Values... values)
|
||||
void increment(Values... values)
|
||||
{
|
||||
static_assert(sizeof...(values) == dim(),
|
||||
"number of arguments does not match histogram dimension");
|
||||
@ -115,7 +115,7 @@ public:
|
||||
|
||||
template <typename Iterator,
|
||||
typename = detail::is_iterator<Iterator>>
|
||||
void fill(Iterator begin, Iterator end)
|
||||
void increment(Iterator begin, Iterator end)
|
||||
{
|
||||
BOOST_ASSERT_MSG(std::distance(begin, end) == dim(),
|
||||
"iterator range does not match histogram dimension");
|
||||
@ -127,16 +127,16 @@ public:
|
||||
|
||||
template <typename Sequence,
|
||||
typename = detail::is_sequence<Sequence>>
|
||||
void fill(const Sequence& values)
|
||||
void increment(const Sequence& values)
|
||||
{
|
||||
fill(std::begin(values), std::end(values));
|
||||
increment(std::begin(values), std::end(values));
|
||||
}
|
||||
|
||||
template <typename... Values>
|
||||
void wfill(value_type w, Values... values)
|
||||
void wincrement(value_type w, Values... values)
|
||||
{
|
||||
static_assert(detail::has_weight_support<Storage>::value,
|
||||
"wfill only supported for adaptive_storage");
|
||||
"wincrement only supported for adaptive_storage");
|
||||
static_assert(sizeof...(values) == dim(),
|
||||
"number of arguments does not match histogram dimension");
|
||||
detail::linearize_x lin;
|
||||
@ -147,10 +147,10 @@ public:
|
||||
|
||||
template <typename Iterator,
|
||||
typename = detail::is_iterator<Iterator>>
|
||||
void wfill(value_type w, Iterator begin, Iterator end)
|
||||
void wincrement(value_type w, Iterator begin, Iterator end)
|
||||
{
|
||||
static_assert(detail::has_weight_support<Storage>::value,
|
||||
"wfill only supported for adaptive_storage");
|
||||
"wincrement only supported for adaptive_storage");
|
||||
BOOST_ASSERT_MSG(std::distance(begin, end) == dim(),
|
||||
"iterator range does not match histogram dimension");
|
||||
detail::linearize_x lin;
|
||||
@ -161,9 +161,9 @@ public:
|
||||
|
||||
template <typename Sequence,
|
||||
typename = detail::is_sequence<Sequence>>
|
||||
void wfill(value_type w, const Sequence& values)
|
||||
void wincrement(value_type w, const Sequence& values)
|
||||
{
|
||||
wfill(w, std::begin(values), std::end(values));
|
||||
wincrement(w, std::begin(values), std::end(values));
|
||||
}
|
||||
|
||||
template <typename... Indices>
|
||||
|
@ -75,7 +75,7 @@ histogram_init(python::tuple args, python::dict kwargs) {
|
||||
}
|
||||
|
||||
python::object
|
||||
histogram_fill(python::tuple args, python::dict kwargs) {
|
||||
histogram_increment(python::tuple args, python::dict kwargs) {
|
||||
using namespace python;
|
||||
|
||||
const unsigned nargs = len(args);
|
||||
@ -143,7 +143,7 @@ histogram_fill(python::tuple args, python::dict kwargs) {
|
||||
for (unsigned i = 0; i < dims[0]; ++i) {
|
||||
double* v = reinterpret_cast<double*>(PyArray_GETPTR1(a, i) );
|
||||
double* w = reinterpret_cast<double*>(PyArray_GETPTR1(aw, i));
|
||||
self.wfill(*w, v, v+self.dim());
|
||||
self.wincrement(*w, v, v+self.dim());
|
||||
}
|
||||
|
||||
Py_DECREF(aw);
|
||||
@ -154,7 +154,7 @@ histogram_fill(python::tuple args, python::dict kwargs) {
|
||||
} else {
|
||||
for (unsigned i = 0; i < dims[0]; ++i) {
|
||||
double* v = reinterpret_cast<double*>(PyArray_GETPTR1(a, i));
|
||||
self.fill(v, v+self.dim());
|
||||
self.increment(v, v+self.dim());
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,11 +175,11 @@ histogram_fill(python::tuple args, python::dict kwargs) {
|
||||
v[i] = extract<double>(args[1 + i]);
|
||||
|
||||
if (ow.is_none()) {
|
||||
self.fill(v, v+self.dim());
|
||||
self.increment(v, v+self.dim());
|
||||
|
||||
} else {
|
||||
const double w = extract<double>(ow);
|
||||
self.wfill(w, v, v+self.dim());
|
||||
self.wincrement(w, v, v+self.dim());
|
||||
}
|
||||
|
||||
return object();
|
||||
@ -293,10 +293,10 @@ void register_histogram()
|
||||
":param int i: index of the axis\n"
|
||||
":returns: axis object for axis i",
|
||||
(arg("self"), arg("i") = 0))
|
||||
.def("fill", raw_function(histogram_fill),
|
||||
.def("increment", raw_function(histogram_increment),
|
||||
"Pass a sequence of values with a length n is"
|
||||
"\nequal to the dimensions of the histogram,"
|
||||
"\nand optionally a weight w for this fill"
|
||||
"\nand optionally a weight w for this increment"
|
||||
"\n(*int* or *float*)."
|
||||
"\n"
|
||||
"\nIf Numpy support is enabled, values may also"
|
||||
|
@ -125,7 +125,7 @@ int main() {
|
||||
{
|
||||
auto h = make_dynamic_histogram_with<adaptive_storage<>>(integer_axis(0, 1),
|
||||
integer_axis(0, 2));
|
||||
h.fill(0, 0);
|
||||
h.increment(0, 0);
|
||||
auto h2 = decltype(h)(h);
|
||||
BOOST_TEST(h2 == h);
|
||||
auto h3 = dynamic_histogram<
|
||||
@ -139,7 +139,7 @@ int main() {
|
||||
{
|
||||
auto h = make_dynamic_histogram_with<adaptive_storage<>>(integer_axis(0, 1),
|
||||
integer_axis(0, 2));
|
||||
h.fill(0, 0);
|
||||
h.increment(0, 0);
|
||||
auto h2 = decltype(h)();
|
||||
BOOST_TEST(!(h == h2));
|
||||
h2 = h;
|
||||
@ -159,7 +159,7 @@ int main() {
|
||||
{
|
||||
auto h = make_dynamic_histogram(integer_axis(0, 1),
|
||||
integer_axis(0, 2));
|
||||
h.fill(0, 0);
|
||||
h.increment(0, 0);
|
||||
const auto href = h;
|
||||
decltype(h) h2(std::move(h));
|
||||
BOOST_TEST_EQ(h.dim(), 0u);
|
||||
@ -195,13 +195,13 @@ int main() {
|
||||
auto d = make_dynamic_histogram(regular_axis(2, 0, 1));
|
||||
BOOST_TEST(!(c == d));
|
||||
BOOST_TEST(!(d == c));
|
||||
c.fill(0);
|
||||
c.increment(0);
|
||||
BOOST_TEST(!(a == c));
|
||||
BOOST_TEST(!(c == a));
|
||||
a.fill(0);
|
||||
a.increment(0);
|
||||
BOOST_TEST(a == c);
|
||||
BOOST_TEST(c == a);
|
||||
a.fill(0);
|
||||
a.increment(0);
|
||||
BOOST_TEST(!(a == c));
|
||||
BOOST_TEST(!(c == a));
|
||||
}
|
||||
@ -209,10 +209,10 @@ int main() {
|
||||
// d1
|
||||
{
|
||||
auto h = make_dynamic_histogram(integer_axis(0, 1));
|
||||
h.fill(0);
|
||||
h.fill(0);
|
||||
h.fill(-1);
|
||||
h.fill(10);
|
||||
h.increment(0);
|
||||
h.increment(0);
|
||||
h.increment(-1);
|
||||
h.increment(10);
|
||||
|
||||
BOOST_TEST_EQ(h.dim(), 1u);
|
||||
BOOST_TEST_EQ(bins(h.axis(0)), 2);
|
||||
@ -237,10 +237,10 @@ int main() {
|
||||
// d1_2
|
||||
{
|
||||
auto h = make_dynamic_histogram(integer_axis(0, 1, "", false));
|
||||
h.fill(0);
|
||||
h.fill(-0);
|
||||
h.fill(-1);
|
||||
h.fill(10);
|
||||
h.increment(0);
|
||||
h.increment(-0);
|
||||
h.increment(-1);
|
||||
h.increment(10);
|
||||
|
||||
BOOST_TEST_EQ(h.dim(), 1u);
|
||||
BOOST_TEST_EQ(bins(h.axis(0)), 2);
|
||||
@ -261,11 +261,11 @@ int main() {
|
||||
// d1w
|
||||
{
|
||||
auto h = make_dynamic_histogram(regular_axis(2, -1, 1));
|
||||
h.fill(0);
|
||||
h.wfill(2, -1.0);
|
||||
h.fill(-1.0);
|
||||
h.fill(-2.0);
|
||||
h.wfill(5, 10);
|
||||
h.increment(0);
|
||||
h.wincrement(2, -1.0);
|
||||
h.increment(-1.0);
|
||||
h.increment(-2.0);
|
||||
h.wincrement(5, 10);
|
||||
|
||||
BOOST_TEST_EQ(h.sum(), 10.0);
|
||||
|
||||
@ -284,12 +284,12 @@ int main() {
|
||||
{
|
||||
auto h = make_dynamic_histogram(regular_axis(2, -1, 1),
|
||||
integer_axis(-1, 1, nullptr, false));
|
||||
h.fill(-1, -1);
|
||||
h.fill(-1, 0);
|
||||
h.increment(-1, -1);
|
||||
h.increment(-1, 0);
|
||||
std::array<double, 2> ai = {{-1., -10.}};
|
||||
h.fill(ai);
|
||||
h.increment(ai);
|
||||
double in[2] = {-10., 0.};
|
||||
h.fill(in, in+2);
|
||||
h.increment(in, in+2);
|
||||
|
||||
BOOST_TEST_EQ(h.dim(), 2u);
|
||||
BOOST_TEST_EQ(bins(h.axis(0)), 2);
|
||||
@ -335,10 +335,10 @@ int main() {
|
||||
{
|
||||
auto h = make_dynamic_histogram(regular_axis(2, -1, 1),
|
||||
integer_axis(-1, 1, nullptr, false));
|
||||
h.fill(-1, 0); // -> 0, 1
|
||||
h.wfill(10, -1, -1); // -> 0, 0
|
||||
h.wfill(5, -1, -10); // is ignored
|
||||
h.wfill(7, -10, 0); // -> -1, 1
|
||||
h.increment(-1, 0); // -> 0, 1
|
||||
h.wincrement(10, -1, -1); // -> 0, 0
|
||||
h.wincrement(5, -1, -10); // is ignored
|
||||
h.wincrement(7, -10, 0); // -> -1, 1
|
||||
|
||||
BOOST_TEST_EQ(h.sum(), 18.0);
|
||||
|
||||
@ -384,7 +384,7 @@ int main() {
|
||||
for (auto j = 0; j < bins(h.axis(1)); ++j)
|
||||
for (auto k = 0; k < bins(h.axis(2)); ++k)
|
||||
{
|
||||
h.wfill(i+j+k, i, j, k);
|
||||
h.wincrement(i+j+k, i, j, k);
|
||||
}
|
||||
|
||||
for (auto i = 0; i < bins(h.axis(0)); ++i)
|
||||
@ -412,8 +412,8 @@ int main() {
|
||||
mpl::vector<integer_axis, regular_axis>,
|
||||
container_storage<std::vector<unsigned>>
|
||||
>(integer_axis(-1, 1));
|
||||
a.fill(-1);
|
||||
b.fill(1);
|
||||
a.increment(-1);
|
||||
b.increment(1);
|
||||
auto c = a;
|
||||
c += b;
|
||||
BOOST_TEST_EQ(c.value(-1), 0);
|
||||
@ -435,8 +435,8 @@ int main() {
|
||||
auto a = make_dynamic_histogram(integer_axis(-1, 1));
|
||||
auto b = make_dynamic_histogram(integer_axis(-1, 1));
|
||||
|
||||
a.fill(0);
|
||||
b.wfill(3, -1);
|
||||
a.increment(0);
|
||||
b.wincrement(3, -1);
|
||||
auto c = a;
|
||||
c += b;
|
||||
BOOST_TEST_EQ(c.value(-1), 0);
|
||||
@ -457,8 +457,8 @@ int main() {
|
||||
{
|
||||
auto a = make_dynamic_histogram_with<container_storage<std::vector<unsigned char>>>(integer_axis(-1, 1));
|
||||
auto b = make_dynamic_histogram_with<container_storage<std::vector<unsigned>>>(integer_axis(-1, 1));
|
||||
a.fill(-1);
|
||||
b.fill(1);
|
||||
a.increment(-1);
|
||||
b.increment(1);
|
||||
auto c = a;
|
||||
c += b;
|
||||
BOOST_TEST_EQ(c.value(-1), 0u);
|
||||
@ -501,7 +501,7 @@ int main() {
|
||||
variable_axis({0.1, 0.2, 0.3, 0.4, 0.5}, "v"),
|
||||
category_axis{"A", "B", "C"},
|
||||
integer_axis(0, 1, "i"));
|
||||
a.fill(0.5, 0.1, 0.25, 1, 0);
|
||||
a.increment(0.5, 0.1, 0.25, 1, 0);
|
||||
std::string buf;
|
||||
{
|
||||
std::ostringstream os;
|
||||
|
@ -349,17 +349,17 @@ class histogramest(unittest.TestCase):
|
||||
h1 = histogram(integer_axis(-1, 1, uoflow=True))
|
||||
for h in (h0, h1):
|
||||
with self.assertRaises(RuntimeError):
|
||||
h.fill()
|
||||
h.increment()
|
||||
with self.assertRaises(RuntimeError):
|
||||
h.fill(1, 2)
|
||||
h.fill(-10)
|
||||
h.fill(-1)
|
||||
h.fill(-1)
|
||||
h.fill(0)
|
||||
h.fill(1)
|
||||
h.fill(1)
|
||||
h.fill(1)
|
||||
h.fill(10)
|
||||
h.increment(1, 2)
|
||||
h.increment(-10)
|
||||
h.increment(-1)
|
||||
h.increment(-1)
|
||||
h.increment(0)
|
||||
h.increment(1)
|
||||
h.increment(1)
|
||||
h.increment(1)
|
||||
h.increment(10)
|
||||
self.assertEqual(h0.sum, 6)
|
||||
self.assertEqual(h0.axis(0).shape, 3)
|
||||
self.assertEqual(h1.sum, 8)
|
||||
@ -386,14 +386,14 @@ class histogramest(unittest.TestCase):
|
||||
|
||||
def test_growth(self):
|
||||
h = histogram(integer_axis(-1, 1))
|
||||
h.fill(-1)
|
||||
h.fill(1)
|
||||
h.fill(1)
|
||||
h.increment(-1)
|
||||
h.increment(1)
|
||||
h.increment(1)
|
||||
for i in range(255):
|
||||
h.fill(0)
|
||||
h.fill(0)
|
||||
h.increment(0)
|
||||
h.increment(0)
|
||||
for i in range(1000-256):
|
||||
h.fill(0)
|
||||
h.increment(0)
|
||||
self.assertEqual(h.value(-1), 0)
|
||||
self.assertEqual(h.value(0), 1)
|
||||
self.assertEqual(h.value(1), 1000)
|
||||
@ -404,17 +404,17 @@ class histogramest(unittest.TestCase):
|
||||
for uoflow in (False, True):
|
||||
h = histogram(integer_axis(-1, 1, uoflow=uoflow),
|
||||
regular_axis(4, -2, 2, uoflow=uoflow))
|
||||
h.fill(-1, -2)
|
||||
h.fill(-1, -1)
|
||||
h.fill(0, 0)
|
||||
h.fill(0, 1)
|
||||
h.fill(1, 0)
|
||||
h.fill(3, -1)
|
||||
h.fill(0, -3)
|
||||
h.increment(-1, -2)
|
||||
h.increment(-1, -1)
|
||||
h.increment(0, 0)
|
||||
h.increment(0, 1)
|
||||
h.increment(1, 0)
|
||||
h.increment(3, -1)
|
||||
h.increment(0, -3)
|
||||
with self.assertRaises(Exception):
|
||||
h.fill(1)
|
||||
h.increment(1)
|
||||
with self.assertRaises(Exception):
|
||||
h.fill(1, 2, 3)
|
||||
h.increment(1, 2, 3)
|
||||
|
||||
m = [[1, 1, 0, 0, 0, 0],
|
||||
[0, 0, 1, 1, 0, 1],
|
||||
@ -429,13 +429,13 @@ class histogramest(unittest.TestCase):
|
||||
for uoflow in (False, True):
|
||||
h = histogram(integer_axis(-1, 1, uoflow=uoflow),
|
||||
regular_axis(4, -2, 2, uoflow=uoflow))
|
||||
h.fill(-1, -2)
|
||||
h.fill(-1, -1)
|
||||
h.fill(0, 0)
|
||||
h.fill(0, 1)
|
||||
h.fill(1, 0)
|
||||
h.fill(3, -1)
|
||||
h.fill(0, -3)
|
||||
h.increment(-1, -2)
|
||||
h.increment(-1, -1)
|
||||
h.increment(0, 0)
|
||||
h.increment(0, 1)
|
||||
h.increment(1, 0)
|
||||
h.increment(3, -1)
|
||||
h.increment(0, -3)
|
||||
|
||||
m = [[1, 1, 0, 0, 0, 0],
|
||||
[0, 0, 1, 1, 0, 1],
|
||||
@ -460,13 +460,13 @@ class histogramest(unittest.TestCase):
|
||||
for uoflow in (False, True):
|
||||
h = histogram(integer_axis(-1, 1, uoflow=uoflow),
|
||||
regular_axis(4, -2, 2, uoflow=uoflow))
|
||||
h.fill(-1, -2)
|
||||
h.fill(-1, -1)
|
||||
h.fill(0, 0)
|
||||
h.fill(0, 1)
|
||||
h.fill(1, 0)
|
||||
h.fill(3, -1)
|
||||
h.fill(0, -3)
|
||||
h.increment(-1, -2)
|
||||
h.increment(-1, -1)
|
||||
h.increment(0, 0)
|
||||
h.increment(0, 1)
|
||||
h.increment(1, 0)
|
||||
h.increment(3, -1)
|
||||
h.increment(0, -3)
|
||||
|
||||
m = [[1, 1, 0, 0, 0, 0],
|
||||
[0, 0, 1, 1, 0, 1],
|
||||
@ -476,7 +476,7 @@ class histogramest(unittest.TestCase):
|
||||
|
||||
h2 = histogram(integer_axis(-1, 1, uoflow=uoflow),
|
||||
regular_axis(4, -2, 2, uoflow=uoflow))
|
||||
h2.fill(0, 0, w=0)
|
||||
h2.increment(0, 0, w=0)
|
||||
|
||||
h2 += h
|
||||
h2 += h
|
||||
@ -495,15 +495,15 @@ class histogramest(unittest.TestCase):
|
||||
variable_axis(0.0, 1.0, 2.0),
|
||||
polar_axis(4, label='pa'))
|
||||
for i in range(a.axis(0).bins):
|
||||
a.fill(i, 0, 0, 0, 0)
|
||||
a.increment(i, 0, 0, 0, 0)
|
||||
for j in range(a.axis(1).bins):
|
||||
a.fill(i, j, 0, 0, 0)
|
||||
a.increment(i, j, 0, 0, 0)
|
||||
for k in range(a.axis(2).bins):
|
||||
a.fill(i, j, k, 0, 0)
|
||||
a.increment(i, j, k, 0, 0)
|
||||
for l in range(a.axis(3).bins):
|
||||
a.fill(i, j, k, l, 0)
|
||||
a.increment(i, j, k, l, 0)
|
||||
for m in range(a.axis(4).bins):
|
||||
a.fill(i, j, k, l, m * 0.5 * pi)
|
||||
a.increment(i, j, k, l, m * 0.5 * pi)
|
||||
|
||||
io = BytesIO()
|
||||
pickle.dump(a, io)
|
||||
@ -525,13 +525,13 @@ class histogramest(unittest.TestCase):
|
||||
regular_axis(4, 0.0, 4.0, uoflow=False),
|
||||
variable_axis(0.0, 1.0, 2.0))
|
||||
for i in range(a.axis(0).bins):
|
||||
a.fill(i, 0, 0, 0, w=3)
|
||||
a.increment(i, 0, 0, 0, w=3)
|
||||
for j in range(a.axis(1).bins):
|
||||
a.fill(i, j, 0, 0, w=10)
|
||||
a.increment(i, j, 0, 0, w=10)
|
||||
for k in range(a.axis(2).bins):
|
||||
a.fill(i, j, k, 0, w=2)
|
||||
a.increment(i, j, k, 0, w=2)
|
||||
for l in range(a.axis(3).bins):
|
||||
a.fill(i, j, k, l, w=5)
|
||||
a.increment(i, j, k, l, w=5)
|
||||
|
||||
io = BytesIO()
|
||||
pickle.dump(a, io)
|
||||
@ -550,7 +550,7 @@ class histogramest(unittest.TestCase):
|
||||
def test_numpy_conversion_0(self):
|
||||
a = histogram(integer_axis(0, 2, uoflow=False))
|
||||
for i in range(100):
|
||||
a.fill(1)
|
||||
a.increment(1)
|
||||
c = numpy.array(a) # a copy
|
||||
v = numpy.asarray(a) # a view
|
||||
|
||||
@ -559,12 +559,12 @@ class histogramest(unittest.TestCase):
|
||||
self.assertTrue(numpy.all(t == numpy.array((0, 100, 0))))
|
||||
|
||||
for i in range(100):
|
||||
a.fill(1)
|
||||
a.increment(1)
|
||||
self.assertTrue(numpy.all(c == numpy.array((0, 100, 0))))
|
||||
self.assertTrue(numpy.all(v == numpy.array((0, 200, 0))))
|
||||
|
||||
for i in range(100):
|
||||
a.fill(1)
|
||||
a.increment(1)
|
||||
c = numpy.array(a)
|
||||
self.assertEqual(c.dtype, numpy.uint16)
|
||||
self.assertTrue(numpy.all(c == numpy.array((0, 300, 0))))
|
||||
@ -575,7 +575,7 @@ class histogramest(unittest.TestCase):
|
||||
def test_numpy_conversion_1(self):
|
||||
a = histogram(integer_axis(0, 2))
|
||||
for i in range(10):
|
||||
a.fill(1, w=3)
|
||||
a.increment(1, w=3)
|
||||
c = numpy.array(a) # a copy
|
||||
v = numpy.asarray(a) # a view
|
||||
self.assertEqual(c.dtype, numpy.float64)
|
||||
@ -592,7 +592,7 @@ class histogramest(unittest.TestCase):
|
||||
for j in range(a.axis(1).bins):
|
||||
for k in range(a.axis(2).bins):
|
||||
for m in range(i+j+k):
|
||||
a.fill(i, j, k)
|
||||
a.increment(i, j, k)
|
||||
r[i,j,k] = i+j+k
|
||||
c = numpy.array(a) # a copy
|
||||
v = numpy.asarray(a) # a view
|
||||
@ -616,7 +616,7 @@ class histogramest(unittest.TestCase):
|
||||
for i in range(a.axis(0).bins):
|
||||
for j in range(a.axis(1).bins):
|
||||
for k in range(a.axis(2).bins):
|
||||
a.fill(i, j, k, w=i+j+k)
|
||||
a.increment(i, j, k, w=i+j+k)
|
||||
r[0, i, j, k] = i+j+k
|
||||
r[1, i, j, k] = (i+j+k)**2
|
||||
c = numpy.array(a) # a copy
|
||||
@ -636,7 +636,7 @@ class histogramest(unittest.TestCase):
|
||||
@unittest.skipUnless(have_numpy, "requires build with numpy-support")
|
||||
def test_bad_numpy_conversion(self):
|
||||
a = histogram(integer_axis(0, 0))
|
||||
a.fill(0)
|
||||
a.increment(0)
|
||||
for i in xrange(80):
|
||||
a += a
|
||||
# a now holds a multiprecision type
|
||||
@ -646,36 +646,36 @@ class histogramest(unittest.TestCase):
|
||||
@unittest.skipUnless(have_numpy, "requires build with numpy-support")
|
||||
def test_fill_with_numpy_array_0(self):
|
||||
a = histogram(integer_axis(0, 2, uoflow=False))
|
||||
a.fill(numpy.array([-1, 0, 1, 2, 1, 4]))
|
||||
a.fill((-1, 0))
|
||||
a.fill([1, 2])
|
||||
a.increment(numpy.array([-1, 0, 1, 2, 1, 4]))
|
||||
a.increment((-1, 0))
|
||||
a.increment([1, 2])
|
||||
self.assertEqual(a.value(0), 2)
|
||||
self.assertEqual(a.value(1), 3)
|
||||
self.assertEqual(a.value(2), 2)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill(numpy.empty((2, 2)))
|
||||
a.increment(numpy.empty((2, 2)))
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill(numpy.empty((1, 2, 2)))
|
||||
a.increment(numpy.empty((1, 2, 2)))
|
||||
with self.assertRaises(RuntimeError):
|
||||
a.fill(numpy.empty((2, 1)), 1)
|
||||
a.increment(numpy.empty((2, 1)), 1)
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill("abc")
|
||||
a.increment("abc")
|
||||
|
||||
a = histogram(integer_axis(0, 1, uoflow=False),
|
||||
regular_axis(2, 0, 2, uoflow=False))
|
||||
a.fill(numpy.array([[-1., -1.], [0., 1.], [1., 0.1]]))
|
||||
a.increment(numpy.array([[-1., -1.], [0., 1.], [1., 0.1]]))
|
||||
self.assertEqual(a.value(0, 0), 0)
|
||||
self.assertEqual(a.value(0, 1), 1)
|
||||
self.assertEqual(a.value(1, 0), 1)
|
||||
self.assertEqual(a.value(1, 1), 0)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill((1, 2, 3))
|
||||
a.increment((1, 2, 3))
|
||||
|
||||
a = histogram(integer_axis(0, 2, uoflow=False))
|
||||
a.fill([0, 0, 1, 2])
|
||||
a.fill((1, 0, 2, 2))
|
||||
a.increment([0, 0, 1, 2])
|
||||
a.increment((1, 0, 2, 2))
|
||||
self.assertEqual(a.value(0), 3)
|
||||
self.assertEqual(a.value(1), 2)
|
||||
self.assertEqual(a.value(2), 3)
|
||||
@ -686,8 +686,8 @@ class histogramest(unittest.TestCase):
|
||||
a = histogram(integer_axis(0, 2, uoflow=True))
|
||||
v = numpy.array([-1, 0, 1, 2, 3, 4])
|
||||
w = numpy.array([ 2, 3, 4, 5, 6, 7])
|
||||
a.fill(v, w=w)
|
||||
a.fill([0, 1], w=[2.0, 3.0])
|
||||
a.increment(v, w=w)
|
||||
a.increment([0, 1], w=[2.0, 3.0])
|
||||
self.assertEqual(a.value(-1), 2)
|
||||
self.assertEqual(a.value(0), 5)
|
||||
self.assertEqual(a.value(1), 7)
|
||||
@ -698,28 +698,28 @@ class histogramest(unittest.TestCase):
|
||||
self.assertEqual(a.variance(2), 25)
|
||||
|
||||
with self.assertRaises(RuntimeError):
|
||||
a.fill([1, 2], foo=[1, 1])
|
||||
a.increment([1, 2], foo=[1, 1])
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill([1, 2], w=[1])
|
||||
a.increment([1, 2], w=[1])
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill([1, 2], w="ab")
|
||||
a.increment([1, 2], w="ab")
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill([1, 2], w=1)
|
||||
a.increment([1, 2], w=1)
|
||||
with self.assertRaises(RuntimeError):
|
||||
a.fill([1, 2], w=[1, 1], foo=1)
|
||||
a.increment([1, 2], w=[1, 1], foo=1)
|
||||
with self.assertRaises(ValueError):
|
||||
a.fill([1, 2], w=[[1, 1], [2, 2]])
|
||||
a.increment([1, 2], w=[[1, 1], [2, 2]])
|
||||
|
||||
a = histogram(integer_axis(0, 1, uoflow=False),
|
||||
regular_axis(2, 0, 2, uoflow=False))
|
||||
a.fill(numpy.array([[-1., -1.], [0., 1.], [1., 0.1]]))
|
||||
a.increment(numpy.array([[-1., -1.], [0., 1.], [1., 0.1]]))
|
||||
self.assertEqual(a.value(0, 0), 0)
|
||||
self.assertEqual(a.value(0, 1), 1)
|
||||
self.assertEqual(a.value(1, 0), 1)
|
||||
self.assertEqual(a.value(1, 1), 0)
|
||||
a = histogram(integer_axis(0, 2, uoflow=False))
|
||||
a.fill([0, 0, 1, 2])
|
||||
a.fill((1, 0, 2, 2))
|
||||
a.increment([0, 0, 1, 2])
|
||||
a.increment((1, 0, 2, 2))
|
||||
self.assertEqual(a.value(0), 3)
|
||||
self.assertEqual(a.value(1), 2)
|
||||
self.assertEqual(a.value(2), 3)
|
||||
|
@ -46,7 +46,7 @@ double compare_1d(unsigned n, int distrib)
|
||||
auto h = Histogram(regular_axis(100, 0, 1));
|
||||
auto t = clock();
|
||||
for (unsigned i = 0; i < n; ++i)
|
||||
h.fill(r[i]);
|
||||
h.increment(r[i]);
|
||||
t = clock() - t;
|
||||
best = std::min(best, double(t) / CLOCKS_PER_SEC);
|
||||
}
|
||||
@ -66,7 +66,7 @@ double compare_3d(unsigned n, int distrib)
|
||||
regular_axis(100, 0, 1));
|
||||
auto t = clock();
|
||||
for (unsigned i = 0; i < n; ++i)
|
||||
h.fill(r[3 * i], r[3 * i + 1], r[3 * i + 2]);
|
||||
h.increment(r[3 * i], r[3 * i + 1], r[3 * i + 2]);
|
||||
t = clock() - t;
|
||||
best = std::min(best, double(t) / CLOCKS_PER_SEC);
|
||||
}
|
||||
@ -94,7 +94,7 @@ double compare_6d(unsigned n, int distrib)
|
||||
for (unsigned i = 0; i < n; ++i) {
|
||||
for (unsigned k = 0; k < 6; ++k)
|
||||
x[k] = r[6 * i + k];
|
||||
h.fill(x[0], x[1], x[2], x[3], x[4], x[5]);
|
||||
h.increment(x[0], x[1], x[2], x[3], x[4], x[5]);
|
||||
}
|
||||
t = clock() - t;
|
||||
best = std::min(best, double(t) / CLOCKS_PER_SEC);
|
||||
|
@ -26,7 +26,7 @@ def compare_1d(n, distrib):
|
||||
|
||||
h = histogram(regular_axis(100, 0, 1))
|
||||
t = timer()
|
||||
h.fill(r)
|
||||
h.increment(r)
|
||||
t = timer() - t
|
||||
best_boost = min(t, best_boost)
|
||||
assert(np.all(w == np.array(h)[:-2]))
|
||||
@ -57,7 +57,7 @@ def compare_3d(n, distrib):
|
||||
regular_axis(100, 0, 1),
|
||||
regular_axis(100, 0, 1))
|
||||
t = timer()
|
||||
h.fill(r)
|
||||
h.increment(r)
|
||||
t = timer() - t
|
||||
best_boost = min(t, best_boost)
|
||||
assert(np.all(w == np.array(h)[:-2,:-2,:-2]))
|
||||
@ -95,7 +95,7 @@ def compare_6d(n, distrib):
|
||||
regular_axis(10, 0, 1),
|
||||
regular_axis(10, 0, 1))
|
||||
t = timer()
|
||||
h.fill(r)
|
||||
h.increment(r)
|
||||
t = timer() - t
|
||||
best_boost = min(t, best_boost)
|
||||
assert(np.all(w == np.array(h)[:-2,:-2,:-2,:-2,:-2,:-2]))
|
||||
|
@ -113,7 +113,7 @@ int main() {
|
||||
{
|
||||
auto h = make_static_histogram(integer_axis(0, 1),
|
||||
integer_axis(0, 2));
|
||||
h.fill(0, 0);
|
||||
h.increment(0, 0);
|
||||
auto h2 = decltype(h)(h);
|
||||
BOOST_TEST(h2 == h);
|
||||
auto h3 = static_histogram<
|
||||
@ -127,7 +127,7 @@ int main() {
|
||||
{
|
||||
auto h = make_static_histogram(integer_axis(0, 1),
|
||||
integer_axis(0, 2));
|
||||
h.fill(0, 0);
|
||||
h.increment(0, 0);
|
||||
auto h2 = decltype(h)();
|
||||
BOOST_TEST(!(h == h2));
|
||||
h2 = h;
|
||||
@ -147,7 +147,7 @@ int main() {
|
||||
{
|
||||
auto h = make_static_histogram(integer_axis(0, 1),
|
||||
integer_axis(0, 2));
|
||||
h.fill(0, 0);
|
||||
h.increment(0, 0);
|
||||
const auto href = h;
|
||||
decltype(h) h2(std::move(h));
|
||||
BOOST_TEST_EQ(h.dim(), 2);
|
||||
@ -176,13 +176,13 @@ int main() {
|
||||
auto d = make_static_histogram(regular_axis(2, 0, 1));
|
||||
BOOST_TEST(!(c == d));
|
||||
BOOST_TEST(!(d == c));
|
||||
c.fill(0);
|
||||
c.increment(0);
|
||||
BOOST_TEST(!(a == c));
|
||||
BOOST_TEST(!(c == a));
|
||||
a.fill(0);
|
||||
a.increment(0);
|
||||
BOOST_TEST(a == c);
|
||||
BOOST_TEST(c == a);
|
||||
a.fill(0);
|
||||
a.increment(0);
|
||||
BOOST_TEST(!(a == c));
|
||||
BOOST_TEST(!(c == a));
|
||||
}
|
||||
@ -190,10 +190,10 @@ int main() {
|
||||
// d1
|
||||
{
|
||||
auto h = make_static_histogram(integer_axis(0, 1));
|
||||
h.fill(0);
|
||||
h.fill(0);
|
||||
h.fill(-1);
|
||||
h.fill(10);
|
||||
h.increment(0);
|
||||
h.increment(0);
|
||||
h.increment(-1);
|
||||
h.increment(10);
|
||||
|
||||
BOOST_TEST_EQ(h.dim(), 1);
|
||||
BOOST_TEST_EQ(bins(h.axis<0>()), 2);
|
||||
@ -218,10 +218,10 @@ int main() {
|
||||
// d1_2
|
||||
{
|
||||
auto h = make_static_histogram(integer_axis(0, 1, "", false));
|
||||
h.fill(0);
|
||||
h.fill(-0);
|
||||
h.fill(-1);
|
||||
h.fill(10);
|
||||
h.increment(0);
|
||||
h.increment(-0);
|
||||
h.increment(-1);
|
||||
h.increment(10);
|
||||
|
||||
BOOST_TEST_EQ(h.dim(), 1);
|
||||
BOOST_TEST_EQ(bins(h.axis<0>()), 2);
|
||||
@ -242,11 +242,11 @@ int main() {
|
||||
// d1w
|
||||
{
|
||||
auto h = make_static_histogram(regular_axis(2, -1, 1));
|
||||
h.fill(0);
|
||||
h.wfill(2.0, -1.0);
|
||||
h.fill(-1.0);
|
||||
h.fill(-2.0);
|
||||
h.wfill(5.0, 10.0);
|
||||
h.increment(0);
|
||||
h.wincrement(2.0, -1.0);
|
||||
h.increment(-1.0);
|
||||
h.increment(-2.0);
|
||||
h.wincrement(5.0, 10.0);
|
||||
|
||||
BOOST_TEST_EQ(h.sum(), 10);
|
||||
|
||||
@ -265,12 +265,12 @@ int main() {
|
||||
{
|
||||
auto h = make_static_histogram(regular_axis(2, -1, 1),
|
||||
integer_axis(-1, 1, "", false));
|
||||
h.fill(-1, -1);
|
||||
h.fill(-1, 0);
|
||||
h.increment(-1, -1);
|
||||
h.increment(-1, 0);
|
||||
std::array<double, 2> ai = {{-1., -10.}};
|
||||
h.fill(ai);
|
||||
h.increment(ai);
|
||||
double in[2] = {-10., 0.};
|
||||
h.fill(in, in+2);
|
||||
h.increment(in, in+2);
|
||||
|
||||
BOOST_TEST_EQ(h.dim(), 2);
|
||||
BOOST_TEST_EQ(bins(h.axis<0>()), 2);
|
||||
@ -316,10 +316,10 @@ int main() {
|
||||
{
|
||||
auto h = make_static_histogram(regular_axis(2, -1, 1),
|
||||
integer_axis(-1, 1, "", false));
|
||||
h.fill(-1, 0); // -> 0, 1
|
||||
h.wfill(10, -1, -1); // -> 0, 0
|
||||
h.wfill(5, -1, -10); // is ignored
|
||||
h.wfill(7, -10, 0); // -> -1, 1
|
||||
h.increment(-1, 0); // -> 0, 1
|
||||
h.wincrement(10, -1, -1); // -> 0, 0
|
||||
h.wincrement(5, -1, -10); // is ignored
|
||||
h.wincrement(7, -10, 0); // -> -1, 1
|
||||
|
||||
BOOST_TEST_EQ(h.sum(), 18);
|
||||
|
||||
@ -365,7 +365,7 @@ int main() {
|
||||
for (auto j = 0; j < bins(h.axis<1>()); ++j)
|
||||
for (auto k = 0; k < bins(h.axis<2>()); ++k)
|
||||
{
|
||||
h.wfill(i+j+k, i, j, k);
|
||||
h.wincrement(i+j+k, i, j, k);
|
||||
}
|
||||
|
||||
for (auto i = 0; i < bins(h.axis<0>()); ++i)
|
||||
@ -382,8 +382,8 @@ int main() {
|
||||
auto b = make_static_histogram_with<
|
||||
container_storage<std::vector<unsigned>>
|
||||
>(integer_axis(-1, 1));
|
||||
a.fill(-1);
|
||||
b.fill(1);
|
||||
a.increment(-1);
|
||||
b.increment(1);
|
||||
auto c = a;
|
||||
c += b;
|
||||
BOOST_TEST_EQ(c.value(-1), 0);
|
||||
@ -409,8 +409,8 @@ int main() {
|
||||
adaptive_storage<>
|
||||
>(integer_axis(-1, 1));
|
||||
|
||||
a.fill(0);
|
||||
b.wfill(3, -1);
|
||||
a.increment(0);
|
||||
b.wincrement(3, -1);
|
||||
auto c = a;
|
||||
c += b;
|
||||
BOOST_TEST_EQ(c.value(-1), 0);
|
||||
@ -435,8 +435,8 @@ int main() {
|
||||
auto b = make_static_histogram_with<
|
||||
container_storage<std::vector<unsigned>>
|
||||
>(integer_axis(-1, 1));
|
||||
a.fill(-1);
|
||||
b.fill(1);
|
||||
a.increment(-1);
|
||||
b.increment(1);
|
||||
auto c = a;
|
||||
c += b;
|
||||
BOOST_TEST_EQ(c.value(-1), 0);
|
||||
@ -478,15 +478,15 @@ int main() {
|
||||
auto h = bh::make_static_histogram(bh::regular_axis(10, -1.0, 2.0, "x"));
|
||||
|
||||
// fill histogram with data
|
||||
h.fill(-1.5); // put in underflow bin
|
||||
h.fill(-1.0); // included in first bin, bin interval is semi-open
|
||||
h.fill(-0.5);
|
||||
h.fill(1.1);
|
||||
h.fill(0.3);
|
||||
h.fill(1.7);
|
||||
h.fill(2.0); // put in overflow bin, bin interval is semi-open
|
||||
h.fill(20.0); // put in overflow bin
|
||||
h.wfill(5.0, 0.1); // fill with a weighted entry, weight is 5.0
|
||||
h.increment(-1.5); // put in underflow bin
|
||||
h.increment(-1.0); // included in first bin, bin interval is semi-open
|
||||
h.increment(-0.5);
|
||||
h.increment(1.1);
|
||||
h.increment(0.3);
|
||||
h.increment(1.7);
|
||||
h.increment(2.0); // put in overflow bin, bin interval is semi-open
|
||||
h.increment(20.0); // put in overflow bin
|
||||
h.wincrement(5.0, 0.1); // fill with a weighted entry, weight is 5.0
|
||||
|
||||
std::ostringstream os1;
|
||||
// access histogram counts
|
||||
@ -522,7 +522,7 @@ int main() {
|
||||
variable_axis({0.1, 0.2, 0.3, 0.4, 0.5}, "v"),
|
||||
category_axis{"A", "B", "C"},
|
||||
integer_axis(0, 1, "i"));
|
||||
a.fill(0.5, 0.1, 0.25, 1, 0);
|
||||
a.increment(0.5, 0.1, 0.25, 1, 0);
|
||||
std::string buf;
|
||||
{
|
||||
std::ostringstream os;
|
||||
|
Loading…
x
Reference in New Issue
Block a user