/MassAgnostic-JetTaggers

Primary LanguageJupyter NotebookMIT LicenseMIT

Mass Agnostic Jet Taggers

Layne Bradshaw, Rashmish K. Misha, Andrea Mitridate, and Bryan Ostdiek

This project explores the benefits of different methods to decorrelate the jet mass from a machine learning jet tagger. The paper can be found at [https://arxiv.org/abs/1908.08959]. If you use any of the results from this study, please cite:

@article{Bradshaw:2019ipy,
      author         = "Bradshaw, Layne and Mishra, Rashmish K. and Mitridate,
                        Andrea and Ostdiek, Bryan",
      title          = "{Mass Agnostic Jet Taggers}",
      year           = "2019",
      eprint         = "1908.08959",
      archivePrefix  = "arXiv",
      primaryClass   = "hep-ph",
      SLACcitation   = "%%CITATION = ARXIV:1908.08959;%%"
}

Getting started

For reproducibility, we have included the environment we used. To generate this environment (conda is required)

Environment

make create_environment
conda activate massagnosticjettaggers

Data

All of the preprocessing of the data can be done with make data

Models

The models have already been trained, and the training takes quite a bit of time. However, they can be retrained using

make base_nn
make uBoost
make BDT
make planed_nn
make planed_bdt
make pca_nn
make pca_bdt

Predictions and Metrics

The predictions for the test data can be made using make predictions. After the predictions are made, the metrics are computed with make metrics.

Project Organization

├── LICENSE
├── Makefile             <- Makefile with commands like `make data` or `make train`
├── README.md            <- The top-level README for developers using this project.
├── data
│   ├── interim          <- Intermediate data that has been transformed.
│   ├── modelprediction  <- The final, canonical data sets
│   └── raw              <- The original, immutable data dump.
│
│
├── models               <- Trained and serialized models and histories
│   ├── adv              <- Adversarial trained networks
│   └── histories        <- Adversarial training histories
│
├── notebooks            <- Jupyter notebooks. Naming convention is a number (for ordering),
│                         the creator's initials, and a short `-` delimited description, e.g.
│                         `01-bo-CheckScaling.ipynb`.
│
├── reports              <- Generated analysis as HTML, PDF, LaTeX, etc.
│   └── figures          <- Generated graphics and figures to be used in reporting
│
├── environment.yml     <- The requirements file for reproducing the analysis environment
│
├── setup.py             <- makes project pip installable (pip install -e .) so src can be imported
└── src                  <- Source code for use in this project.
    ├── __init__.py      <- Makes src a Python module
    │
    ├── data             <- Scripts to download or generate data
    │   ├── make_dataset.py   
    │   ├── get_weights_1d.py  <- Planing
    │   ├── PCA_scaler.py      <- PCA rotation
    │   └── process_data.py    <- Runs the preprocessing
    │
    ├── models           <- Scripts to train models and then use trained models to make
    │   │                 predictions
    │   ├── HelperFunctions.py
    │   ├── predict_model.py
    │   ├── train_Adversarial.py
    │   ├── train_base_nn.py
    │   ├── train_BDT.py
    │   ├── train_PCA_BDT.py
    │   ├── train_PCA_nn.py
    │   ├── train_planed_BDT.py
    │   ├── train_planed_nn.py
    │   └── train_uBoost.py
    │
    ├── test_metrics     <- Scripts to take histograms and compute metrics
    │   ├── Distances.py
    │   └── run_metrics.py
    │
    └── visualization    <- Scripts to create exploratory and results oriented visualizations

Project based on the cookiecutter data science project template. #cookiecutterdatascience