scikit-hep / hist

Histogramming for analysis powered by boost-histogram

Home Page:https://hist.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[FEATURE] Hist from Stack

nsmith- opened this issue · comments

Describe the problem, if any, that your feature request is related to

Just as one can construct a Stack from several Hist objects, it may be useful to create a Hist from a Stack by promoting the stack labels to a new StrCategory axis in the histogram.

Describe the feature you'd like

import hist

a = hist.Hist.new.Reg(10, 0, 10, name="blah").Double().fill(3.0)
b = hist.Hist.new.Reg(10, 0, 10, name="blah").Double().fill(5.0)
stack = hist.Stack.from_dict({"a": a, "b": b})

out = hist.Hist(
    hist.axis.StrCategory([s.name for s in stack]),
    *stack.axes,
    storage=stack[0].storage_type()
)
for i, h in enumerate(stack):
    out.view(flow=True)[i, ...] = h.view(flow=True)

Perhaps this is sufficient for an implementation?

Describe alternatives, if any, you've considered

My main motivation here is to be able to use slicing syntax on the stack. If full UHI slicing support were available, with the stack axis treated as a StrCategory, then I would probably not need this feature.