PyPWA | A Software Toolkit for Parameter Optimization and Amplitude Analysis

The PyPWA Project

A Software Toolkit for Parameter Optimization and Amplitude Analysis

Partially supported by NSF grants #1507208 and #1820235

What is PyPWA

PyPWA is a toolkit designed to fit (regression) parametric models to data and generate distributions (simulation) according to a given model (function). PyPWA software has been written under the python ecosystem with the goal of performing Amplitude or Partial Wave Analysis (PWA) in nuclear and particle physics experiments.  We briefly describe the general features of amplitude analysis and describe the PyPWA software philosophy, structure, and use. An example of its application is also presented.


Goal

The PyPWA Project aims to develop a software framework that can be used to perform parametric model fitting to data. Examples (tutorials) are given for the Partial-Wave/Amplitude Analysis (PWA) of multiparticle final states in photoproduction experiments using linearly polarized photon beams. PyPWA extracts model parameters by performing fits to data. Tutorials (Step-by-step instructions) leading to a full fit of data, and the use of simulation are included. Most of the code is written in Python (NumPy), but hybrid code (in Cyhon or Fortran) has been used when appropriate. The software of the library is very flexible, it can be organized in a diversity of ways to perform the basic tasks of fitting a pdf (probability-distribution-functions) to data, simulating distributions from a given pdf, or "predicting "data" from a given pdf.

The use of AI in amplitude analysis to the inclusion of python based frameworks (i.e. Tensorflow) is being explored for future inclusion. The PyPWA Project software expects to be in a continuous flow (of improvements!), therefore, please check on the more recent software download version.


Features

  • Fitting
    • Can fit a  log-likelihood, chi-square, or you can define your own
    • Supports binned data
    • Supports a quality factor per event
  • Simulation using Monte Carlo Rejection
  • Jupyter Integration
  • Supports using all the threads on the machine
  • Supports GPU utilization through PyTorch, with optional multi-GPU utilization when applicable.

 


Installing and More Information

Please view our Github and our documentation for more information!


Contributors

Current Team Members

  • Dr. Carlos Salgado, Norfolk State University
  • Dr. Will Phelps, Christopher Newport University
  • Dr. Peter Hurck, University of Glasgow
  • Mark Jones, Old Dominion University

Previous Team Members

  • Brandon DeMello, Old Dominion University
  • Stephanie Bramlett, William and Mary
  • Josh Pond, University of Virginia
  • LaRay Hare, Norfolk State University
  • Christopher Banks, Norfolk State University
  • Michael Harris Jr., Norfolk State University