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 a Python package containing core and common tools. The project started in Autumn 2016 and is under active development.

For what concerns the project grand structure, it should be seen as a toolset rather than a toolkit. It is not just about providing common tools for the community. It is also about improving on discoverability of utility packages and projects.

Scikit-HEP should be seen as a toolset of Python packages. 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:

Interoperability and data manipulation:

  • awkward-array: manipulate arrays of complex data structures as easily as Numpy.
  • uproot: minimalist ROOT I/O in pure Python and Numpy.
  • uproot-methods: Pythonic behaviours for non-I/O related ROOT classes.
  • root_numpy: interface between ROOT and NumPy.
  • root_pandas: module for conveniently loading/saving ROOT files as pandas DataFrames.

Particles and decays:

  • Particle: PDG particle data and identification codes.
  • DecayLanguage: describe and convert particle decays between digital representations.


  • boost-histogram: Python bindings for the C++14 Boost::Histogram library.
  • histbook: versatile, high-performance histogram toolkit for Numpy.


  • iminuit: MINUIT from Python - Fitting like a boss.
  • probfit: Cost function builder. For fitting distributions.


  • pyhepmc: next generation Python bindings for HepMC3.

Machine Learning:

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


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


  • formulate: easy conversions between different styles of expressions.
  • hepunits: units and constants in the HEP system of units.
  • numpythia: interface between Pythia and NumPy.
  • pyjet: interface between FastJet and NumPy.
  • scikit-hep: toolset of interfaces and tools for Particle Physics.
  • scikit-hep-testdata: common package to provide example files (e.g., ROOT) for testing and developing packages against.

In some cases, the packages have to do with bridging between different technologies and/or popular packages from the Python scientific software stack.