Link

Scikit-HEP project - welcome!

The Scikit-HEP project is a community-driven and community-oriented project with the aim of providing Particle Physics at large with an ecosystem for data analysis in Python. The project started in Autumn 2016 and is in full swing.

It is not just about providing core and common tools for the community. It is also about improving the interoperability between HEP tools and the scientific ecosystem in Python, and about improving on discoverability of utility packages and projects.

For what concerns the project grand structure, it should be seen as a toolset rather than a toolkit. The project defines a set of five pillars, which are seen to embrace all major topics involved in a physicist's work. These are:

  • Datasets: data in various sources, such as ROOT, Numpy/Pandas, databases, wrapped in a common interface.
  • Aggregations: e.g. histograms that summarize or project a dataset.
  • Modeling: data models and fitting utilities.
  • Simulation: wrappers for Monte Carlo engines and other generators of simulated data.
  • Visualization: interface to graphics engines, from ROOT and Matplotlib to even beyond.

Toolset packages

To get started, have a look at our GitHub repository. The list of presently available packages follows, together with a very short description of their goals:

Basics:


awkward-array : Manipulate arrays of complex data structures as easily as Numpy.
PyPI PyPI

hepunits : Units and constants in the HEP system of units.
PyPI


Data manipulation and interoperability:

formulate : Easy conversions between different styles of expressions.
PyPI

root_numpy : Interface between ROOT and NumPy.
PyPI PyPI

root_pandas : Module for conveniently loading/saving ROOT files as pandas DataFrames.
PyPI PyPI


uproot : Minimalist ROOT I/O in pure Python and Numpy.
PyPI PyPI

uproot-methods : Pythonic behaviours for non-I/O related ROOT classes.
PyPI PyPI


Histogramming:


aghast : Convert between histogram representations
PyPI PyPI


boost-histogram : Python bindings for the C++14 Boost::Histogram library.
PyPI PyPI


histbook : Versatile, high-performance histogram toolkit for Numpy. (Archived)
PyPI


Particles and decays:


DecayLanguage : Describe and convert particle decays between digital representations.
PyPI


Particle : PDG particle data and identification codes.
PyPI


Fitting:


GooFit : GPU/OpenMP fitting in Python and C++.
PyPI PyPI 🤝 Affiliated package

iminuit : MINUIT from Python - Fitting like a boss.
PyPI PyPI

probfit : Cost function builder. For fitting distributions.
PyPI


zfit : Scalable Pythonic fitting
PyPI PyPI 🤝 Affiliated package


Statistics:

hepstats : Statistics tools and utilities.
PyPI


pyhf : pure-Python implementation of HistFactory models.
PyPI


Interface to HEP libraries:

numpythia : Interface between Pythia and NumPy.
PyPI

pyhepmc : Next generation Python bindings for HepMC3.
PyPI

pyjet : Interface between FastJet and NumPy.
PyPI


Machine Learning:

NNDrone : Collection of tools and algorithms to enable conversion of HEP ML to mass usage model.


Visualization:


mplhep : Plotting and styling helpers for matplotlib.
PyPI

vegascope : View Vega/Vega-Lite plots in your web browser from local or remote Python processes.
PyPI


Miscellaneous:

azure-wheel-helpers : A collection of helpers for building binary Python wheels on Azure.

conda-forge ROOT : CERN’s ROOT on Conda-Forge.
PyPI 🤝 Affiliated package

scikit-hep : Toolset of interfaces and tools for Particle Physics. To become a metapackage.
PyPI

scikit-hep-testdata : Common package to provide example files (e.g., ROOT) for testing and developing packages against.
PyPI PyPI


In some cases, the packages provide a bridge between different technologies and/or popular packages from the Python scientific software stack.