diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0ec8f44e..71b16ea1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -35,6 +35,10 @@ repos: - id: mixed-line-ending - id: trailing-whitespace + exclude: > + (?x)^( + .*\.svg + )$ - repo: https://github.com/ComPWA/repo-maintenance rev: 0.0.26 diff --git a/docs/report/.gitignore b/docs/report/.gitignore index ce25684b..a4579e98 100644 --- a/docs/report/.gitignore +++ b/docs/report/.gitignore @@ -4,5 +4,6 @@ *.png *.svg +!002-*.svg !006-*.svg !008-*.svg diff --git a/docs/report/002-collapsed-expression-tree.svg b/docs/report/002-collapsed-expression-tree.svg new file mode 100644 index 00000000..9e89e187 --- /dev/null +++ b/docs/report/002-collapsed-expression-tree.svg @@ -0,0 +1,67 @@ + + + + + + +%3 + + + +Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_() + +Add + + + +Symbol('I1')_(0,) + +I1 + + + +Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I1')_(0,) + + + + + +Symbol('I2')_(1,) + +I2 + + + +Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I2')_(1,) + + + + + +Symbol('I3')_(2,) + +I3 + + + +Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I3')_(2,) + + + + + +Symbol('I4')_(3,) + +I4 + + + +Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I4')_(3,) + + + + + diff --git a/docs/report/002-f0(980)-graph.svg b/docs/report/002-f0(980)-graph.svg new file mode 100644 index 00000000..aad04519 --- /dev/null +++ b/docs/report/002-f0(980)-graph.svg @@ -0,0 +1,67 @@ + + + + + + +%3 + + + +g0_edge0 +gamma + + + +g0_edge1 +pi0 + + + +g0_edge2 +pi0 + + + +g0_edge-1 +J/psi(1S) + + + +g0_node0 + + + +g0_edge-1->g0_node0 + + + + +g0_node0->g0_edge0 + + + + +g0_node1 + + + +g0_node0->g0_node1 + +f(0)(980) + + + +g0_node1->g0_edge1 + + + + +g0_node1->g0_edge2 + + + + diff --git a/docs/report/002-f0-graph.svg b/docs/report/002-f0-graph.svg new file mode 100644 index 00000000..e0ff6dd7 --- /dev/null +++ b/docs/report/002-f0-graph.svg @@ -0,0 +1,71 @@ + + + + + + +%3 + + + +g0_edge0 +gamma + + + +g0_edge1 +pi0 + + + +g0_edge2 +pi0 + + + +g0_edge-1 +J/psi(1S) + + + +g0_node0 + + + +g0_edge-1->g0_node0 + + + + +g0_node0->g0_edge0 + + + + +g0_node1 + + + +g0_node0->g0_node1 + +f(0)(1370) +f(0)(1500) +f(0)(1710) +f(0)(500) +f(0)(980) + + + +g0_node1->g0_edge1 + + + + +g0_node1->g0_edge2 + + + + diff --git a/docs/report/002-histogram-m12.svg b/docs/report/002-histogram-m12.svg new file mode 100644 index 00000000..2ad84fe1 --- /dev/null +++ b/docs/report/002-histogram-m12.svg @@ -0,0 +1,1261 @@ + + + + + + + + 2021-08-03T20:48:46.119018 + image/svg+xml + + + Matplotlib v3.4.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/report/002-runtime-vs-operations.svg b/docs/report/002-runtime-vs-operations.svg new file mode 100644 index 00000000..91e62f75 --- /dev/null +++ b/docs/report/002-runtime-vs-operations.svg @@ -0,0 +1,750 @@ + + + + + + + + 2021-08-03T20:48:46.741015 + image/svg+xml + + + Matplotlib v3.4.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/report/002-simple-expression-tree.svg b/docs/report/002-simple-expression-tree.svg new file mode 100644 index 00000000..a56cae89 --- /dev/null +++ b/docs/report/002-simple-expression-tree.svg @@ -0,0 +1,307 @@ + + + + + + +%3 + + + +Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_() + +Add + + + +Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,) + +Pow + + + +Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,) + + + + + +Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,) + +Pow + + + +Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,) + + + + + +Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,) + +Pow + + + +Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,) + + + + + +Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,) + +Pow + + + +Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,) + + + + + +Abs(Add(Symbol('A1'), Symbol('A2')))_(0, 0) + +Abs + + + +Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,)->Abs(Add(Symbol('A1'), Symbol('A2')))_(0, 0) + + + + + +Integer(2)_(0, 1) + +2 + + + +Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,)->Integer(2)_(0, 1) + + + + + +Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0) + +Add + + + +Abs(Add(Symbol('A1'), Symbol('A2')))_(0, 0)->Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0) + + + + + +Symbol('A1')_(0, 0, 0, 0) + +A1 + + + +Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0)->Symbol('A1')_(0, 0, 0, 0) + + + + + +Symbol('A2')_(0, 0, 0, 1) + +A2 + + + +Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0)->Symbol('A2')_(0, 0, 0, 1) + + + + + +Abs(Add(Symbol('A3'), Symbol('A4')))_(1, 0) + +Abs + + + +Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,)->Abs(Add(Symbol('A3'), Symbol('A4')))_(1, 0) + + + + + +Integer(2)_(1, 1) + +2 + + + +Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,)->Integer(2)_(1, 1) + + + + + +Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0) + +Add + + + +Abs(Add(Symbol('A3'), Symbol('A4')))_(1, 0)->Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0) + + + + + +Symbol('A3')_(1, 0, 0, 0) + +A3 + + + +Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0)->Symbol('A3')_(1, 0, 0, 0) + + + + + +Symbol('A4')_(1, 0, 0, 1) + +A4 + + + +Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0)->Symbol('A4')_(1, 0, 0, 1) + + + + + +Abs(Add(Symbol('A5'), Symbol('A6')))_(2, 0) + +Abs + + + +Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,)->Abs(Add(Symbol('A5'), Symbol('A6')))_(2, 0) + + + + + +Integer(2)_(2, 1) + +2 + + + +Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,)->Integer(2)_(2, 1) + + + + + +Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0) + +Add + + + +Abs(Add(Symbol('A5'), Symbol('A6')))_(2, 0)->Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0) + + + + + +Symbol('A5')_(2, 0, 0, 0) + +A5 + + + +Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0)->Symbol('A5')_(2, 0, 0, 0) + + + + + +Symbol('A6')_(2, 0, 0, 1) + +A6 + + + +Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0)->Symbol('A6')_(2, 0, 0, 1) + + + + + +Abs(Add(Symbol('A7'), Symbol('A8')))_(3, 0) + +Abs + + + +Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,)->Abs(Add(Symbol('A7'), Symbol('A8')))_(3, 0) + + + + + +Integer(2)_(3, 1) + +2 + + + +Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,)->Integer(2)_(3, 1) + + + + + +Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0) + +Add + + + +Abs(Add(Symbol('A7'), Symbol('A8')))_(3, 0)->Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0) + + + + + +Symbol('A7')_(3, 0, 0, 0) + +A7 + + + +Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0)->Symbol('A7')_(3, 0, 0, 0) + + + + + +Symbol('A8')_(3, 0, 0, 1) + +A8 + + + +Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0)->Symbol('A8')_(3, 0, 0, 1) + + + + + diff --git a/docs/report/002.ipynb b/docs/report/002.ipynb index 1af70f5a..29acfdce 100644 --- a/docs/report/002.ipynb +++ b/docs/report/002.ipynb @@ -62,6 +62,7 @@ }, "outputs": [], "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", "import inspect\n", "import logging\n", "import timeit\n", @@ -80,7 +81,7 @@ "from tensorwaves.data.transform import HelicityTransformer\n", "from tensorwaves.model import LambdifiedFunction, SympyModel\n", "\n", - "logger = logging.getLogger()" + "LOGGER = logging.getLogger()" ] }, { @@ -107,94 +108,19 @@ }, "outputs": [], "source": [ - "logger.setLevel(logging.ERROR)" + "LOGGER.setLevel(logging.ERROR)" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", - "\n", - "\n", - "g0_edge0\n", - "gamma\n", - "\n", - "\n", - "\n", - "g0_edge1\n", - "pi0\n", - "\n", - "\n", - "\n", - "g0_edge2\n", - "pi0\n", - "\n", - "\n", - "\n", - "g0_edge-1\n", - "J/psi(1S)\n", - "\n", - "\n", - "\n", - "g0_node0\n", - "\n", - "\n", - "\n", - "g0_edge-1->g0_node0\n", - "\n", - "\n", - "\n", - "\n", - "g0_node0->g0_edge0\n", - "\n", - "\n", - "\n", - "\n", - "g0_node1\n", - "\n", - "\n", - "\n", - "g0_node0->g0_node1\n", - "\n", - "f(0)(980)\n", - "\n", - "\n", - "\n", - "g0_node1->g0_edge1\n", - "\n", - "\n", - "\n", - "\n", - "g0_node1->g0_edge2\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], + "metadata": { + "keep_output": false, + "tags": [ + "remove-output" + ] + }, + "outputs": [], "source": [ "result = q.generate_transitions(\n", " initial_state=(\"J/psi(1S)\", [-1, +1]),\n", @@ -207,6 +133,29 @@ "graphviz.Source(dot)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "graphviz.Source(dot).render(\"002-f0(980)-graph\", format=\"svg\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](002-f0(980)-graph.svg)" + ] + }, { "cell_type": "code", "execution_count": null, @@ -278,14 +227,14 @@ { "data": { "text/plain": [ - "['A[J/\\\\psi(1S)_{-1} \\\\to f_{0}(980)_{0} \\\\gamma_{+1,L=2,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", - " 'A[J/\\\\psi(1S)_{-1} \\\\to f_{0}(980)_{0} \\\\gamma_{+1,L=0,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", + "['A[J/\\\\psi(1S)_{+1} \\\\to f_{0}(980)_{0} \\\\gamma_{-1,L=2,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", + " 'A[J/\\\\psi(1S)_{+1} \\\\to f_{0}(980)_{0} \\\\gamma_{-1,L=0,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", " 'A[J/\\\\psi(1S)_{-1} \\\\to f_{0}(980)_{0} \\\\gamma_{-1,L=2,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", " 'A[J/\\\\psi(1S)_{-1} \\\\to f_{0}(980)_{0} \\\\gamma_{-1,L=0,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", + " 'A[J/\\\\psi(1S)_{-1} \\\\to f_{0}(980)_{0} \\\\gamma_{+1,L=2,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", + " 'A[J/\\\\psi(1S)_{-1} \\\\to f_{0}(980)_{0} \\\\gamma_{+1,L=0,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", " 'A[J/\\\\psi(1S)_{+1} \\\\to f_{0}(980)_{0} \\\\gamma_{+1,L=2,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", - " 'A[J/\\\\psi(1S)_{+1} \\\\to f_{0}(980)_{0} \\\\gamma_{+1,L=0,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", - " 'A[J/\\\\psi(1S)_{+1} \\\\to f_{0}(980)_{0} \\\\gamma_{-1,L=2,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]',\n", - " 'A[J/\\\\psi(1S)_{+1} \\\\to f_{0}(980)_{0} \\\\gamma_{-1,L=0,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]']" + " 'A[J/\\\\psi(1S)_{+1} \\\\to f_{0}(980)_{0} \\\\gamma_{+1,L=0,S=1}; f_{0}(980)_{0} \\\\to \\\\pi^{0}_{0} \\\\pi^{0}_{0,L=0,S=0}]']" ] }, "execution_count": null, @@ -387,93 +336,41 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", - "\n", - "\n", - "Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()\n", - "\n", - "Add\n", - "\n", - "\n", - "\n", - "Symbol('I1')_(0,)\n", - "\n", - "I1\n", - "\n", - "\n", - "\n", - "Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I1')_(0,)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('I2')_(1,)\n", - "\n", - "I2\n", - "\n", - "\n", - "\n", - "Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I2')_(1,)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('I3')_(2,)\n", - "\n", - "I3\n", - "\n", - "\n", - "\n", - "Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I3')_(2,)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('I4')_(3,)\n", - "\n", - "I4\n", - "\n", - "\n", - "\n", - "Add(Symbol('I1'), Symbol('I2'), Symbol('I3'), Symbol('I4'))_()->Symbol('I4')_(3,)\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], + "metadata": { + "keep_output": false, + "tags": [ + "remove-output" + ] + }, + "outputs": [], "source": [ "dot = sp.dotprint(intensity_expr)\n", "graphviz.Source(dot)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "graphviz.Source(dot).render(\"002-collapsed-expression-tree\", format=\"svg\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](002-collapsed-expression-tree.svg)" + ] + }, { "cell_type": "code", "execution_count": null, @@ -501,333 +398,41 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", - "\n", - "\n", - "Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()\n", - "\n", - "Add\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,)\n", - "\n", - "Pow\n", - "\n", - "\n", - "\n", - "Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,)\n", - "\n", - "Pow\n", - "\n", - "\n", - "\n", - "Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,)\n", - "\n", - "Pow\n", - "\n", - "\n", - "\n", - "Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,)\n", - "\n", - "Pow\n", - "\n", - "\n", - "\n", - "Add(Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2)), Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2)), Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2)), Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2)))_()->Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A1'), Symbol('A2')))_(0, 0)\n", - "\n", - "Abs\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,)->Abs(Add(Symbol('A1'), Symbol('A2')))_(0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Integer(2)_(0, 1)\n", - "\n", - "2\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A1'), Symbol('A2'))), Integer(2))_(0,)->Integer(2)_(0, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0)\n", - "\n", - "Add\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A1'), Symbol('A2')))_(0, 0)->Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A1')_(0, 0, 0, 0)\n", - "\n", - "A1\n", - "\n", - "\n", - "\n", - "Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0)->Symbol('A1')_(0, 0, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A2')_(0, 0, 0, 1)\n", - "\n", - "A2\n", - "\n", - "\n", - "\n", - "Add(Symbol('A1'), Symbol('A2'))_(0, 0, 0)->Symbol('A2')_(0, 0, 0, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A3'), Symbol('A4')))_(1, 0)\n", - "\n", - "Abs\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,)->Abs(Add(Symbol('A3'), Symbol('A4')))_(1, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Integer(2)_(1, 1)\n", - "\n", - "2\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A3'), Symbol('A4'))), Integer(2))_(1,)->Integer(2)_(1, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0)\n", - "\n", - "Add\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A3'), Symbol('A4')))_(1, 0)->Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A3')_(1, 0, 0, 0)\n", - "\n", - "A3\n", - "\n", - "\n", - "\n", - "Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0)->Symbol('A3')_(1, 0, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A4')_(1, 0, 0, 1)\n", - "\n", - "A4\n", - "\n", - "\n", - "\n", - "Add(Symbol('A3'), Symbol('A4'))_(1, 0, 0)->Symbol('A4')_(1, 0, 0, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A5'), Symbol('A6')))_(2, 0)\n", - "\n", - "Abs\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,)->Abs(Add(Symbol('A5'), Symbol('A6')))_(2, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Integer(2)_(2, 1)\n", - "\n", - "2\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A5'), Symbol('A6'))), Integer(2))_(2,)->Integer(2)_(2, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0)\n", - "\n", - "Add\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A5'), Symbol('A6')))_(2, 0)->Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A5')_(2, 0, 0, 0)\n", - "\n", - "A5\n", - "\n", - "\n", - "\n", - "Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0)->Symbol('A5')_(2, 0, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A6')_(2, 0, 0, 1)\n", - "\n", - "A6\n", - "\n", - "\n", - "\n", - "Add(Symbol('A5'), Symbol('A6'))_(2, 0, 0)->Symbol('A6')_(2, 0, 0, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A7'), Symbol('A8')))_(3, 0)\n", - "\n", - "Abs\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,)->Abs(Add(Symbol('A7'), Symbol('A8')))_(3, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Integer(2)_(3, 1)\n", - "\n", - "2\n", - "\n", - "\n", - "\n", - "Pow(Abs(Add(Symbol('A7'), Symbol('A8'))), Integer(2))_(3,)->Integer(2)_(3, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0)\n", - "\n", - "Add\n", - "\n", - "\n", - "\n", - "Abs(Add(Symbol('A7'), Symbol('A8')))_(3, 0)->Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A7')_(3, 0, 0, 0)\n", - "\n", - "A7\n", - "\n", - "\n", - "\n", - "Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0)->Symbol('A7')_(3, 0, 0, 0)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Symbol('A8')_(3, 0, 0, 1)\n", - "\n", - "A8\n", - "\n", - "\n", - "\n", - "Add(Symbol('A7'), Symbol('A8'))_(3, 0, 0)->Symbol('A8')_(3, 0, 0, 1)\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], + "metadata": { + "keep_output": false, + "tags": [ + "remove-output" + ] + }, + "outputs": [], "source": [ "dot = sp.dotprint(amplitude_expr)\n", "graphviz.Source(dot)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "graphviz.Source(dot).render(\"002-simple-expression-tree\", format=\"svg\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](002-simple-expression-tree.svg)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -876,8 +481,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.36 s, sys: 6.02 ms, total: 1.37 s\n", - "Wall time: 1.37 s\n" + "CPU times: user 1.46 s, sys: 703 µs, total: 1.46 s\n", + "Wall time: 1.46 s\n" ] } ], @@ -917,7 +522,7 @@ }, "outputs": [], "source": [ - "logger.setLevel(logging.INFO)" + "LOGGER.setLevel(logging.INFO)" ] }, { @@ -939,8 +544,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.47 s, sys: 24.4 ms, total: 1.49 s\n", - "Wall time: 1.49 s\n" + "CPU times: user 1.56 s, sys: 4.94 ms, total: 1.56 s\n", + "Wall time: 1.56 s\n" ] } ], @@ -986,8 +591,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 427 ms, sys: 467 µs, total: 427 ms\n", - "Wall time: 423 ms\n" + "CPU times: user 547 ms, sys: 3.85 ms, total: 550 ms\n", + "Wall time: 547 ms\n" ] } ], @@ -1134,7 +739,7 @@ }, "outputs": [], "source": [ - "logger.setLevel(logging.ERROR)\n", + "LOGGER.setLevel(logging.ERROR)\n", "warnings.filterwarnings(\"ignore\")" ] }, @@ -1160,30 +765,17 @@ "cell_type": "code", "execution_count": null, "metadata": { - "jupyter": { - "source_hidden": true - }, + "keep_output": false, "tags": [ - "hide-input" + "hide-input", + "remove-output" ] }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "plt.hist(phsp_set[\"m_12\"], bins=50, alpha=0.5, density=True)\n", - "plt.hist(\n", + "fig, ax = plt.subplots(figsize=(8, 4))\n", + "ax.hist(phsp_set[\"m_12\"], bins=50, alpha=0.5, density=True)\n", + "ax.hist(\n", " phsp_set[\"m_12\"],\n", " bins=50,\n", " alpha=0.5,\n", @@ -1193,6 +785,30 @@ "plt.show()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "jupyter": { + "source_hidden": true + }, + "keep_output": false, + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "fig.savefig(\"002-histogram-m12.svg\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](002-histogram-m12.svg)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1255,8 +871,8 @@ { "data": { "text/plain": [ - "array([0.14315048, 0.15975695, 0.03831396, ..., 0.22928159, 0.75754039,\n", - " 0.00096398])" + "array([0.03229431, 0.00087071, 0.01893205, ..., 0.01543035, 0.00925805,\n", + " 0.00019983])" ] }, "execution_count": null, @@ -1286,7 +902,7 @@ { "data": { "text/plain": [ - "-5.586732870973974e-11" + "2.576638731189573e-10" ] }, "execution_count": null, @@ -1387,67 +1003,67 @@ " \n", " complete model\n", " 823\n", - " 1.381619\n", + " 1.471643\n", " \n", " \n", " I1\n", - " 203\n", - " 0.385902\n", + " 207\n", + " 0.342924\n", " \n", " \n", " I2\n", " 209\n", - " 0.339487\n", + " 0.333298\n", " \n", " \n", " I3\n", - " 201\n", - " 0.345043\n", + " 203\n", + " 0.352337\n", " \n", " \n", " I4\n", - " 207\n", - " 0.418454\n", + " 201\n", + " 0.530211\n", " \n", " \n", " A1\n", - " 100\n", - " 0.050298\n", + " 102\n", + " 0.105574\n", " \n", " \n", " A2\n", - " 100\n", - " 0.048078\n", + " 102\n", + " 0.058180\n", " \n", " \n", " A3\n", " 103\n", - " 0.058804\n", + " 0.064527\n", " \n", " \n", " A4\n", " 103\n", - " 0.052960\n", + " 0.060311\n", " \n", " \n", " A5\n", - " 99\n", - " 0.052243\n", + " 100\n", + " 0.062091\n", " \n", " \n", " A6\n", - " 99\n", - " 0.054528\n", + " 100\n", + " 0.077227\n", " \n", " \n", " A7\n", - " 102\n", - " 0.049883\n", + " 99\n", + " 0.058168\n", " \n", " \n", " A8\n", - " 102\n", - " 0.048392\n", + " 99\n", + " 0.054510\n", " \n", " \n", "\n", @@ -1455,19 +1071,19 @@ ], "text/plain": [ " operations runtime (s)\n", - "complete model 823 1.381619\n", - "I1 203 0.385902\n", - "I2 209 0.339487\n", - "I3 201 0.345043\n", - "I4 207 0.418454\n", - "A1 100 0.050298\n", - "A2 100 0.048078\n", - "A3 103 0.058804\n", - "A4 103 0.052960\n", - "A5 99 0.052243\n", - "A6 99 0.054528\n", - "A7 102 0.049883\n", - "A8 102 0.048392" + "complete model 823 1.471643\n", + "I1 207 0.342924\n", + "I2 209 0.333298\n", + "I3 203 0.352337\n", + "I4 201 0.530211\n", + "A1 102 0.105574\n", + "A2 102 0.058180\n", + "A3 103 0.064527\n", + "A4 103 0.060311\n", + "A5 100 0.062091\n", + "A6 100 0.077227\n", + "A7 99 0.058168\n", + "A8 99 0.054510" ] }, "execution_count": null, @@ -1599,47 +1215,47 @@ " \n", " 0\n", " 0\n", - " 1.070431\n", + " 0.647902\n", " \n", " \n", " 1\n", " 3\n", - " 2.786139\n", + " 1.629346\n", " \n", " \n", " 2\n", " 7\n", - " 4.095383\n", + " 1.780732\n", " \n", " \n", " 3\n", " 12\n", - " 4.202006\n", + " 3.248333\n", " \n", " \n", " 4\n", " 14\n", - " 3.959836\n", + " 2.890283\n", " \n", " \n", " 5\n", " 16\n", - " 4.805261\n", + " 2.249974\n", " \n", " \n", " 6\n", " 19\n", - " 4.675037\n", + " 2.533441\n", " \n", " \n", " 7\n", " 22\n", - " 3.587927\n", + " 2.737607\n", " \n", " \n", " 8\n", " 25\n", - " 3.912913\n", + " 2.913332\n", " \n", " \n", "\n", @@ -1647,15 +1263,15 @@ ], "text/plain": [ " operations runtime (ms)\n", - "0 0 1.070431\n", - "1 3 2.786139\n", - "2 7 4.095383\n", - "3 12 4.202006\n", - "4 14 3.959836\n", - "5 16 4.805261\n", - "6 19 4.675037\n", - "7 22 3.587927\n", - "8 25 3.912913" + "0 0 0.647902\n", + "1 3 1.629346\n", + "2 7 1.780732\n", + "3 12 3.248333\n", + "4 14 2.890283\n", + "5 16 2.249974\n", + "6 19 2.533441\n", + "7 22 2.737607\n", + "8 25 2.913332" ] }, "execution_count": null, @@ -1677,33 +1293,43 @@ "cell_type": "code", "execution_count": null, "metadata": { - "jupyter": { - "source_hidden": true - }, + "keep_output": false, "tags": [ - "hide-input" + "hide-input", + "remove-output" ] }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ + "fig, ax = plt.subplots(figsize=(8, 4))\n", "plt.scatter(x=df[\"operations\"], y=df[\"runtime (ms)\"])\n", - "ax = plt.gca()\n", "ax.set_ylim(bottom=0)\n", "ax.set_xlabel(\"operations\")\n", - "ax.set_ylabel(\"runtime (ms)\");" + "ax.set_ylabel(\"runtime (ms)\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "fig.savefig(\"002-runtime-vs-operations.svg\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](002-runtime-vs-operations.svg)" ] }, { @@ -1782,8 +1408,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 327 ms, sys: 3.81 ms, total: 331 ms\n", - "Wall time: 332 ms\n" + "CPU times: user 314 ms, sys: 135 µs, total: 314 ms\n", + "Wall time: 313 ms\n" ] }, { @@ -1874,7 +1500,7 @@ "output_type": "stream", "text": [ "CPU times: user 7 µs, sys: 1 µs, total: 8 µs\n", - "Wall time: 14.5 µs\n" + "Wall time: 15.5 µs\n" ] } ], @@ -1995,25 +1621,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 9 µs, sys: 1e+03 ns, total: 10 µs\n", - "Wall time: 18.4 µs\n" + "CPU times: user 8 µs, sys: 1 µs, total: 9 µs\n", + "Wall time: 17.4 µs\n" ] - }, - { - "data": { - "text/plain": [ - ".recombined_function(*args)>" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "%time\n", - "treewise_lambdified = optimized_lambdify(free_symbols, expression, \"numpy\")\n", - "treewise_lambdified" + "treewise_lambdified = optimized_lambdify(free_symbols, expression, \"numpy\")" ] }, { @@ -2024,8 +1639,8 @@ { "data": { "text/plain": [ - "array([0.14315048, 0.15975695, 0.03831396, ..., 0.22928159, 0.75754039,\n", - " 0.00096398])" + "array([0.03229431, 0.00087071, 0.01893205, ..., 0.01543035, 0.00925805,\n", + " 0.00019983])" ] }, "execution_count": null, @@ -2055,7 +1670,7 @@ { "data": { "text/plain": [ - "-5.5867328462064595e-11" + "2.576638734685813e-10" ] }, "execution_count": null, @@ -2100,7 +1715,8 @@ "execution_count": null, "metadata": { "tags": [ - "hide-input" + "hide-input", + "remove-output" ] }, "outputs": [ @@ -2180,7 +1796,7 @@ "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": null, @@ -2204,6 +1820,29 @@ "graphviz.Source(dot)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "graphviz.Source(dot).render(\"002-f0-graph\", format=\"svg\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](002-f0-graph.svg)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2225,20 +1864,38 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 4.57 s, sys: 3.16 ms, total: 4.57 s\n", + "Wall time: 4.57 s\n" + ] + } + ], "source": [ "%%time\n", - "sp.lambdify(new_free_symbols, new_expression)" + "np_expr = sp.lambdify(new_free_symbols, new_expression)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 261 ms, sys: 87 µs, total: 262 ms\n", + "Wall time: 260 ms\n" + ] + } + ], "source": [ "%%time\n", - "optimized_lambdify(new_free_symbols, new_expression)" + "np_expr = optimized_lambdify(new_free_symbols, new_expression)" ] } ], @@ -2259,7 +1916,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.8.11" } }, "nbformat": 4,