Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


NameInstitutionMail AddressSocial Contacts
Luca AnzaloneUniversity of Bologna, INFN Sezione di Bolognaluca.anzalone2@unibo.itN/A 
Tommaso DiotaleviUniversity of Bologna, INFN Sezione di Bolognatommaso.diotalevi@unibo.itN/A

How to Obtain Support

General Information

ML/DL TechnologiespNN classifier
Science FieldsHigh Energy Physics



runnable; fully annotated

Software and Tools

Programming LanguagePython
ML Toolset

Keras, Tensorflow 2

Additional librariesscikit-learn, numpy, pandas, matplotlib, mlhep
Suggested EnvironmentsGoogle CoLab, Docker, own PC

Needed datasets

Data Creator
Data TypeSimulation
Data Size2.4 + 1.2 Gb (840 + 440 Mb compressed)
Data SourceHEPMASS (UCI ML repository)HEPMASS-IMB (Zenodo)

Short Description of the Use Case

The problem of signal-background classification is an important part of physics analyses, since an improved classifier helps to achieve more statistically relevant results. The task is usually framed as binary classification, in which the positive class is represented by the signal, and the negative one by the background since we want to reject it as much as possible while preserving (i.e. correctly classifying) the most signal we can.


  • Which conditioning mechanism to use, responsible of combining the input features (or intermediate output) with the given physics parameter.
  • How to assign the physics parameter to the background data samples.
  • How to leverage the domain knowledge about the data to improve the training of the model.

How to execute it

The full code that supports this tutorial is available at:


The provided tutorial notebook can be run, either: manually (requires installing the dependencies, and downloading the datasets), or through our docker image (configured with libraries and data).

Manual Setup

Assuming a working Python setup, also having Jupyter notebook or lab (see here) already installed:

  1. Clone the repository tutorial branch, and move within the folder: 

    Code Block
    git clone --branch tutorial
    # if on Google Colab, use %cd instead
    cd affine-parametric-networks
  2. Run the notebook tutorial.ipynb either on your local machine, or via Google Colab: 

    Code Block
    # on a terminal: 
    jupyter notebook tutorial.ipynb

  3. Copy the URL given in the terminal output on your browser.

Docker Setup

Assuming a working Docker installation, on a terminal:

  1. Clone the tutorial branch and change directory, as described above at step 1.
  2. Run the container (this also downloads the image which is about 4.3 Gb):

    Code Block
    docker run -it -d -v ${PWD}:/affine-parametric-networks -w /affine-parametric-networks -p 8888:8888 --name tutorial tommaso93/affine-parametric-networks
  3. Execute the image named tutorial

    Code Block
    docker exec -it tutorial jupyter notebook --ip --no-browser
  4. Copy the URL starting with "" given in the terminal output, and paste it on your browser. In alternative, type "http://localhost:8888/tree" on your browser, and then insert the token provided on the terminal output (the one starting with "?token="). Then run the tutorial.ipynb notebook (skipping the installation of the dependencies - "Set-up" section).


Improving parametric neural networks for high-energy physics (and beyond) - MLST