Metadata-Version: 2.1
Name: ampform
Version: 0.11.4
Summary: Automatically generate symbolic amplitude models for Partial Wave Analysis
Home-page: UNKNOWN
Author: Common Partial Wave Analysis
Author-email: compwa-admin@ep1.rub.de
Maintainer-email: compwa-admin@ep1.rub.de
License: GPLv3 or later
Project-URL: Tracker, https://github.com/ComPWA/ampform/issues
Project-URL: Changelog, https://github.com/ComPWA/ampform/releases
Project-URL: Documentation, https://ampform.rtfd.io
Project-URL: Source, https://github.com/ComPWA/ampform
Keywords: HEP,PWA,amplitude analysis,partial wave analysis,particle physics,particles,physics
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Typing :: Typed
Requires-Python: <3.10,>=3.6
Description-Content-Type: text/markdown
Requires-Dist: attrs (>=20.1.0)
Requires-Dist: qrules (==0.9.*)
Requires-Dist: numpy (<1.21,>=1.16)
Requires-Dist: sympy
Requires-Dist: typing-extensions ; python_version < "3.8.0"
Provides-Extra: all
Requires-Dist: graphviz ; extra == 'all'
Provides-Extra: dev
Requires-Dist: graphviz ; extra == 'dev'
Requires-Dist: ipympl ; extra == 'dev'
Requires-Dist: matplotlib ; extra == 'dev'
Requires-Dist: mpl-interactions ; extra == 'dev'
Requires-Dist: myst-nb (>=0.11) ; extra == 'dev'
Requires-Dist: rich ; extra == 'dev'
Requires-Dist: Sphinx (>=3) ; extra == 'dev'
Requires-Dist: sphinx-book-theme ; extra == 'dev'
Requires-Dist: sphinx-copybutton ; extra == 'dev'
Requires-Dist: sphinx-panels ; extra == 'dev'
Requires-Dist: sphinx-thebe ; extra == 'dev'
Requires-Dist: sphinx-togglebutton ; extra == 'dev'
Requires-Dist: sphinxcontrib-bibtex (>=2) ; extra == 'dev'
Requires-Dist: sphinxcontrib-hep-pdgref ; extra == 'dev'
Requires-Dist: black ; extra == 'dev'
Requires-Dist: isort ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: flake8-blind-except ; extra == 'dev'
Requires-Dist: flake8-bugbear ; extra == 'dev'
Requires-Dist: flake8-builtins ; extra == 'dev'
Requires-Dist: flake8-comprehensions ; extra == 'dev'
Requires-Dist: flake8-pytest-style ; extra == 'dev'
Requires-Dist: flake8-rst-docstrings ; extra == 'dev'
Requires-Dist: flake8-use-fstring ; extra == 'dev'
Requires-Dist: mypy (>=0.570) ; extra == 'dev'
Requires-Dist: pep8-naming ; extra == 'dev'
Requires-Dist: pydocstyle ; extra == 'dev'
Requires-Dist: pylint (>=2.5) ; extra == 'dev'
Requires-Dist: radon ; extra == 'dev'
Requires-Dist: ipywidgets ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: pytest-notebook ; extra == 'dev'
Requires-Dist: pytest-profiling ; extra == 'dev'
Requires-Dist: pytest-xdist ; extra == 'dev'
Requires-Dist: pre-commit (>=1.4.0) ; extra == 'dev'
Requires-Dist: types-docutils ; extra == 'dev'
Requires-Dist: aquirdturtle-collapsible-headings ; extra == 'dev'
Requires-Dist: jupyterlab ; extra == 'dev'
Requires-Dist: jupyterlab-code-formatter ; extra == 'dev'
Requires-Dist: pip-tools (>=6.1.0) ; extra == 'dev'
Requires-Dist: sphinx-autobuild ; extra == 'dev'
Requires-Dist: tox (>=1.9) ; extra == 'dev'
Requires-Dist: dataclasses ; (python_version < "3.7") and extra == 'dev'
Provides-Extra: doc
Requires-Dist: graphviz ; extra == 'doc'
Requires-Dist: ipympl ; extra == 'doc'
Requires-Dist: matplotlib ; extra == 'doc'
Requires-Dist: mpl-interactions ; extra == 'doc'
Requires-Dist: myst-nb (>=0.11) ; extra == 'doc'
Requires-Dist: rich ; extra == 'doc'
Requires-Dist: Sphinx (>=3) ; extra == 'doc'
Requires-Dist: sphinx-book-theme ; extra == 'doc'
Requires-Dist: sphinx-copybutton ; extra == 'doc'
Requires-Dist: sphinx-panels ; extra == 'doc'
Requires-Dist: sphinx-thebe ; extra == 'doc'
Requires-Dist: sphinx-togglebutton ; extra == 'doc'
Requires-Dist: sphinxcontrib-bibtex (>=2) ; extra == 'doc'
Requires-Dist: sphinxcontrib-hep-pdgref ; extra == 'doc'
Requires-Dist: dataclasses ; (python_version < "3.7") and extra == 'doc'
Provides-Extra: format
Requires-Dist: black ; extra == 'format'
Requires-Dist: isort ; extra == 'format'
Provides-Extra: lint
Requires-Dist: flake8 ; extra == 'lint'
Requires-Dist: flake8-blind-except ; extra == 'lint'
Requires-Dist: flake8-bugbear ; extra == 'lint'
Requires-Dist: flake8-builtins ; extra == 'lint'
Requires-Dist: flake8-comprehensions ; extra == 'lint'
Requires-Dist: flake8-pytest-style ; extra == 'lint'
Requires-Dist: flake8-rst-docstrings ; extra == 'lint'
Requires-Dist: flake8-use-fstring ; extra == 'lint'
Requires-Dist: mypy (>=0.570) ; extra == 'lint'
Requires-Dist: pep8-naming ; extra == 'lint'
Requires-Dist: pydocstyle ; extra == 'lint'
Requires-Dist: pylint (>=2.5) ; extra == 'lint'
Requires-Dist: radon ; extra == 'lint'
Provides-Extra: sty
Requires-Dist: black ; extra == 'sty'
Requires-Dist: isort ; extra == 'sty'
Requires-Dist: flake8 ; extra == 'sty'
Requires-Dist: flake8-blind-except ; extra == 'sty'
Requires-Dist: flake8-bugbear ; extra == 'sty'
Requires-Dist: flake8-builtins ; extra == 'sty'
Requires-Dist: flake8-comprehensions ; extra == 'sty'
Requires-Dist: flake8-pytest-style ; extra == 'sty'
Requires-Dist: flake8-rst-docstrings ; extra == 'sty'
Requires-Dist: flake8-use-fstring ; extra == 'sty'
Requires-Dist: mypy (>=0.570) ; extra == 'sty'
Requires-Dist: pep8-naming ; extra == 'sty'
Requires-Dist: pydocstyle ; extra == 'sty'
Requires-Dist: pylint (>=2.5) ; extra == 'sty'
Requires-Dist: radon ; extra == 'sty'
Requires-Dist: ipywidgets ; extra == 'sty'
Requires-Dist: pytest ; extra == 'sty'
Requires-Dist: pytest-cov ; extra == 'sty'
Requires-Dist: pytest-notebook ; extra == 'sty'
Requires-Dist: pytest-profiling ; extra == 'sty'
Requires-Dist: pytest-xdist ; extra == 'sty'
Requires-Dist: pre-commit (>=1.4.0) ; extra == 'sty'
Requires-Dist: types-docutils ; extra == 'sty'
Provides-Extra: test
Requires-Dist: ipywidgets ; extra == 'test'
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: pytest-notebook ; extra == 'test'
Requires-Dist: pytest-profiling ; extra == 'test'
Requires-Dist: pytest-xdist ; extra == 'test'
Provides-Extra: viz
Requires-Dist: graphviz ; extra == 'viz'

