Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Hist is an analyst-friendly front-end for boost-histogram, designed for Python 3.8+ (3.6-3.7 users get older versions). See what's new.
You can install this library from PyPI with pip:
python3 -m pip install "hist[plot,fit]"
If you do not need the plotting features, you can skip the [plot]
and/or
[fit]
extras. [fit]
is not currently supported in WebAssembly.
Hist currently provides everything boost-histogram provides, and the following enhancements:
Hist augments axes with names:
name=
is a unique label describing each axis.label=
is an optional string that is used in plotting (defaults to name
if not provided).NamedHist
is a Hist
that disables most forms of positional access, forcing users to use only names.The Hist
class augments bh.Histogram
with simpler construction:
flow=False
is a fast way to turn off flow for the axes on construction.storage=
can be omitted, strings and storages can be positional.data=
can initialize a histogram with existing data.Hist.from_columns
can be used to initialize with a DataFrame or dict.Hist support QuickConstruct, an import-free construction system that does not require extra imports:
Hist.new.<axis>().<axis>().<storage>()
.Regular
) or short (Reg
).data=
) can go in the storage.Extended Histogram features:
.name
and .label
, like axes..density()
computes the density as an array..profile(remove_ax)
can convert a ND COUNT histogram into a (N-1)D MEAN histogram..sort(axis)
supports sorting a histogram by a categorical axis. Optionally takes a function to sort by..fill_flattened(...)
will flatten and fill, including support for AwkwardArray..integrate(...)
, which takes the opposite arguments as .project
.Hist implements UHI+; an extension to the UHI (Unified Histogram Indexing) system designed for import-free interactivity:
j
suffix to switch to data coordinates in access or slices.j
suffix on slices to rebin.Quick plotting routines encourage exploration:
.plot()
provides 1D and 2D plots (or use plot1d()
, plot2d()
).plot2d_full()
shows 1D projects around a 2D plot..plot_ratio(...)
make a ratio plot between the histogram and another histogram or callable..plot_pull(...)
performs a pull plot..plot_pie()
makes a pie plot..show()
provides a nice str printout using Histoprint.Stacks: work with groups of histograms with identical axes
h.stack(axis)
, using index or name of an axis (StrCategory
axes ideal).hist.stacks.Stack(h1, h2, ...)
, or use from_iter
or from_dict
..plot()
and .show()
, with names (plot labels default to original axes info)..project
, *
, +
, and -
.New modules
intervals
supports frequentist coverage intervals.Notebook ready: Hist has gorgeous in-notebook representation.
from hist import Hist
# Quick construction, no other imports needed:
h = (
Hist.new.Reg(10, 0, 1, name="x", label="x-axis")
.Var(range(10), name="y", label="y-axis")
.Int64()
)
# Filling by names is allowed:
h.fill(y=[1, 4, 6], x=[3, 5, 2])
# Names can be used to manipulate the histogram:
h.project("x")
h[{"y": 0.5j + 3, "x": 5j}]
# You can access data coordinates or rebin with a `j` suffix:
h[0.3j:, ::2j] # x from .3 to the end, y is rebinned by 2
# Elegant plotting functions:
h.plot()
h.plot2d_full()
h.plot_pull(Callable)
From a git checkout, either use nox, or run:
python -m pip install -e .[dev]
See Contributing guidelines for information on setting up a development environment.
We would like to acknowledge the contributors that made this project possible (emoji key):
Henry Schreiner 🚧 💻 📖 | Nino Lau 🚧 💻 📖 | Chris Burr 💻 | Nick Amin 💻 | Eduardo Rodrigues 💻 | Andrzej Novak 💻 | Matthew Feickert 💻 |
Kyle Cranmer 📖 | Daniel Antrim 💻 | Nicholas Smith 💻 | Michael Eliachevitch 💻 | Jonas Eschle 📖 |
This project follows the all-contributors specification.
This library was primarily developed by Henry Schreiner and Nino Lau.
Support for this work was provided by the National Science Foundation cooperative agreement OAC-1836650 (IRIS-HEP) and OAC-1450377 (DIANA/HEP). Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.
FAQs
Hist classes and utilities
We found that hist demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.