Skip to content

Commit b6d5f55

Browse files
committed
fix: logging and correction for internal repr (#559)
1 parent 1d7febe commit b6d5f55

File tree

5 files changed

+31
-15
lines changed

5 files changed

+31
-15
lines changed

docs/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# What's new in boost-histogram
22

3+
## UPCOMING
4+
5+
* Fix scaling a weighted storage [#559][]
6+
* Support running type checking from Python < 3.8 [#542][]
7+
8+
[#542]: https://github.com/scikit-hep/boost-histogram/pull/542
9+
[#559]: https://github.com/scikit-hep/boost-histogram/pull/559
10+
11+
312
## Version 0.13
413

514
## Version 0.13.1

src/boost_histogram/_internal/hist.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from __future__ import absolute_import, division, print_function
33

44
import copy
5+
import logging
56
import sys
67
import threading
78
import warnings
@@ -40,6 +41,8 @@
4041
_core.hist.any_weighted_mean,
4142
)
4243

44+
logger = logging.getLogger(__name__)
45+
4346

4447
def _fill_cast(value, inner=False):
4548
"""
@@ -726,6 +729,7 @@ def __getitem__(self, index): # noqa: C901
726729

727730
slices.append(_core.algorithm.slice_and_rebin(i, start, stop, merge))
728731

732+
logger.debug("Reduce with %s", slices)
729733
reduced = self._hist.reduce(*slices)
730734

731735
if not integrations:

src/boost_histogram/_internal/view.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,14 @@ def __array_ufunc__(self, ufunc, method, *inputs, **kwargs):
165165
ufunc(input_0["value"], input_1, out=result["value"], **kwargs)
166166
ufunc(
167167
input_0["variance"],
168-
np.abs(input_1),
168+
input_1 ** 2,
169169
out=result["variance"],
170170
**kwargs
171171
)
172172
else:
173173
ufunc(input_0, input_1["value"], out=result["value"], **kwargs)
174174
ufunc(
175-
np.abs(input_0),
175+
input_0 ** 2,
176176
input_1["variance"],
177177
out=result["variance"],
178178
**kwargs

src/register_algorithm.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,17 @@ void register_algorithms(py::module& algorithm) {
1414
using range_t = bh::algorithm::reduce_command::range_t;
1515

1616
if(self.range != range_t::none) {
17-
const char* suffix = self.merge > 0 ? "_and_rebin" : "";
18-
const char* start = self.iaxis == bh::algorithm::reduce_command::unset
19-
? ""
20-
: "iaxis={0}, ";
21-
const char* merge = self.merge > 0 ? ", merge={3}" : "";
17+
const char* suffix = self.merge > 0 ? "_and_rebin" : "";
18+
const char* c_start = self.iaxis == bh::algorithm::reduce_command::unset
19+
? ""
20+
: "iaxis={0}, ";
21+
const char* c_merge = self.merge > 0 ? ", merge={0}" : "";
22+
23+
py::str start = py::str(c_start).format(self.iaxis);
24+
py::str merge = py::str(c_merge).format(self.merge);
2225

2326
if(self.range == range_t::indices) {
24-
return py::str("reduce_command(slice{0}({1}, begin={2}, "
27+
return py::str("reduce_command(slice{0}({1}begin={2}, "
2528
"end={3}{4}, mode={5}))")
2629
.format(suffix,
2730
start,

tests/test_views.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,37 @@ def test_basic_view(v):
2222
def test_view_mul(v):
2323
v2 = v * 2
2424
assert_allclose(v2.value, [0, 6, 4, 2])
25-
assert_allclose(v2.variance, [0, 6, 4, 2])
25+
assert_allclose(v2.variance, [0, 12, 8, 4])
2626

2727
v2 = 2 * v
2828
assert_allclose(v2.value, [0, 6, 4, 2])
29-
assert_allclose(v2.variance, [0, 6, 4, 2])
29+
assert_allclose(v2.variance, [0, 12, 8, 4])
3030

3131
v2 = v * (-2)
3232
assert_allclose(v2.value, [0, -6, -4, -2])
33-
assert_allclose(v2.variance, [0, 6, 4, 2])
33+
assert_allclose(v2.variance, [0, 12, 8, 4])
3434

3535
v *= 2
3636
assert_allclose(v.value, [0, 6, 4, 2])
37-
assert_allclose(v.variance, [0, 6, 4, 2])
37+
assert_allclose(v.variance, [0, 12, 8, 4])
3838

3939

4040
def test_view_div(v):
4141
v2 = v / 2
4242
assert_allclose(v2.value, [0, 1.5, 1, 0.5])
43-
assert_allclose(v2.variance, [0, 1.5, 1, 0.5])
43+
assert_allclose(v2.variance, [0, 0.75, 0.5, 0.25])
4444

4545
v2 = v / (-0.5)
4646
assert_allclose(v2.value, [0, -6, -4, -2])
47-
assert_allclose(v2.variance, [0, 6, 4, 2])
47+
assert_allclose(v2.variance, [0, 12, 8, 4])
4848

4949
v2 = 1 / v[1:]
5050
assert_allclose(v2.value, [1 / 3, 1 / 2, 1])
5151
assert_allclose(v2.variance, [1 / 3, 1 / 2, 1])
5252

5353
v /= 0.5
5454
assert_allclose(v.value, [0, 6, 4, 2])
55-
assert_allclose(v.variance, [0, 6, 4, 2])
55+
assert_allclose(v.variance, [0, 12, 8, 4])
5656

5757

5858
def test_view_add(v):

0 commit comments

Comments
 (0)