# AmpForm

[![10.5281/zenodo.5526648](https://zenodo.org/badge/doi/10.5281/zenodo.5526648.svg)](https://doi.org/10.5281/zenodo.5526648)
[![GPLv3+ license](https://img.shields.io/badge/License-GPLv3+-blue.svg)](https://www.gnu.org/licenses/gpl-3.0-standalone.html)

[![Documentation build status](https://readthedocs.org/projects/ampform/badge/?version=latest)](https://ampform.readthedocs.io)
[![Binder](https://static.mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ComPWA/ampform/stable?filepath=docs/usage)
[![Google Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ComPWA/ampform/blob/stable)
[![Open in Visual Studio Code](https://open.vscode.dev/badges/open-in-vscode.svg)](https://open.vscode.dev/ComPWA/ampform)
[![GitPod](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ComPWA/ampform)
[![PyPI package](https://badge.fury.io/py/ampform.svg)](https://pypi.org/project/ampform)
[![Supported Python versions](https://img.shields.io/pypi/pyversions/ampform)](https://pypi.org/project/ampform)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy.readthedocs.io)
[![pytest](https://github.com/ComPWA/ampform/workflows/pytest/badge.svg)](https://github.com/ComPWA/ampform/actions?query=branch%3Amain+workflow%3Apytest)
[![Test coverage](https://codecov.io/gh/ComPWA/ampform/branch/main/graph/badge.svg)](https://codecov.io/gh/ComPWA/ampform)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/70fc5fb0f3954a9d82d142efeff4df31)](https://www.codacy.com/gh/ComPWA/ampform)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ComPWA/ampform/main.svg)](https://results.pre-commit.ci/latest/github/ComPWA/ampform/main)
[![Spelling checked](https://img.shields.io/badge/cspell-checked-brightgreen.svg)](https://github.com/streetsidesoftware/cspell/tree/master/packages/cspell)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort)

AmpForm is a Python library of spin formalisms and dynamics with which you can
automatically formulate symbolic amplitude models for Partial Wave Analysis.
The resulting amplitude models are formulated with
[SymPy](https://www.sympy.org/en/index.html) (a Computer Algebra System). This
note only makes it easy to inspect and visualize the resulting amplitude
models, but also means the amplitude models can be used as templates for faster
computational back-ends (see
[TensorWaves](https://github.com/ComPWA/tensorwaves))!

Visit [ampform.rtfd.io](https://ampform.readthedocs.io) for several usage
examples. For an overview of **upcoming releases and planned functionality**,
see
[here](https://github.com/ComPWA/ampform/milestones?direction=asc&sort=title&state=open).

## Available features

- **Automatic amplitude model building**: Convert state transition graphs from
  [QRules](https://github.com/ComPWA/qrules) to an amplitude model that is
  _mathematically expressed_ with [SymPy](https://docs.sympy.org) and can be
  _converted to any backend_ (see
  [`tensorwaves`](https://tensorwaves.rtfd.io)).
- **Dynamics**
  - Relativistic Breit-Wigner, optionally with form factors
  - Symbolic _K_-matrix for an arbitrary number of poles and channels
  - Symbolic _P_-vector for an arbitrary number of poles and channels
- **Spin formalisms (for amplitude model generation)**
  - Helicity formalism
  - Canonical formalism

## Contribute

See [`CONTRIBUTING.md`](./CONTRIBUTING.md)


