iris-hep / awesome-hep

A curated list of awesome high energy and particle physics software.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

awesome-hep

A curated list of awesome high energy and particle physics software.

Awesome

The focus of this page is on:

  • Software for doing high energy/particle physics analysis, since this is the area most in need of the discoverability that an awesome list provides.
  • Software that can be used right now, not development projects or unmaintained projects.
  • Software that can be used independently of any collaboration framework (except for the collaboration-specific sections at the end).

See the curated list of awesome lists for an idea of what an awesome list is all about: lists of links to projects, arranged by topic, so that users can find what they need. If you want to add anything to this list (or remove something that doesn't satisfy the criteria above), submit a pull request.

Links to other lists of packages are in bold.

C++

  • ROOT: If you're working in particle physics and you don't know about ROOT— you need to know about ROOT. It would fit into every category below.

Distributed processing

Aggregation/histogram filling

Fitting

  • RooFit: The classic, powerful statistical modelling language and fitting library built into ROOT (and therefore PyROOT). Provides the workspace to serialize models, which is widely used in combinations. RooFit Tutorials Quick Start Manual
  • RooStats RooStats tutorials Statistical tools built on top of RooFit's statistical modelling language. Provides statistical procedures used for Higgs discovery. Ships with ROOT.
  • HistFactory: A C++ implementation (built on top of RooFit) of the statistical models for binned distributions based on template histograms described in CERN-OPEN-2012-016. Also ships with ROOT.
  • HistFitter a tool that integrates HistFactory, RooStats, and RooFit for common analysis use cases.
  • Combine: Combine provides a command line interface to many different statistical techniques available inside RooFit/RooStats used widely inside CMS. Tutorial
  • GooFit: A OpenMP/CUDA binned and unbinned fitting package for C++ and Python, similar to RooFit, more limited but up to 1000x faster.

Reproducibility, reinterpretation

C++/Python interoperability

  • pybind11: Header-only, pure C++ bindings for CPython and PyPy.

Python

  • PyHEP-resources: detailed list of Python tutorials and useful libraries in Python.
  • PyROOT: Built into ROOT; access to 100% of ROOT functions in Python. Newer versions are becoming more Pythonic.
  • rootpy: Pythonic interface to PyROOT, deprecated.

Pure physics

  • particle: Easy access to particle data, such as masses and PDG properties.
  • decaylanguage: Read and process or check .dec files and also convert AmpGen syntax to GooFit (extendable).
  • MadMiner: Likelihood fits to high-dimensional observables (multi-differential distributions) using Machine-learning techniques.
  • Vector: 2D vector, 3D vector, and LorentzVectors, supporting multiple backends, including NumPy, Numba, Awkward, and Numba + Awkward.

Data access

  • uproot: Read ROOT files in Pure Python
  • pyhepmc
  • pylhe
  • PySLHA: Read, write, and plot SUSY Les Houches Accord (SLHA) supersymmetric spectrum/decay files.

Distributed processing

Aggregation/histogram filling

  • Hist: Powerful histogramming package, extends boost-histogram with analysis shortcuts and plotting.
  • boost-histogram: Pybind11 powered interface to Boost.Histogram, intended as a basis for other tools.

Event generation

Data processing

  • Awkward Array: Manipulate JSON-like data with NumPy-like idioms.
  • formulate: translate TTree::Draw syntax to NumExpr
  • numba: Convert pure Python functions to LLVM bytecode, for speed and easy loop acceleration. Supported by many Scikit-HEP projects, like Awkward and Vector.

Data bookkeeping

  • Pandas: General purpose tabular (1D and 2D labeled mostly) data.
  • xarray: General purpose ND labeled rectangular data.

Plotting (exploratory and publication)

  • Matplotlib (MPL): General purpose plotting library for Python.
  • seaborn: General purpose statistics plotting adaptor for MPL.
  • mplhep: Adaptor for common HEP needs and experiment styles for MPL.

Other visualization

Minimization

  • scipy.optimize: General purpose optimization.
  • iminuit: A pybind11 powered wrapper around Minuit2 extracted from ROOT.

Statistics and Fitting

  • pyhf: implements HistFactory schema supports numpy, TensorFlow, pytorch, MXNet backends
  • probfit: A fitting tool for Python built on top of iMinuit, can be slow but supports unbinned fits.
  • zfit: A new TensorFlow fitting package under development.
  • TensorFlow Probability

Machine learning

Gaussian Processes

Blackbox Optimization / Bayesian Optimization / Hyperparameter Optimization

Error propagation

Go

Data access

Event generation

  • Go-HEP/fads: fads exposes building blocks for a fast simulation of a HEP detector.

Data processing

  • Go-HEP/fwk: fwk provides a set of tools to process High Energy Physics events data, in a multithread-friendly fashion

Aggregation/histogram filling

  • Go-HEP/hbook: hbook is a set of data analysis tools for HEP (histograms (1D, 2D, 3D), profiles and ntuples), with interoperability with ROOT (read/write) TH{1,2}x.

Plotting (exploratory and publication)

  • Go-HEP/hplot: a plotting package built on top of Gonum/plot to provide HEP-oriented primitives
  • Go-HEP/pawgo: a simple interactive shell to quickly plot hbook histograms from Go
  • Go-HEP/groot/root-srv: a (local) web server able to plot TH{1,2}x, TGraphs and TTrees from a ROOT file
  • Gophernotes: a Go kernel for the Jupyter notebooks and nteract

Fitting

  • Gonum/optimize: implements algorithms for finding the optimum value of functions
  • Go-HEP/fit: fit provides functions to fit data (histograms, data set), using gonum/optimize.

Statistics

Publishing

  • Overleaf: write collaboratively on your web browser with a built-in LaTeX editor; many templates are available for beginners

Reproducibility, reinterpretation

Data preservation

Collaboration-framework specific

???

About

A curated list of awesome high energy and particle physics software.

License:BSD 3-Clause "New" or "Revised" License