Skip to main content

Hist classes and utilities

Project description

histogram

Hist

Actions Status Documentation Status pre-commit.ci status Code style: black

PyPI version Conda-Forge PyPI platforms DOI

GitHub Discussion Gitter Scikit-HEP

Hist is an analyst-friendly front-end for boost-histogram, designed for Python 3.7+ (3.6 users get version 2.4). See what's new.

Installation

You can install this library from PyPI with pip:

python3 -m pip install "hist[plot]"

If you do not need the plotting features, you can skip the [plot] extra.

Features

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)
    • Indexing, projection, and more support named axes
    • Experimental NamedHist is a Hist that disables most forms of positional access
  • The Hist class augments bh.Histogram with reduced typing construction:

    • Optional import-free construction system
    • flow=False is a fast way to turn off flow for the axes on construction
    • Storages can be given by string
    • storage= can be omitted
    • data= can initialize a histogram with existing data
    • Hist.from_columns can be used to initialize with a DataFrame or dict
  • Hist implements UHI+; an extension to the UHI (Unified Histogram Indexing) system designed for import-free interactivity:

    • Uses j suffix to switch to data coordinates in access or slices
    • Uses j suffix on slices to rebin
    • Strings can be used directly to index into string category axes
  • 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
  • Extended Histogram features:

    • .density() computes the density as an array
    • .profile(remove_ax) can convert a ND COUNT histogram into a (N-1)D MEAN histogram
  • New modules

    • intervals supports frequentist coverage intervals
  • Notebook ready: Hist has gorgeous in-notebook representation.

    • No dependencies required

Usage

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[.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)

Development

From a git checkout, run:

python -m pip install -e .[dev]

See Contributing guidelines for information on setting up a development environment.

Contributors

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

💻

This project follows the all-contributors specification.

Talks


Acknowledgements

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hist-2.5.0.tar.gz (265.3 kB view details)

Uploaded Source

Built Distribution

hist-2.5.0-py3-none-any.whl (33.8 kB view details)

Uploaded Python 3

File details

Details for the file hist-2.5.0.tar.gz.

File metadata

  • Download URL: hist-2.5.0.tar.gz
  • Upload date:
  • Size: 265.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for hist-2.5.0.tar.gz
Algorithm Hash digest
SHA256 c1495258db61a9afb5ae38c389fb0a0e65d50d269a20aee01cd05df306a85df4
MD5 04ee19449b806be3b42133beb769ad34
BLAKE2b-256 402ad1d7f7fc3cf03a47b1f9723629c3dc6bfa068aa38e640a24e405cee46c55

See more details on using hashes here.

File details

Details for the file hist-2.5.0-py3-none-any.whl.

File metadata

  • Download URL: hist-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 33.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for hist-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f5b13473c93861b61b762683748a677242006500d3e37bac878d8c74dad4aed9
MD5 a50d009cbcad8547cee9f68d5026da27
BLAKE2b-256 a63ae25e842513d6401f7552852580102a04448a5a57010390837b79c3006aa7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page