Repository: ComPWA/tensorwaves (language: python)

Issue:
fix: remove Python example workflow
The fit procedure is now roughly tested through the unit tests. In addition, the workflow.py file is not run anymore since #185.

This fix was triggered by the style check of #192.
ci: ignore changes to requirements.txt
Previously, changes to the requirements.txt (so the pinned dependencies) would trigger the upgrade requirements job as well. This job can only run on PRs from branches on the same repository. Therefore it is not possible to cherry-pick upgrade commits and add them to a fork PR (see [failing upgrade CI](https://github.com/ComPWA/tensorwaves/runs/1667713835) for da0dd7b).
refactor!: normalize function in NLL
The expertsystem was changed to not normalize the Intensity automatically anymore. To adapt to this change, the NLL estimator now gets another required argument, a phase space dataset. This is used to normalize the function.

Closes #191
ci: automatically upgrade requirements
Closes #179

See https://github.com/ComPWA/expertsystem/issues/409. Implements the structure introduced by https://github.com/ComPWA/expertsystem/pull/412, it seems to work as intended over the past weeks.

_Note: also removes the separate CD testing_


Discussion / hints:



# [Codecov](https://codecov.io/gh/ComPWA/tensorwaves/pull/185?src=pr&el=h1) Report
> Merging [#185](https://codecov.io/gh/ComPWA/tensorwaves/pull/185?src=pr&el=desc) (a1752b3) into [master](https://codecov.io/gh/ComPWA/tensorwaves/commit/7a2693637edae42c09570f9e0bd8bae3a0dd4ef0?el=desc) (7a26936) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/ComPWA/tensorwaves/pull/185/graphs/tree.svg?width=650&height=150&src=pr&token=WONFVU9I7F)](https://codecov.io/gh/ComPWA/tensorwaves/pull/185?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master     #185   +/-   ##
=======================================
  Coverage   76.17%   76.17%           
=======================================
  Files          12       12           
  Lines         596      596           
  Branches       84       84           
=======================================
  Hits          454      454           
  Misses        107      107           
  Partials       35       35           
```

| Flag | Coverage Δ | |
|---|---|---|
| unittests | `76.17% <ø> (ø)` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.



Fix patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5c599325..16000b50 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -74,9 +74,6 @@ jobs:
         env:
           CUDA_VISIBLE_DEVICES: "-1"
         run: pytest -n auto
-      - name: Test example scripts
-        working-directory: examples
-        run: python *.py # https://github.com/ComPWA/tensorwaves/issues/103
 
   documentation:
     name: Build documentation and run notebooks
diff --git a/.gitignore b/.gitignore
index 1d5baa53..e54e4253 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,5 +51,3 @@ pyvenv*/
 !cspell.json
 !environment.yml
 !pyrightconfig.json
-
-!examples/intensity-recipe.yaml
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 03056094..e6468b3d 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -38,6 +38,9 @@ repos:
       - id: prettier
         language_version: 12.18.2 # prettier does not specify node correctly
 
+  # The following tools have to be install locally, because they can also be
+  # used by code editors (e.g. linting and format-on-save).
+
   - repo: local
     hooks:
       - id: black
diff --git a/.vscode/settings.json b/.vscode/settings.json
index f9ce291f..d9b0b219 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -15,6 +15,9 @@
     "editor.defaultFormatter": "esbenp.prettier-vscode",
     "editor.wordWrap": "off"
   },
+  "[pip-requirements]": {
+    "editor.wordWrap": "off"
+  },
   "[python]": {
     "editor.codeActionsOnSave": {
       "source.organizeImports": true
@@ -34,6 +37,12 @@
   "files.associations": {
     "*.inc": "restructuredtext"
   },
+  "files.watcherExclude": {
+    "**/*_cache/**": true,
+    "**/.eggs/**": true,
+    "**/.git/**": true,
+    "**/.tox/**": true
+  },
   "git.rebaseWhenSync": true,
   "githubPullRequests.telemetry.enabled": false,
   "gitlens.advanced.telemetry.enabled": false,
diff --git a/docs/index.md b/docs/index.md
index 7f1376d7..dd6a2364 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -16,8 +16,7 @@ For an overview of upcoming releases and planned functionality, see
 ```
 ````
 
-For a quick demo of the TensorWaves workflow, see the
-[workflow notebooks on binder](https://mybinder.org/v2/gh/ComPWA/tensorwaves/master?filepath=examples%2Fworkflow).
+For a quick demo of the TensorWaves workflow, see {doc}`/usage`.
 
 TensorWaves is a Python package for doing Partial Wave Analysis with
 [TensorFlow](https://www.tensorflow.org) as computational backend. The package
diff --git a/docs/usage.rst b/docs/usage.rst
index 5c18f767..cf07130d 100644
--- a/docs/usage.rst
+++ b/docs/usage.rst
@@ -4,7 +4,7 @@ Usage
 The examples in the following pages illustrate how to use the tools that
 `tensorwaves` offers. The examples were written as Jupyter notebooks and can be
 downloaded `here
-<https://github.com/ComPWA/tensorwaves/tree/master/examples>`_.
+<https://github.com/ComPWA/tensorwaves/tree/master/docs/usage>`_.
 
 .. toctree::
   :maxdepth: 2
diff --git a/examples/intensity-recipe.yaml b/examples/intensity-recipe.yaml
deleted file mode 100644
index 9d1b2fce..00000000
--- a/examples/intensity-recipe.yaml
+++ /dev/null
@@ -1,1202 +0,0 @@
-Kinematics:
-  Type: Helicity
-  InitialState:
-    - Particle: J/psi
-      ID: 0
-  FinalState:
-    - Particle: gamma
-      ID: 2
-    - Particle: pi0
-      ID: 3
-    - Particle: pi0
-      ID: 4
-
-Parameters:
-  - Name: &par1 Magnitude_J/psi_to_f2(1270)_0+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-    Fix: true
-  - Name: &par2 Phase_J/psi_to_f2(1270)_0+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par3 Magnitude_J/psi_to_f2(1950)_0+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-  - Name: &par4 Phase_J/psi_to_f2(1950)_0+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par5 Magnitude_J/psi_to_f2(1270)_-1+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-  - Name: &par6 Phase_J/psi_to_f2(1270)_-1+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par7 Magnitude_J/psi_to_f2(1950)_-1+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-  - Name: &par8 Phase_J/psi_to_f2(1950)_-1+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par9 Magnitude_J/psi_to_f2(1270)_-2+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-  - Name: &par10 Phase_J/psi_to_f2(1270)_-2+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par11 Magnitude_J/psi_to_f2(1950)_-2+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-  - Name: &par12 Phase_J/psi_to_f2(1950)_-2+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par13 Magnitude_J/psi_to_f0(980)_0+gamma_-1;f(0)(980)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-  - Name: &par14 Phase_J/psi_to_f0(980)_0+gamma_-1;f(0)(980)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par15 Magnitude_J/psi_to_f0(1500)_0+gamma_-1;f(0)(1500)_to_pi0_0+pi0_0;
-    Type: Magnitude
-    Value: 1.0
-  - Name: &par16 Phase_J/psi_to_f0(1500)_0+gamma_-1;f(0)(1500)_to_pi0_0+pi0_0;
-    Type: Phase
-    Value: 0.0
-  - Name: &par17 MesonRadius_J/psi
-    Value: 1.0
-  - Name: &par18 MesonRadius_f(0)(980)
-    Value: 1.0
-  - Name: &par19 MesonRadius_f(2)(1270)
-    Value: 1.0
-  - Name: &par20 MesonRadius_f(0)(1500)
-    Value: 1.0
-  - Name: &par21 MesonRadius_f(2)(1950)
-    Value: 1.0
-
-Intensity:
-  Class: NormalizedIntensity
-  Intensity:
-    Class: IncoherentIntensity
-    Intensities:
-      - Class: CoherentIntensity
-        Component: coherent_J/psi_-1_to_gamma_-1+pi0_0+pi0_0
-        Amplitudes:
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1270)_0+gamma_-1;f(2)(1270)_0_to_pi0_0+pi0_0;
-            Magnitude: *par1
-            Phase: *par2
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1950)_0+gamma_-1;f(2)(1950)_0_to_pi0_0+pi0_0;
-            Magnitude: *par3
-            Phase: *par4
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1270)_-1+gamma_-1;f(2)(1270)_-1_to_pi0_0+pi0_0;
-            Magnitude: *par5
-            Phase: *par6
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: -1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: -1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1950)_-1+gamma_-1;f(2)(1950)_-1_to_pi0_0+pi0_0;
-            Magnitude: *par7
-            Phase: *par8
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: -1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: -1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1270)_-2+gamma_-1;f(2)(1270)_-2_to_pi0_0+pi0_0;
-            Magnitude: *par9
-            Phase: *par10
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: -2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: -2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1950)_-2+gamma_-1;f(2)(1950)_-2_to_pi0_0+pi0_0;
-            Magnitude: *par11
-            Phase: *par12
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: -2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: -2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f0(980)_0+gamma_-1;f(0)(980)_0_to_pi0_0+pi0_0;
-            Magnitude: *par13
-            Phase: *par14
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(0)(980)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(980)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f0(1500)_0+gamma_-1;f(0)(1500)_0_to_pi0_0+pi0_0;
-            Magnitude: *par15
-            Phase: *par16
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(0)(1500)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(1500)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-      - Class: CoherentIntensity
-        Component: coherent_J/psi_-1_to_gamma_1+pi0_0+pi0_0
-        Amplitudes:
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1270)_2+gamma_1;f(2)(1270)_2_to_pi0_0+pi0_0;
-            Magnitude: *par9
-            Phase: *par10
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1950)_2+gamma_1;f(2)(1950)_2_to_pi0_0+pi0_0;
-            Magnitude: *par11
-            Phase: *par12
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1270)_1+gamma_1;f(2)(1270)_1_to_pi0_0+pi0_0;
-            Magnitude: *par5
-            Phase: *par6
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1950)_1+gamma_1;f(2)(1950)_1_to_pi0_0+pi0_0;
-            Magnitude: *par7
-            Phase: *par8
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1270)_0+gamma_1;f(2)(1270)_0_to_pi0_0+pi0_0;
-            Magnitude: *par1
-            Phase: *par2
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f2(1950)_0+gamma_1;f(2)(1950)_0_to_pi0_0+pi0_0;
-            Magnitude: *par3
-            Phase: *par4
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f0(980)_0+gamma_1;f(0)(980)_0_to_pi0_0+pi0_0;
-            Magnitude: *par13
-            Phase: *par14
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(0)(980)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(980)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_-1_to_f0(1500)_0+gamma_1;f(0)(1500)_0_to_pi0_0+pi0_0;
-            Magnitude: *par15
-            Phase: *par16
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: -1
-                  DecayProducts:
-                    - Name: f(0)(1500)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(1500)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-      - Class: CoherentIntensity
-        Component: coherent_J/psi_1_to_gamma_-1+pi0_0+pi0_0
-        Amplitudes:
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1270)_0+gamma_-1;f(2)(1270)_0_to_pi0_0+pi0_0;
-            Magnitude: *par1
-            Phase: *par2
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1950)_0+gamma_-1;f(2)(1950)_0_to_pi0_0+pi0_0;
-            Magnitude: *par3
-            Phase: *par4
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1270)_-1+gamma_-1;f(2)(1270)_-1_to_pi0_0+pi0_0;
-            Magnitude: *par5
-            Phase: *par6
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: -1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: -1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1950)_-1+gamma_-1;f(2)(1950)_-1_to_pi0_0+pi0_0;
-            Magnitude: *par7
-            Phase: *par8
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: -1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: -1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1270)_-2+gamma_-1;f(2)(1270)_-2_to_pi0_0+pi0_0;
-            Magnitude: *par9
-            Phase: *par10
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: -2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: -2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1950)_-2+gamma_-1;f(2)(1950)_-2_to_pi0_0+pi0_0;
-            Magnitude: *par11
-            Phase: *par12
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: -2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: -2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f0(980)_0+gamma_-1;f(0)(980)_0_to_pi0_0+pi0_0;
-            Magnitude: *par13
-            Phase: *par14
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(0)(980)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(980)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f0(1500)_0+gamma_-1;f(0)(1500)_0_to_pi0_0+pi0_0;
-            Magnitude: *par15
-            Phase: *par16
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(0)(1500)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: -1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(1500)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-      - Class: CoherentIntensity
-        Component: coherent_J/psi_1_to_gamma_1+pi0_0+pi0_0
-        Amplitudes:
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1270)_2+gamma_1;f(2)(1270)_2_to_pi0_0+pi0_0;
-            Magnitude: *par9
-            Phase: *par10
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1950)_2+gamma_1;f(2)(1950)_2_to_pi0_0+pi0_0;
-            Magnitude: *par11
-            Phase: *par12
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 2.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 2.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1270)_1+gamma_1;f(2)(1270)_1_to_pi0_0+pi0_0;
-            Magnitude: *par5
-            Phase: *par6
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1950)_1+gamma_1;f(2)(1950)_1_to_pi0_0+pi0_0;
-            Magnitude: *par7
-            Phase: *par8
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 1.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 1.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1270)_0+gamma_1;f(2)(1270)_0_to_pi0_0+pi0_0;
-            Magnitude: *par1
-            Phase: *par2
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1270)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1270)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f2(1950)_0+gamma_1;f(2)(1950)_0_to_pi0_0+pi0_0;
-            Magnitude: *par3
-            Phase: *par4
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(2)(1950)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(2)(1950)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f0(980)_0+gamma_1;f(0)(980)_0_to_pi0_0+pi0_0;
-            Magnitude: *par13
-            Phase: *par14
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(0)(980)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(980)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-          - Class: CoefficientAmplitude
-            Component: J/psi_1_to_f0(1500)_0+gamma_1;f(0)(1500)_0_to_pi0_0+pi0_0;
-            Magnitude: *par15
-            Phase: *par16
-            Amplitude:
-              Class: SequentialAmplitude
-              Amplitudes:
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: J/psi
-                    Helicity: 1
-                  DecayProducts:
-                    - Name: f(0)(1500)
-                      FinalState: [3, 4]
-                      Helicity: 0.0
-                    - Name: gamma
-                      FinalState: [2]
-                      Helicity: 1
-                - Class: HelicityDecay
-                  DecayParticle:
-                    Name: f(0)(1500)
-                    Helicity: 0.0
-                  DecayProducts:
-                    - Name: pi0
-                      FinalState: [3]
-                      Helicity: 0
-                    - Name: pi0
-                      FinalState: [4]
-                      Helicity: 0
-                  RecoilSystem:
-                    RecoilFinalState: [2]
-
-ParticleList:
-  J/psi:
-    PID: 443
-    Mass: 3.096900
-    Width: 9.29E-05
-    QuantumNumbers:
-      Spin: 1
-      Charge: 0
-      Parity: -1
-      CParity: -1
-      GParity: -1
-      IsoSpin: { Value: 0, Projection: 0 }
-      BaryonNumber: 0
-      Charmness: 0
-      Strangeness: 0
-
-  gamma:
-    PID: 22
-    Mass: 0.0
-    QuantumNumbers:
-      Spin: 1
-      Charge: 0
-      Parity: -1
-      CParity: -1
-      IsoSpin: { Value: 0, Projection: 0 }
-      BaryonNumber: 0
-      Charmness: 0
-      Strangeness: 0
-
-  pi0:
-    PID: 111
-    Mass: 0.1349766
-    QuantumNumbers:
-      Spin: 0
-      Charge: 0
-      Parity: -1
-      CParity: 1
-      GParity: -1
-      IsoSpin: { Value: 1, Projection: 0 }
-      BaryonNumber: 0
-      Charmness: 0
-      Strangeness: 0
-
-  f(0)(980):
-    PID: 9010221
-    Mass: 0.994
-    Width: 0.070
-    QuantumNumbers:
-      Spin: 0
-      Charge: 0
-      Parity: 1
-      CParity: 1
-      IsoSpin: { Value: 0 }
-      GParity: 1
-
-  f(2)(1270):
-    PID: 225
-    Mass: 1.2751
-    Width: 0.185
-    QuantumNumbers:
-      Spin: 2
-      Charge: 0
-      Parity: 1
-      CParity: 1
-      GParity: 1
-
-  f(0)(1500):
-    PID: 9030221
-    Mass: 1.505
-    Width: 0.109
-    QuantumNumbers:
-      Spin: 0
-      Charge: 0
-      Parity: 1
-      CParity: 1
-      GParity: 1
-
-  f(2)(1950):
-    PID: 9050225
-    Mass: 1.944
-    Width: 0.472
-    QuantumNumbers:
-      Spin: 2
-      Charge: 0
-      Parity: 1
-      CParity: 1
-      GParity: 1
-
-Dynamics:
-  J/psi:
-    Type: NonDynamic
-    FormFactor:
-      Type: BlattWeisskopf
-      MesonRadius: *par17
-
-  f(0)(980):
-    Type: RelativisticBreitWigner
-    FormFactor:
-      Type: BlattWeisskopf
-      MesonRadius: *par18
-
-  f(2)(1270):
-    Type: RelativisticBreitWigner
-    FormFactor:
-      Type: BlattWeisskopf
-      MesonRadius: *par19
-
-  f(0)(1500):
-    Type: RelativisticBreitWigner
-    FormFactor:
-      Type: BlattWeisskopf
-      MesonRadius: *par20
-
-  f(2)(1950):
-    Type: RelativisticBreitWigner
-    FormFactor:
-      Type: BlattWeisskopf
-      MesonRadius: *par21
diff --git a/examples/workflow.py b/examples/workflow.py
deleted file mode 100644
index 591d798f..00000000
--- a/examples/workflow.py
+++ /dev/null
@@ -1,97 +0,0 @@
-"""Simple example that shows the workflow of `tensorwaves`."""
-
-import logging
-from os.path import dirname, realpath
-from typing import Tuple
-
-import numpy as np
-from expertsystem import io
-
-from tensorwaves.data.generate import generate_data, generate_phsp
-from tensorwaves.estimator import UnbinnedNLL
-from tensorwaves.optimizer.minuit import Minuit2
-from tensorwaves.physics.helicity_formalism.amplitude import (
-    IntensityBuilder,
-    IntensityTF,
-)
-from tensorwaves.physics.helicity_formalism.kinematics import (
-    HelicityKinematics,
-)
-
-logging.getLogger().setLevel(logging.INFO)
-
-
-def create_kinematics_and_intensity(
-    recipe_file_name: str,
-) -> Tuple[HelicityKinematics, IntensityTF]:
-    model = io.load_amplitude_model(recipe_file_name)
-
-    kinematics = HelicityKinematics.from_model(model)
-    part_list = model.particles
-
-    phsp_sample = generate_phsp(300000, kinematics)
-
-    builder = IntensityBuilder(part_list, kinematics, phsp_sample)
-    intensity = builder.create_intensity(model)
-    return kinematics, intensity
-
-
-def perform_fit(
-    kinematics: HelicityKinematics,
-    intensity: IntensityTF,
-    data_sample: np.ndarray,
-) -> dict:
-    dataset = kinematics.convert(data_sample)
-    estimator = UnbinnedNLL(intensity, dataset)
-
-    free_params = {
-        # 'Position_f2(1270):0': 1.3,
-        "Width_f2(1270)": 0.3,
-        "Position_f2(1950)": 1.9,
-        "Width_f2(1950)": 0.1,
-        # 'Position_f0(980)': 0.8,
-        "Width_f0(980)": 0.2,
-        "Position_f0(1500)": 1.6,
-        "Width_f0(1500)": 0.01,
-        # 'Magnitude_J/psi_to_f2(1270)_0+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;': ,
-        # 'Phase_J/psi_to_f2(1270)_0+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;': ,
-        "Magnitude_J/psi_to_f2(1950)_0+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;": 3.0,
-        "Phase_J/psi_to_f2(1950)_0+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;": 1.3,
-        "Magnitude_J/psi_to_f2(1270)_-1+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;": 6.2,
-        "Phase_J/psi_to_f2(1270)_-1+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;": 0.71,
-        "Magnitude_J/psi_to_f2(1950)_-1+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;": 0.53,
-        "Phase_J/psi_to_f2(1950)_-1+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;": -0.36,
-        "Magnitude_J/psi_to_f2(1270)_-2+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;": 5.1,
-        "Phase_J/psi_to_f2(1270)_-2+gamma_-1;f(2)(1270)_to_pi0_0+pi0_0;": 2.3,
-        "Magnitude_J/psi_to_f2(1950)_-2+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;": 0.78,
-        "Phase_J/psi_to_f2(1950)_-2+gamma_-1;f(2)(1950)_to_pi0_0+pi0_0;": -0.52,
-        "Magnitude_J/psi_to_f0(980)_0+gamma_-1;f(0)(980)_to_pi0_0+pi0_0;": 3.4,
-        "Phase_J/psi_to_f0(980)_0+gamma_-1;f(0)(980)_to_pi0_0+pi0_0;": -0.95,
-        "Magnitude_J/psi_to_f0(1500)_0+gamma_-1;f(0)(1500)_to_pi0_0+pi0_0;": 3.2,
-        "Phase_J/psi_to_f0(1500)_0+gamma_-1;f(0)(1500)_to_pi0_0+pi0_0;": 0.59,
-    }
-
-    params = {}
-    for name in estimator.parameters:
-        if name in free_params:
-            params[name] = free_params[name]
-    logging.info(params)
-
-    logging.info("starting fit")
-    minuit2 = Minuit2()
-    result = minuit2.optimize(estimator, params)
-    logging.info(result)
-    return result
-
-
-def main() -> None:
-    script_dir = dirname(realpath(__file__))
-    recipe_file = f"{script_dir}/intensity-recipe.yaml"
-    kinematics, intensity = create_kinematics_and_intensity(recipe_file)
-    data_sample = generate_data(30000, kinematics, intensity)
-    assert data_sample.shape == (3, 30000, 4)
-    # perform_fit(kinematics, intensity, data_sample)
-
-
-if __name__ == "__main__":
-    main()
diff --git a/pyrightconfig.json b/pyrightconfig.json
index 9b7a30b0..bbad5e89 100644
--- a/pyrightconfig.json
+++ b/pyrightconfig.json
@@ -1,6 +1,6 @@
 {
   "exclude": [".git", ".tox", "docs/_build"],
-  "include": ["benchmarks", "docs", "examples", "src", "tests"],
+  "include": ["docs", "src", "tests"],
   "reportGeneralTypeIssues": false,
   "reportUnboundVariable": false,
   "reportUnusedClass": true,
diff --git a/reqs/3.6/requirements-dev.txt b/reqs/3.6/requirements-dev.txt
index 1e602dab..e93f581c 100644
--- a/reqs/3.6/requirements-dev.txt
+++ b/reqs/3.6/requirements-dev.txt
@@ -42,7 +42,7 @@ entrypoints==0.3
 execnet==1.7.1
 expertsystem==0.6.5
 filelock==3.0.12
-flake8-blind-except==0.1.1
+flake8-blind-except==0.2.0
 flake8-bugbear==20.11.1
 flake8-builtins==1.5.3
 flake8-polyfill==1.0.2
@@ -52,7 +52,7 @@ flatbuffers==1.12
 fuzzywuzzy==0.18.0
 gast==0.3.3
 gitdb==4.0.5
-gitpython==3.1.11
+gitpython==3.1.12
 google-auth-oauthlib==0.4.2
 google-auth==1.24.0
 google-pasta==0.2.0
@@ -72,21 +72,21 @@ iniconfig==1.1.1
 ipykernel==5.4.2
 ipython-genutils==0.2.0
 ipython==7.16.1
-ipywidgets==7.6.2
+ipywidgets==7.6.3
 isort==5.7.0
-jedi==0.18.0
+jedi==0.17.2
 jinja2==2.11.2
 json5==0.9.5
 jsonschema==3.2.0
 jupyter-cache==0.4.1
-jupyter-client==6.1.7
+jupyter-client==6.1.10
 jupyter-console==6.2.0
 jupyter-core==4.7.0
-jupyter-server==1.1.4
+jupyter-server==1.2.0
 jupyter-sphinx==0.3.2
 jupyter==1.0.0
 jupyterlab-code-formatter==1.4.1
-jupyterlab-server==2.0.0
+jupyterlab-server==2.1.0
 jupyterlab-widgets==1.0.0
 jupyterlab==3.0.1
 keras-preprocessing==1.1.2
@@ -113,13 +113,13 @@ nbstripout==0.3.9
 nest-asyncio==1.4.3
 nodeenv==1.5.0
 notebook==6.1.6
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
 pandas==1.1.5
 pandocfilters==1.4.3
-parso==0.8.1
+parso==0.7.1
 particle==0.14.0
 pathspec==0.8.1
 pbr==5.5.1
@@ -132,7 +132,7 @@ pip-tools==5.5.0
 pluggy==0.13.1
 pre-commit==2.9.3
 prometheus-client==0.9.0
-prompt-toolkit==3.0.9
+prompt-toolkit==3.0.10
 protobuf==3.14.0
 ptyprocess==0.7.0
 py==1.10.0
@@ -180,7 +180,7 @@ sphinx-copybutton==0.3.1
 sphinx-panels==0.5.2
 sphinx-thebe==0.0.8
 sphinx-togglebutton==0.2.3
-sphinx==3.4.2
+sphinx==3.4.3
 sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
 sphinxcontrib-htmlhelp==1.0.3
diff --git a/reqs/3.6/requirements-doc.txt b/reqs/3.6/requirements-doc.txt
index a1b98de1..6e174a49 100644
--- a/reqs/3.6/requirements-doc.txt
+++ b/reqs/3.6/requirements-doc.txt
@@ -33,7 +33,7 @@ flatbuffers==1.12
 fuzzywuzzy==0.18.0
 gast==0.3.3
 gitdb==4.0.5
-gitpython==3.1.11
+gitpython==3.1.12
 google-auth-oauthlib==0.4.2
 google-auth==1.24.0
 google-pasta==0.2.0
@@ -49,12 +49,12 @@ importlib-resources==3.0.0
 ipykernel==5.4.2
 ipython-genutils==0.2.0
 ipython==7.16.1
-ipywidgets==7.6.2
-jedi==0.18.0
+ipywidgets==7.6.3
+jedi==0.17.2
 jinja2==2.11.2
 jsonschema==3.2.0
 jupyter-cache==0.4.1
-jupyter-client==6.1.7
+jupyter-client==6.1.10
 jupyter-console==6.2.0
 jupyter-core==4.7.0
 jupyter-sphinx==0.3.2
@@ -76,20 +76,20 @@ nbdime==2.1.0
 nbformat==5.0.8
 nest-asyncio==1.4.3
 notebook==6.1.6
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
 pandas==1.1.5
 pandocfilters==1.4.3
-parso==0.8.1
+parso==0.7.1
 particle==0.14.0
 pexpect==4.8.0
 phasespace==1.2.0
 pickleshare==0.7.5
 pillow==8.1.0
 prometheus-client==0.9.0
-prompt-toolkit==3.0.9
+prompt-toolkit==3.0.10
 protobuf==3.14.0
 ptyprocess==0.7.0
 pyasn1-modules==0.2.8
@@ -120,7 +120,7 @@ sphinx-copybutton==0.3.1
 sphinx-panels==0.5.2
 sphinx-thebe==0.0.8
 sphinx-togglebutton==0.2.3
-sphinx==3.4.2
+sphinx==3.4.3
 sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
 sphinxcontrib-htmlhelp==1.0.3
diff --git a/reqs/3.6/requirements-sty.txt b/reqs/3.6/requirements-sty.txt
index 91a70fc7..bda38182 100644
--- a/reqs/3.6/requirements-sty.txt
+++ b/reqs/3.6/requirements-sty.txt
@@ -29,7 +29,7 @@ docutils==0.16
 execnet==1.7.1
 expertsystem==0.6.5
 filelock==3.0.12
-flake8-blind-except==0.1.1
+flake8-blind-except==0.2.0
 flake8-bugbear==20.11.1
 flake8-builtins==1.5.3
 flake8-polyfill==1.0.2
@@ -66,7 +66,7 @@ mypy==0.790
 nbformat==5.0.8
 nbstripout==0.3.9
 nodeenv==1.5.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
diff --git a/reqs/3.6/requirements.txt b/reqs/3.6/requirements.txt
index 4556c1a1..c6381cae 100644
--- a/reqs/3.6/requirements.txt
+++ b/reqs/3.6/requirements.txt
@@ -31,7 +31,7 @@ jsonschema==3.2.0
 keras-preprocessing==1.1.2
 markdown==3.3.3
 mpmath==1.1.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 pandas==1.1.5
diff --git a/reqs/3.7/requirements-dev.txt b/reqs/3.7/requirements-dev.txt
index d582dc82..d512921e 100644
--- a/reqs/3.7/requirements-dev.txt
+++ b/reqs/3.7/requirements-dev.txt
@@ -40,7 +40,7 @@ entrypoints==0.3
 execnet==1.7.1
 expertsystem==0.6.5
 filelock==3.0.12
-flake8-blind-except==0.1.1
+flake8-blind-except==0.2.0
 flake8-bugbear==20.11.1
 flake8-builtins==1.5.3
 flake8-polyfill==1.0.2
@@ -50,7 +50,7 @@ flatbuffers==1.12
 fuzzywuzzy==0.18.0
 gast==0.3.3
 gitdb==4.0.5
-gitpython==3.1.11
+gitpython==3.1.12
 google-auth-oauthlib==0.4.2
 google-auth==1.24.0
 google-pasta==0.2.0
@@ -68,21 +68,21 @@ iniconfig==1.1.1
 ipykernel==5.4.2
 ipython-genutils==0.2.0
 ipython==7.19.0
-ipywidgets==7.6.2
+ipywidgets==7.6.3
 isort==5.7.0
-jedi==0.18.0
+jedi==0.17.2
 jinja2==2.11.2
 json5==0.9.5
 jsonschema==3.2.0
 jupyter-cache==0.4.1
-jupyter-client==6.1.7
+jupyter-client==6.1.10
 jupyter-console==6.2.0
 jupyter-core==4.7.0
-jupyter-server==1.1.4
+jupyter-server==1.2.0
 jupyter-sphinx==0.3.2
 jupyter==1.0.0
 jupyterlab-code-formatter==1.4.1
-jupyterlab-server==2.0.0
+jupyterlab-server==2.1.0
 jupyterlab-widgets==1.0.0
 jupyterlab==3.0.1
 keras-preprocessing==1.1.2
@@ -109,13 +109,13 @@ nbstripout==0.3.9
 nest-asyncio==1.4.3
 nodeenv==1.5.0
 notebook==6.1.6
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
 pandas==1.2.0
 pandocfilters==1.4.3
-parso==0.8.1
+parso==0.7.1
 particle==0.14.0
 pathspec==0.8.1
 pbr==5.5.1
@@ -128,7 +128,7 @@ pip-tools==5.5.0
 pluggy==0.13.1
 pre-commit==2.9.3
 prometheus-client==0.9.0
-prompt-toolkit==3.0.9
+prompt-toolkit==3.0.10
 protobuf==3.14.0
 ptyprocess==0.7.0
 py==1.10.0
@@ -176,7 +176,7 @@ sphinx-copybutton==0.3.1
 sphinx-panels==0.5.2
 sphinx-thebe==0.0.8
 sphinx-togglebutton==0.2.3
-sphinx==3.4.2
+sphinx==3.4.3
 sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
 sphinxcontrib-htmlhelp==1.0.3
diff --git a/reqs/3.7/requirements-doc.txt b/reqs/3.7/requirements-doc.txt
index 1dca52c8..e10a7233 100644
--- a/reqs/3.7/requirements-doc.txt
+++ b/reqs/3.7/requirements-doc.txt
@@ -33,7 +33,7 @@ flatbuffers==1.12
 fuzzywuzzy==0.18.0
 gast==0.3.3
 gitdb==4.0.5
-gitpython==3.1.11
+gitpython==3.1.12
 google-auth-oauthlib==0.4.2
 google-auth==1.24.0
 google-pasta==0.2.0
@@ -48,12 +48,12 @@ importlib-metadata==2.1.1
 ipykernel==5.4.2
 ipython-genutils==0.2.0
 ipython==7.19.0
-ipywidgets==7.6.2
-jedi==0.18.0
+ipywidgets==7.6.3
+jedi==0.17.2
 jinja2==2.11.2
 jsonschema==3.2.0
 jupyter-cache==0.4.1
-jupyter-client==6.1.7
+jupyter-client==6.1.10
 jupyter-console==6.2.0
 jupyter-core==4.7.0
 jupyter-sphinx==0.3.2
@@ -75,20 +75,20 @@ nbdime==2.1.0
 nbformat==5.0.8
 nest-asyncio==1.4.3
 notebook==6.1.6
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
 pandas==1.2.0
 pandocfilters==1.4.3
-parso==0.8.1
+parso==0.7.1
 particle==0.14.0
 pexpect==4.8.0
 phasespace==1.2.0
 pickleshare==0.7.5
 pillow==8.1.0
 prometheus-client==0.9.0
-prompt-toolkit==3.0.9
+prompt-toolkit==3.0.10
 protobuf==3.14.0
 ptyprocess==0.7.0
 pyasn1-modules==0.2.8
@@ -119,7 +119,7 @@ sphinx-copybutton==0.3.1
 sphinx-panels==0.5.2
 sphinx-thebe==0.0.8
 sphinx-togglebutton==0.2.3
-sphinx==3.4.2
+sphinx==3.4.3
 sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
 sphinxcontrib-htmlhelp==1.0.3
diff --git a/reqs/3.7/requirements-sty.txt b/reqs/3.7/requirements-sty.txt
index 68097bb9..90b8bd3c 100644
--- a/reqs/3.7/requirements-sty.txt
+++ b/reqs/3.7/requirements-sty.txt
@@ -28,7 +28,7 @@ docutils==0.16
 execnet==1.7.1
 expertsystem==0.6.5
 filelock==3.0.12
-flake8-blind-except==0.1.1
+flake8-blind-except==0.2.0
 flake8-bugbear==20.11.1
 flake8-builtins==1.5.3
 flake8-polyfill==1.0.2
@@ -64,7 +64,7 @@ mypy==0.790
 nbformat==5.0.8
 nbstripout==0.3.9
 nodeenv==1.5.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
diff --git a/reqs/3.7/requirements.txt b/reqs/3.7/requirements.txt
index 8e0fea93..ebd409cc 100644
--- a/reqs/3.7/requirements.txt
+++ b/reqs/3.7/requirements.txt
@@ -30,7 +30,7 @@ jsonschema==3.2.0
 keras-preprocessing==1.1.2
 markdown==3.3.3
 mpmath==1.1.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 pandas==1.2.0
diff --git a/reqs/3.8/requirements-dev.txt b/reqs/3.8/requirements-dev.txt
index c3f6aba9..921959d8 100644
--- a/reqs/3.8/requirements-dev.txt
+++ b/reqs/3.8/requirements-dev.txt
@@ -40,7 +40,7 @@ entrypoints==0.3
 execnet==1.7.1
 expertsystem==0.6.5
 filelock==3.0.12
-flake8-blind-except==0.1.1
+flake8-blind-except==0.2.0
 flake8-bugbear==20.11.1
 flake8-builtins==1.5.3
 flake8-polyfill==1.0.2
@@ -50,7 +50,7 @@ flatbuffers==1.12
 fuzzywuzzy==0.18.0
 gast==0.3.3
 gitdb==4.0.5
-gitpython==3.1.11
+gitpython==3.1.12
 google-auth-oauthlib==0.4.2
 google-auth==1.24.0
 google-pasta==0.2.0
@@ -68,21 +68,21 @@ iniconfig==1.1.1
 ipykernel==5.4.2
 ipython-genutils==0.2.0
 ipython==7.19.0
-ipywidgets==7.6.2
+ipywidgets==7.6.3
 isort==5.7.0
-jedi==0.18.0
+jedi==0.17.2
 jinja2==2.11.2
 json5==0.9.5
 jsonschema==3.2.0
 jupyter-cache==0.4.1
-jupyter-client==6.1.7
+jupyter-client==6.1.10
 jupyter-console==6.2.0
 jupyter-core==4.7.0
-jupyter-server==1.1.4
+jupyter-server==1.2.0
 jupyter-sphinx==0.3.2
 jupyter==1.0.0
 jupyterlab-code-formatter==1.4.1
-jupyterlab-server==2.0.0
+jupyterlab-server==2.1.0
 jupyterlab-widgets==1.0.0
 jupyterlab==3.0.1
 keras-preprocessing==1.1.2
@@ -109,13 +109,13 @@ nbstripout==0.3.9
 nest-asyncio==1.4.3
 nodeenv==1.5.0
 notebook==6.1.6
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
 pandas==1.2.0
 pandocfilters==1.4.3
-parso==0.8.1
+parso==0.7.1
 particle==0.14.0
 pathspec==0.8.1
 pbr==5.5.1
@@ -128,7 +128,7 @@ pip-tools==5.5.0
 pluggy==0.13.1
 pre-commit==2.9.3
 prometheus-client==0.9.0
-prompt-toolkit==3.0.9
+prompt-toolkit==3.0.10
 protobuf==3.14.0
 ptyprocess==0.7.0
 py==1.10.0
@@ -176,7 +176,7 @@ sphinx-copybutton==0.3.1
 sphinx-panels==0.5.2
 sphinx-thebe==0.0.8
 sphinx-togglebutton==0.2.3
-sphinx==3.4.2
+sphinx==3.4.3
 sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
 sphinxcontrib-htmlhelp==1.0.3
diff --git a/reqs/3.8/requirements-doc.txt b/reqs/3.8/requirements-doc.txt
index 0718f6d4..18a336fc 100644
--- a/reqs/3.8/requirements-doc.txt
+++ b/reqs/3.8/requirements-doc.txt
@@ -33,7 +33,7 @@ flatbuffers==1.12
 fuzzywuzzy==0.18.0
 gast==0.3.3
 gitdb==4.0.5
-gitpython==3.1.11
+gitpython==3.1.12
 google-auth-oauthlib==0.4.2
 google-auth==1.24.0
 google-pasta==0.2.0
@@ -48,12 +48,12 @@ importlib-metadata==3.3.0
 ipykernel==5.4.2
 ipython-genutils==0.2.0
 ipython==7.19.0
-ipywidgets==7.6.2
-jedi==0.18.0
+ipywidgets==7.6.3
+jedi==0.17.2
 jinja2==2.11.2
 jsonschema==3.2.0
 jupyter-cache==0.4.1
-jupyter-client==6.1.7
+jupyter-client==6.1.10
 jupyter-console==6.2.0
 jupyter-core==4.7.0
 jupyter-sphinx==0.3.2
@@ -75,20 +75,20 @@ nbdime==2.1.0
 nbformat==5.0.8
 nest-asyncio==1.4.3
 notebook==6.1.6
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
 pandas==1.2.0
 pandocfilters==1.4.3
-parso==0.8.1
+parso==0.7.1
 particle==0.14.0
 pexpect==4.8.0
 phasespace==1.2.0
 pickleshare==0.7.5
 pillow==8.1.0
 prometheus-client==0.9.0
-prompt-toolkit==3.0.9
+prompt-toolkit==3.0.10
 protobuf==3.14.0
 ptyprocess==0.7.0
 pyasn1-modules==0.2.8
@@ -119,7 +119,7 @@ sphinx-copybutton==0.3.1
 sphinx-panels==0.5.2
 sphinx-thebe==0.0.8
 sphinx-togglebutton==0.2.3
-sphinx==3.4.2
+sphinx==3.4.3
 sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
 sphinxcontrib-htmlhelp==1.0.3
diff --git a/reqs/3.8/requirements-sty.txt b/reqs/3.8/requirements-sty.txt
index 400ed844..1678ea3e 100644
--- a/reqs/3.8/requirements-sty.txt
+++ b/reqs/3.8/requirements-sty.txt
@@ -28,7 +28,7 @@ docutils==0.16
 execnet==1.7.1
 expertsystem==0.6.5
 filelock==3.0.12
-flake8-blind-except==0.1.1
+flake8-blind-except==0.2.0
 flake8-bugbear==20.11.1
 flake8-builtins==1.5.3
 flake8-polyfill==1.0.2
@@ -63,7 +63,7 @@ mypy==0.790
 nbformat==5.0.8
 nbstripout==0.3.9
 nodeenv==1.5.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
diff --git a/reqs/3.8/requirements.txt b/reqs/3.8/requirements.txt
index f51c5c27..e3881484 100644
--- a/reqs/3.8/requirements.txt
+++ b/reqs/3.8/requirements.txt
@@ -29,7 +29,7 @@ jsonschema==3.2.0
 keras-preprocessing==1.1.2
 markdown==3.3.3
 mpmath==1.1.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 pandas==1.2.0
diff --git a/setup.cfg b/setup.cfg
index 770d1677..151a6d77 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -42,7 +42,7 @@ setup_requires =
     setuptools_scm
 install_requires =
     amplitf
-    expertsystem >= 0.6.5
+    expertsystem == 0.6.5
     iminuit < 2.0
     numpy
     pandas


Test patch:
diff --git a/reqs/3.6/requirements-test.txt b/reqs/3.6/requirements-test.txt
index e9531611..84137ecd 100644
--- a/reqs/3.6/requirements-test.txt
+++ b/reqs/3.6/requirements-test.txt
@@ -39,7 +39,7 @@ kiwisolver==1.3.1
 markdown==3.3.3
 matplotlib==3.3.3
 mpmath==1.1.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
diff --git a/reqs/3.7/requirements-test.txt b/reqs/3.7/requirements-test.txt
index 75d098c3..9db41b35 100644
--- a/reqs/3.7/requirements-test.txt
+++ b/reqs/3.7/requirements-test.txt
@@ -38,7 +38,7 @@ kiwisolver==1.3.1
 markdown==3.3.3
 matplotlib==3.3.3
 mpmath==1.1.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8
diff --git a/reqs/3.8/requirements-test.txt b/reqs/3.8/requirements-test.txt
index 41d66902..f6a33fd3 100644
--- a/reqs/3.8/requirements-test.txt
+++ b/reqs/3.8/requirements-test.txt
@@ -37,7 +37,7 @@ kiwisolver==1.3.1
 markdown==3.3.3
 matplotlib==3.3.3
 mpmath==1.1.0
-numpy==1.19.4
+numpy==1.19.5
 oauthlib==3.1.0
 opt-einsum==3.3.0
 packaging==20.8