diff --git a/.cspell.json b/.cspell.json index 983eca55..2dbbd97b 100644 --- a/.cspell.json +++ b/.cspell.json @@ -73,10 +73,14 @@ "eval", "flatté", "functools", + "Hankel", "helicities", "helicity", + "Hippel", "itertools", "JHEP", + "JPAC", + "Ketzer", "kwargs", "Källén", "lambdification", @@ -106,6 +110,7 @@ "pytest", "PYTHONHASHSEED", "qrules", + "Quigg", "Reana", "roadmap", "Schwarz", @@ -121,6 +126,8 @@ "traceback", "unbinned", "unitarity", + "unitless", + "unnormalized", "unphysical", "vectorize", "weisskopf", @@ -297,6 +304,7 @@ "phsp", "pkpi", "pmatrix", + "ppnp", "preorder", "prereleased", "println", diff --git a/.readthedocs.yml b/.readthedocs.yml index b7807f25..d529b75c 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -15,13 +15,9 @@ build: tools: python: "3.10" jobs: + pre_install: + - ./docs/install-julia-on-rtd.sh post_install: - curl -LsSf https://astral.sh/uv/install.sh | sh - |- /home/docs/.cargo/bin/uv pip install --system -c .constraints/py3.10.txt -e .[doc] - - | - wget https://julialang-s3.julialang.org/bin/linux/x64/1.9/julia-1.9.2-linux-x86_64.tar.gz - - tar xzf julia-1.9.2-linux-x86_64.tar.gz - - mkdir bin - - ln -s $PWD/julia-1.9.2/bin/julia bin/julia - - ./bin/julia docs/InstallIJulia.jl diff --git a/docs/InstallIJulia.jl b/docs/InstallIJulia.jl index 3c12424e..5b1b88e2 100644 --- a/docs/InstallIJulia.jl +++ b/docs/InstallIJulia.jl @@ -2,4 +2,4 @@ import Pkg Pkg.add("IJulia") import IJulia -IJulia.installkernel("julia") +IJulia.installkernel("julia-compwa.github.io") diff --git a/docs/bibliography.bib b/docs/bibliography.bib index b81a5385..624afe1c 100644 --- a/docs/bibliography.bib +++ b/docs/bibliography.bib @@ -1,5 +1,4 @@ - -@article{aitchisonMatrixFormalismOverlapping1972, +@article{Aitchison:1972ay, title = {The 𝐾-Matrix Formalism for Overlapping Resonances}, author = {Aitchison, I.J.R.}, year = {1972}, @@ -19,11 +18,8 @@ @article{aitchisonUnitarityAnalyticityCrossing2015 year = {2015}, month = jul, journal = {arXiv:1507.02697 [hep-ph]}, - eprint = {1507.02697}, - eprinttype = {arxiv}, - primaryclass = {hep-ph}, url = {http://arxiv.org/abs/1507.02697}, - archiveprefix = {arXiv} + archiveprefix = {arxiv} } @book{beckTestDrivenDevelopmentExample2003, @@ -32,23 +28,34 @@ @book{beckTestDrivenDevelopmentExample2003 author = {Beck, Kent}, year = {2003}, series = {The {{Addison-Wesley}} Signature Series}, - publisher = {{Addison-Wesley}}, - address = {{Boston}}, + publisher = {Addison-Wesley}, + address = {Boston}, isbn = {978-0-321-14653-3}, lccn = {QA76.76.T48 B43 2003} } -@book{bycklingParticleKinematics1973, +@book{Blatt:1952ije, + title = {Theoretical {{Nuclear Physics}}}, + author = {Blatt, John M and Weisskopf, Victor F}, + year = {1979}, + publisher = {Springer New York}, + address = {New York, NY}, + url = {https://doi.org/10.1007/978-1-4612-9959-2}, + isbn = {978-1-4612-9959-2 978-1-4612-9961-5}, + annotation = {OCLC: 840280777} +} + +@book{Byckling:1971vca, title = {Particle {{Kinematics}}}, author = {Byckling, Eero and Kajantie, Keijo}, year = {1973}, - publisher = {{Wiley}}, - address = {{London, New York}}, + publisher = {Wiley}, + address = {London, New York}, isbn = {978-0-471-12885-4}, lccn = {QC794.6.K5 B95} } -@article{chungPartialWaveAnalysis1995, +@article{Chung:1995dx, title = {{Partial wave analysis in 𝐾-matrix formalism}}, author = {Chung, Suh-Urk and Brose, J. and Hackmann, R. and Klempt, E. and Spanier, S. and Strassburger, C.}, year = {1995}, @@ -68,7 +75,7 @@ @techreport{chungSpinFormalismsUpdated2014 year = {2014}, month = jul, pages = {BNL--76975-2006-IR, 890945}, - institution = {{Brookhaven National Laboratory}}, + institution = {Brookhaven National Laboratory}, url = {https://suchung.web.cern.ch/spinfm1.pdf} } @@ -78,13 +85,13 @@ @book{gammaDesignPatternsElements1995 editor = {Gamma, Erich}, year = {1995}, series = {Addison-{{Wesley}} Professional Computing Series}, - publisher = {{Addison-Wesley}}, - address = {{Reading, Mass}}, + publisher = {Addison-Wesley}, + address = {Reading, Mass}, isbn = {978-0-201-63361-0}, lccn = {QA76.64 .D47 1995} } -@article{jacobGeneralTheoryCollisions1959, +@article{Jacob:1959at, title = {On the General Theory of Collisions for Particles with Spin}, author = {Jacob, M. and Wick, G.C.}, year = {1959}, @@ -98,6 +105,35 @@ @article{jacobGeneralTheoryCollisions1959 url = {https://linkinghub.elsevier.com/retrieve/pii/000349165990051X} } +@article{JPAC:2019ufm, + title = {Dalitz-Plot Decomposition for Three-Body Decays}, + author = {Mikhasenko, M. and Albaladejo, M. and Bibrzycki, Ł. and {Fernandez-Ramirez}, C. and Mathieu, V. and Mitchell, S. and Pappagallo, M. and Pilloni, A. and Winney, D. and Skwarnicki, T. and Szczepaniak, A. P.}, + year = {2020}, + month = feb, + journal = {Physical Review D: Particles and Fields}, + volume = {101}, + number = {3}, + pages = {034033}, + issn = {2470-0010, 2470-0029}, + doi = {10.1103/PhysRevD.101.034033}, + url = {https://journals.aps.org/prd/abstract/10.1103/PhysRevD.101.034033}, + archiveprefix = {arxiv} +} + +@article{Ketzer:2019wmd, + title = {Light-Meson Spectroscopy with {{COMPASS}}}, + author = {Ketzer, B. and Grube, B. and Ryabchikov, D.}, + year = {2020}, + month = jul, + journal = {Progress in Particle and Nuclear Physics}, + volume = {113}, + pages = {103755}, + issn = {01466410}, + doi = {10.1016/j.ppnp.2020.103755}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S0146641020300028}, + archiveprefix = {arxiv} +} + @misc{kutschkeAngularDistributionCookbook1996, title = {An {{Angular Distribution Cookbook}}}, author = {Kutschke, Rob}, @@ -106,7 +142,7 @@ @misc{kutschkeAngularDistributionCookbook1996 url = {https://home.fnal.gov/~kutschke/Angdist/angdist.ps} } -@article{marangottoHelicityAmplitudesGeneric2020, +@article{Marangotto:2019ucc, title = {Helicity {{Amplitudes}} for {{Generic Multibody Particle Decays Featuring Multiple Decay Chains}}}, author = {Marangotto, Daniele}, editor = {Vagnozzi, Sunny}, @@ -117,7 +153,8 @@ @article{marangottoHelicityAmplitudesGeneric2020 pages = {1--15}, issn = {1687-7365, 1687-7357}, doi = {10.1155/2020/6674595}, - url = {https://www.hindawi.com/journals/ahep/2020/6674595/} + url = {https://www.hindawi.com/journals/ahep/2020/6674595/}, + archiveprefix = {arxiv} } @book{martinCleanCodeHandbook2009, @@ -125,8 +162,8 @@ @book{martinCleanCodeHandbook2009 shorttitle = {Clean Code}, editor = {Martin, Robert C.}, year = {2009}, - publisher = {{Prentice Hall}}, - address = {{Upper Saddle River, NJ}}, + publisher = {Prentice Hall}, + address = {Upper Saddle River, NJ}, isbn = {978-0-13-235088-4}, lccn = {QA76.76.D47 C583 2009} } @@ -136,35 +173,18 @@ @misc{meyerMatrixTutorial2008 author = {Meyer, Curtis A.}, year = {2008}, month = oct, - address = {{Munich, Germany}}, + address = {Munich, Germany}, url = {http://www.curtismeyer.com/talks/PWA_Munich_KMatrix.pdf} } -@article{mikhasenkoDalitzplotDecompositionThreebody2020, - title = {Dalitz-Plot Decomposition for Three-Body Decays}, - author = {Mikhasenko, M. and Albaladejo, M. and Bibrzycki, Ł. and {Fernandez-Ramirez}, C. and Mathieu, V. and Mitchell, S. and Pappagallo, M. and Pilloni, A. and Winney, D. and Skwarnicki, T. and Szczepaniak, A. P.}, - year = {2020}, - month = feb, - journal = {Physical Review D}, - volume = {101}, - number = {3}, - eprint = {1910.04566}, - eprinttype = {arxiv}, - pages = {034033}, - issn = {2470-0010, 2470-0029}, - doi = {10.1103/PhysRevD.101.034033}, - url = {https://journals.aps.org/prd/abstract/10.1103/PhysRevD.101.034033}, - archiveprefix = {arXiv} -} - @book{percivalTestDrivenDevelopmentPython2017, title = {Test-{{Driven Development}} with {{Python}}: {{Obey}} the {{Testing Goat}}: {{Using Django}}, {{Selenium}}, and {{JavaScript}}}, shorttitle = {Test-Driven Development with {{Python}}}, author = {Percival, Harry}, year = {2017}, edition = {Second edition}, - publisher = {{O'Reilly Media}}, - address = {{Sebastopol, CA}}, + publisher = {O'Reilly Media}, + address = {Sebastopol, CA}, isbn = {978-1-4919-5870-4}, lccn = {QA76.73.P98 P46 2017}, annotation = {OCLC: ocn953432202} @@ -175,11 +195,11 @@ @misc{petersPartialWaveAnalysis2004 author = {Peters, Klaus}, year = {2004}, month = jun, - address = {{Varenna}}, + address = {Varenna}, url = {https://slideplayer.com/slide/1676572} } -@misc{richmanExperimenterGuideHelicity1984, +@misc{Richman:1984gh, title = {An {{Experimenter}}'s {{Guide}} to the {{Helicity Formalism}}}, author = {Richman, Jeffrey D.}, year = {1984}, @@ -191,9 +211,9 @@ @book{sedgewickAlgorithms2011 title = {Algorithms}, author = {Sedgewick, Robert and Wayne, Kevin Daniel}, year = {2011}, - edition = {Fourth}, - publisher = {{Addison-Wesley}}, - address = {{Upper Saddle River, NJ}}, + edition = {4th}, + publisher = {Addison-Wesley}, + address = {Upper Saddle River, NJ}, isbn = {978-0-321-57351-3}, lccn = {QA76.9.A43 S429 2011} } @@ -204,21 +224,36 @@ @book{slatkinEffectivePython902019 author = {Slatkin, Brett}, year = {2019}, month = nov, - publisher = {{Addison-Wesley}}, + publisher = {Addison-Wesley}, isbn = {978-0-13-485398-7}, annotation = {OCLC: 1127093006} } -@article{wangNovelMethodTest2020, - title = {A Novel Method to Test Particle Ordering and Final State Alignment in Helicity Formalism}, - author = {Wang, Mengzhen and Jiang, Yi and Liu, Yinrui and Qian, Wenbin and Lyu, Xiaorui and Zhang, Liming}, - year = {2020}, - month = dec, - journal = {arXiv}, - eprint = {2012.03699}, - eprinttype = {arxiv}, - url = {http://arxiv.org/abs/2012.03699}, - archiveprefix = {arXiv} +@article{VonHippel:1972fg, + title = {Centrifugal-{{Barrier Effects}} in {{Resonance Partial Decay Widths}}, {{Shapes}}, and {{Production Amplitudes}}}, + author = {{von Hippel}, Frank and Quigg, C.}, + year = {1972}, + month = feb, + journal = {Physical Review D}, + volume = {5}, + number = {3}, + pages = {624--638}, + issn = {0556-2821}, + doi = {10.1103/PhysRevD.5.624}, + url = {https://link.aps.org/doi/10.1103/PhysRevD.5.624} } - +@article{Wang:2020giv, + title = {A Novel Method to Test Particle Ordering and Final State Alignment in Helicity Formalism}, + author = {Wang, Mengzhen and Jiang, Yi and Liu, Yinrui and Qian, Wenbin and Lyu, Xiao-Rui and Zhang, Liming}, + year = {2021}, + month = jun, + journal = {Chinese Physics C}, + volume = {45}, + number = {6}, + pages = {063103}, + issn = {1674-1137, 2058-6132}, + doi = {10.1088/1674-1137/abf139}, + url = {https://iopscience.iop.org/article/10.1088/1674-1137/abf139}, + archiveprefix = {arxiv} +} diff --git a/docs/conf.py b/docs/conf.py index 214f19a9..9357a3c2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,6 +8,7 @@ import os import shutil +import subprocess # noqa: S404 import sys from sphinx_api_relink.helpers import ( @@ -23,7 +24,7 @@ def get_nb_exclusion_patterns() -> list[str]: - exclusions = [ + exclusions = { "adr/001/*", "adr/002/*", "report/000*", @@ -40,20 +41,27 @@ def get_nb_exclusion_patterns() -> list[str]: "report/015*", "report/017*", "report/018*", - "report/019*", "report/020*", "report/021*", "report/022*", - ] - julia_notebooks = [ + } + julia_notebooks = { "report/019*", - ] - if "READTHEDOCS" not in os.environ and shutil.which("julia") is None: - exclusions.extend(julia_notebooks) - return exclusions + } + if shutil.which("julia") is None or "READTHEDOCS" in os.environ: + exclusions.update(julia_notebooks) + return sorted(exclusions) + + +def install_ijulia() -> None: + if shutil.which("julia") is None: + return + if "EXECUTE_NB" in os.environ or "FORCE_EXECUTE_NB" in os.environ: + subprocess.check_call(["julia", "InstallIJulia.jl"]) # noqa: S603, S607 _list_technical_reports.main() +install_ijulia() set_intersphinx_version_remapping({ "ipython": { "8.12.2": "8.12.1", diff --git a/docs/develop.md b/docs/develop.md index e76f9048..70d8b2d9 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -327,10 +327,10 @@ juliaup default release ```shell cd ~/Downloads -tar xzf julia-1.9.2-linux-x86_64.tar.gz +tar xzf julia-1.10.3-linux-x86_64.tar.gz mkdir ~/opt ~/bin -mv julia-1.9.2 ~/opt/ -ln -s ~/opt/julia-1.9.2/bin/julia ~/bin/julia +mv julia-1.10.3 ~/opt/ +ln -s ~/opt/julia-1.10.3/bin/julia ~/bin/julia ``` Make sure that `~/bin` is listed in the `PATH` environment variable, e.g. by updating it @@ -345,9 +345,9 @@ export PATH="~/bin:$PATH" ```shell cd ~/Downloads -tar xzf julia-1.9.2-linux-x86_64.tar.gz -sudo mv julia-1.9.2 /opt/ -sudo ln -s /opt/julia-1.9.2/bin/julia /usr/local/bin/julia +tar xzf julia-1.10.3-linux-x86_64.tar.gz +sudo mv julia-1.10.3 /opt/ +sudo ln -s /opt/julia-1.10.3/bin/julia /usr/local/bin/julia ``` :::: diff --git a/docs/install-julia-on-rtd.sh b/docs/install-julia-on-rtd.sh new file mode 100755 index 00000000..a2734587 --- /dev/null +++ b/docs/install-julia-on-rtd.sh @@ -0,0 +1,12 @@ +#!/bin/bash +if [ -z "$READTHEDOCS" ]; then + echo "Can only run this script on Read the Docs" + exit 1 +fi + +version=$(sed -n '3p' docs/report/019/Manifest.toml | cut -d'"' -f2) +major_version=${version:0:-2} +echo "Installing Julia v${version}" +filename=julia-${version}-linux-x86_64.tar.gz +wget -q https://julialang-s3.julialang.org/bin/linux/x64/${major_version}/${filename} +tar xzf ${filename} -C ~/.asdf --strip-components=1 diff --git a/docs/report/000.ipynb b/docs/report/000.ipynb index 5e783c4a..f326c088 100644 --- a/docs/report/000.ipynb +++ b/docs/report/000.ipynb @@ -54,7 +54,7 @@ }, "outputs": [], "source": [ - "%pip install -q black==21.5b2 jax==0.2.13 jaxlib==0.1.67 numpy==1.23 sympy==1.8" + "%pip install -q black==21.5b2 jax==0.4.28 jaxlib==0.4.28 numpy==1.23 sympy==1.8" ] }, { diff --git a/docs/report/001.ipynb b/docs/report/001.ipynb index bb23e434..fb467f3d 100644 --- a/docs/report/001.ipynb +++ b/docs/report/001.ipynb @@ -46,7 +46,7 @@ }, "outputs": [], "source": [ - "%pip install -q black==21.5b2 jax==0.2.13 jaxlib==0.1.67 matplotlib==3.4.2 numpy==1.19.5 sympy==1.8" + "%pip install -q black==21.5b2 jax==0.4.28 jaxlib==0.4.28 matplotlib==3.4.2 numpy==1.26.4 sympy==1.8" ] }, { diff --git a/docs/report/005.ipynb b/docs/report/005.ipynb index 39dc1183..acd88349 100644 --- a/docs/report/005.ipynb +++ b/docs/report/005.ipynb @@ -49,9 +49,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This report investigates how to implement $K$-matrix dynamics with {doc}`SymPy `. We here describe only the version that is **not Lorentz-invariant**, because it is simplest and allows us to check whether the case $n_R=1, n=1$ (single resonance, single channel) reduces to a Breit-Wigner function. We followed the physics as described by {pdg-review}`Resonances` and {cite}`chungPartialWaveAnalysis1995,petersPartialWaveAnalysis2004,meyerMatrixTutorial2008`. For the Lorentz-invariant version, see [TR-009](009.ipynb).\n", + "This report investigates how to implement $K$-matrix dynamics with {doc}`SymPy `. We here describe only the version that is **not Lorentz-invariant**, because it is simplest and allows us to check whether the case $n_R=1, n=1$ (single resonance, single channel) reduces to a Breit-Wigner function. We followed the physics as described by {pdg-review}`Resonances` and {cite}`Chung:1995dx,petersPartialWaveAnalysis2004,meyerMatrixTutorial2008`. For the Lorentz-invariant version, see [TR-009](009.ipynb).\n", "\n", - "A brief overview of the origin of the $\\boldsymbol{K}$-matrix is given first. This overview follows {cite}`chungPartialWaveAnalysis1995`, but skips over quite a few details, as this is only an attempt to provide some context of what is going on." + "A brief overview of the origin of the $\\boldsymbol{K}$-matrix is given first. This overview follows {cite}`Chung:1995dx`, but skips over quite a few details, as this is only an attempt to provide some context of what is going on." ] }, { @@ -233,7 +233,7 @@ "\n", "The dynamical part $\\boldsymbol{T}$ is usually called the **transition operator**. The reason is that it describes the interacting part of the **scattering operator** $\\boldsymbol{S}$, which describes the (complex) amplitude $\\langle f|\\boldsymbol{S}|i\\rangle$ of an initial state $|i\\rangle$ transitioning to a final state $|f\\rangle$. The scattering operator describes both the non-interacting amplitude and the transition amplitude, so it relates to the transition operator as:[^1]\n", "\n", - "[^1]: Some authors like {cite}`chungPartialWaveAnalysis1995` multiply the transition operator by a factor 2.\n", + "[^1]: Some authors like {cite}`Chung:1995dx` multiply the transition operator by a factor 2.\n", "\n", "$$\n", "\\boldsymbol{S} = \\boldsymbol{I} + i\\boldsymbol{T}\n", diff --git a/docs/report/010.ipynb b/docs/report/010.ipynb index 563c5093..57c8c028 100644 --- a/docs/report/010.ipynb +++ b/docs/report/010.ipynb @@ -136,7 +136,7 @@ ] }, "source": [ - "As described in [TR-005](005.ipynb), the $\\boldsymbol{K}$-matrix describes **scattering processes** of the type $cd \\to ab$. The $P$-vector approach is one of two generalizations for **production processes** of the type $c \\to ab$. For more details on this approach, {cite}`chungPartialWaveAnalysis1995` refers to {cite}`aitchisonMatrixFormalismOverlapping1972`.\n", + "As described in [TR-005](005.ipynb), the $\\boldsymbol{K}$-matrix describes **scattering processes** of the type $cd \\to ab$. The $P$-vector approach is one of two generalizations for **production processes** of the type $c \\to ab$. For more details on this approach, {cite}`Chung:1995dx` refers to {cite}`Aitchison:1972ay`.\n", "\n", "If we take the production vector $P$ to be:\n", "\n", diff --git a/docs/report/013.ipynb b/docs/report/013.ipynb index 7a18e3e3..b810be94 100644 --- a/docs/report/013.ipynb +++ b/docs/report/013.ipynb @@ -20,7 +20,7 @@ ":::{card} Spin alignment with data\n", "TR-013\n", "^^^\n", - "In this report, we attempt to check the effect of activating spin alignment ([ampform#245](https://github.com/ComPWA/ampform/pull/245)) and compare it with [Figure 2](https://downloads.hindawi.com/journals/ahep/2020/6674595.pdf#page=9) in {cite}`marangottoHelicityAmplitudesGeneric2020`.\n", + "In this report, we attempt to check the effect of activating spin alignment ([ampform#245](https://github.com/ComPWA/ampform/pull/245)) and compare it with [Figure 2](https://downloads.hindawi.com/journals/ahep/2020/6674595.pdf#page=9) in {cite}`Marangotto:2019ucc`.\n", "\n", "See also [TR-014](014.ipynb) and [TR-015](015.ipynb).\n", "+++\n", diff --git a/docs/report/014.ipynb b/docs/report/014.ipynb index 530cee2f..c7324d38 100644 --- a/docs/report/014.ipynb +++ b/docs/report/014.ipynb @@ -134,7 +134,7 @@ "\n", "[ampform#245](https://github.com/ComPWA/ampform/pull/245) implements spin alignment, which results in large sum combinatorics for all helicity combinations. The result is an amplitude model expression that is too large to be rendered as LaTeX.\n", "\n", - "To some extend, this is already the case with the [current implementation](https://ampform.readthedocs.io/en/0.12.3/usage/formalism.html) of the 'standard' helicity formalism {cite}`jacobGeneralTheoryCollisions1959, richmanExperimenterGuideHelicity1984, kutschkeAngularDistributionCookbook1996, chungSpinFormalismsUpdated2014`: many of the terms in the total intensity expression differ only by the helicities of the final and initial state." + "To some extend, this is already the case with the [current implementation](https://ampform.readthedocs.io/en/0.12.3/usage/formalism.html) of the 'standard' helicity formalism {cite}`Jacob:1959at, Richman:1984gh, kutschkeAngularDistributionCookbook1996, chungSpinFormalismsUpdated2014`: many of the terms in the total intensity expression differ only by the helicities of the final and initial state." ] }, { diff --git a/docs/report/015.ipynb b/docs/report/015.ipynb index 22ee0fa8..17a13877 100644 --- a/docs/report/015.ipynb +++ b/docs/report/015.ipynb @@ -242,7 +242,7 @@ "![](https://user-images.githubusercontent.com/29308176/164992511-98d8fa79-06dc-40ac-b91c-388ee2fb06f6.svg)\n", "\n", "\n", - "When formulating the amplitude model for this reaction, the {class}`~ampform.helicity.HelicityAmplitudeBuilder` implements the 'standard' helicity formalism as described in {cite}`richmanExperimenterGuideHelicity1984, kutschkeAngularDistributionCookbook1996, chungSpinFormalismsUpdated2014` and simply sums over the different amplitudes to get the full amplitude:" + "When formulating the amplitude model for this reaction, the {class}`~ampform.helicity.HelicityAmplitudeBuilder` implements the 'standard' helicity formalism as described in {cite}`Richman:1984gh, kutschkeAngularDistributionCookbook1996, chungSpinFormalismsUpdated2014` and simply sums over the different amplitudes to get the full amplitude:" ] }, { @@ -273,7 +273,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As pointed out in {cite}`marangottoHelicityAmplitudesGeneric2020, mikhasenkoDalitzplotDecompositionThreebody2020, wangNovelMethodTest2020`, this is wrong because of the mismatch in reference frames for the helicities." + "As pointed out in {cite}`Marangotto:2019ucc, JPAC:2019ufm, Wang:2020giv`, this is wrong because of the mismatch in reference frames for the helicities." ] }, { @@ -287,11 +287,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the rest of this document, we follow {cite}`marangottoHelicityAmplitudesGeneric2020` to align all amplitudes in the different topologies back to the initial state reference frame $A$, so that they can be correctly summed up. Specifically, we want to formulate a new, correctly aligned amplitude $\\mathcal{A}^{A\\to 0,1,\\dots}_{m_A,m_0,m_1,\\dots}$ from the original amplitudes $\\mathcal{A}^{A\\to R,S,i,...\\to 0,1,\\dots}_{\\lambda_A,\\lambda_0,\\lambda_1,\\dots}$ by applying Eq.(45) and Eq.(47) for generic, multi-body decays. Here, the $\\lambda$ values are the helicities in the parent rest frame of each two-body decay and the $m$ are the canonical[^canonical] spin projections in the rest frame of the mother particle that is the same no matter the {class}`~qrules.topology.Topology`.\n", + "In the rest of this document, we follow {cite}`Marangotto:2019ucc` to align all amplitudes in the different topologies back to the initial state reference frame $A$, so that they can be correctly summed up. Specifically, we want to formulate a new, correctly aligned amplitude $\\mathcal{A}^{A\\to 0,1,\\dots}_{m_A,m_0,m_1,\\dots}$ from the original amplitudes $\\mathcal{A}^{A\\to R,S,i,...\\to 0,1,\\dots}_{\\lambda_A,\\lambda_0,\\lambda_1,\\dots}$ by applying Eq.(45) and Eq.(47) for generic, multi-body decays. Here, the $\\lambda$ values are the helicities in the parent rest frame of each two-body decay and the $m$ are the canonical[^canonical] spin projections in the rest frame of the mother particle that is the same no matter the {class}`~qrules.topology.Topology`.\n", "\n", "[^canonical]: The canonical rest frame differs from the 'helicity' rest frame in that it is reached by a direct Lorentz boost without rotating the coordinate system in such a way that the $z$-axis aligns with the momentum of one of the decay products.\n", "\n", - "Just as in {cite}`marangottoHelicityAmplitudesGeneric2020`, we test the implementation with 1-to-3 body decays. We use the notation from {func}`~ampform.helicity.naming.get_boost_chain_suffix` to indicate resonances $R,S,U$. This results in the following figure for the two alignments sums of Equations (45) and (46) in {cite}`marangottoHelicityAmplitudesGeneric2020`:" + "Just as in {cite}`Marangotto:2019ucc`, we test the implementation with 1-to-3 body decays. We use the notation from {func}`~ampform.helicity.naming.get_boost_chain_suffix` to indicate resonances $R,S,U$. This results in the following figure for the two alignments sums of Equations (45) and (46) in {cite}`Marangotto:2019ucc`:" ] }, { @@ -362,7 +362,7 @@ "\n", "The dashed edges and bars above the state IDs indicate \"opposite helicity\" states. The helicity of an **opposite helicity state** gets a minus sign in the Wigner-$D$ function for a two-body state as formulated by {external+ampform-0.14.x:func}`.formulate_wigner_d` (see {ref}`report/015:Helicity formalism`) and therefore needs to be defined consistently. AmpForm does this with {external+ampform-0.14.x:func}`.is_opposite_helicity_state`.\n", "\n", - "Opposite helicity states are also of importance in the spin alignment procedure sketched by {cite}`marangottoHelicityAmplitudesGeneric2020`. The Wigner-$D$ functions that appear in Equations (45) and (46) from {cite}`marangottoHelicityAmplitudesGeneric2020`, operate on the spin of the final state, but the angles in the Wigner-$D$ function are taken from the sibling state:" + "Opposite helicity states are also of importance in the spin alignment procedure sketched by {cite}`Marangotto:2019ucc`. The Wigner-$D$ functions that appear in Equations (45) and (46) from {cite}`Marangotto:2019ucc`, operate on the spin of the final state, but the angles in the Wigner-$D$ function are taken from the sibling state:" ] }, { @@ -489,7 +489,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, the total intensity can be computed from these amplitudes by incoherently summing over the initial and final state canonical spin projections (see [Equation (47)](https://downloads.hindawi.com/journals/ahep/2020/6674595.pdf#page=7) in {cite}`marangottoHelicityAmplitudesGeneric2020`):\n", + "Finally, the total intensity can be computed from these amplitudes by incoherently summing over the initial and final state canonical spin projections (see [Equation (47)](https://downloads.hindawi.com/journals/ahep/2020/6674595.pdf#page=7) in {cite}`Marangotto:2019ucc`):\n", "\n", "$$\n", "I = \\sum_{m_A,m_0,m_1,m_2}\\left|\n", @@ -1061,7 +1061,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now it's still a matter of computing the values for the angles $\\alpha,\\beta,\\gamma$ in the Wigner rotation matrices. These angles represents the difference between the canonical spin frame as attained by a direct boost from the initial state versus a chain of boosts through each resonance. See Equation (36) in {cite}`marangottoHelicityAmplitudesGeneric2020`.\n", + "Now it's still a matter of computing the values for the angles $\\alpha,\\beta,\\gamma$ in the Wigner rotation matrices. These angles represents the difference between the canonical spin frame as attained by a direct boost from the initial state versus a chain of boosts through each resonance. See Equation (36) in {cite}`Marangotto:2019ucc`.\n", "\n", "The {mod}`~ampform.kinematics` module can generate an expression for the chain of Lorentz boosts from the initial state to the final state with {func}`~ampform.kinematics.lorentz.compute_boost_chain`:" ] @@ -1211,7 +1211,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The result of this matrix product is the rotation matrix for the Wigner rotation. The function {func}`~ampform.kinematics.angles.compute_wigner_angles` computes the required Euler angles from this rotation matrix by implementing Equations (B.2-3) from {cite}`marangottoHelicityAmplitudesGeneric2020`:" + "The result of this matrix product is the rotation matrix for the Wigner rotation. The function {func}`~ampform.kinematics.angles.compute_wigner_angles` computes the required Euler angles from this rotation matrix by implementing Equations (B.2-3) from {cite}`Marangotto:2019ucc`:" ] }, { diff --git a/docs/report/017.ipynb b/docs/report/017.ipynb index 5cccfc3f..4887d0e9 100644 --- a/docs/report/017.ipynb +++ b/docs/report/017.ipynb @@ -123,7 +123,7 @@ "Kinematics for a three-body decay $0 \\to 123$ can be fully described by two **Mandelstam variables** $\\sigma_1, \\sigma_2$, because the third variable $\\sigma_3$ can be expressed in terms $\\sigma_1, \\sigma_2$, the mass $m_0$ of the initial state, and the masses $m_1, m_2, m_3$ of the final state. As can be seen, the roles of $\\sigma_1, \\sigma_2, \\sigma_3$ are interchangeable.\n", "\n", "```{margin}\n", - "See Eq. (1.2) in {cite}`bycklingParticleKinematics1973`\n", + "See Eq. (1.2) in {cite}`Byckling:1971vca`\n", "```" ] }, @@ -173,7 +173,7 @@ "\n", "\n", "```{margin}\n", - "See §V.2 in {cite}`bycklingParticleKinematics1973`\n", + "See §V.2 in {cite}`Byckling:1971vca`\n", "```" ] }, @@ -585,7 +585,7 @@ "The boundary cannot be parametrized analytically in polar coordinates, but there is a numeric solution. The idea is to solve the condition $\\phi(\\sigma_1,\\sigma_2)=0$ after the following substitutions:\n", "\n", "```{margin}\n", - "See {cite}`bycklingParticleKinematics1973`, pp. 109–112\n", + "See {cite}`Byckling:1971vca`, pp. 109–112\n", "```" ] }, diff --git a/docs/report/019.ipynb b/docs/report/019.ipynb index ac6662c4..11b8bffd 100644 --- a/docs/report/019.ipynb +++ b/docs/report/019.ipynb @@ -232,15 +232,15 @@ "toc_visible": true }, "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "julia-compwa.github.io 1.10.3", "language": "julia", - "name": "julia-1.9" + "name": "julia-compwa.github.io-1.10" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.10.3" } }, "nbformat": 4, diff --git a/docs/report/019/Manifest.toml b/docs/report/019/Manifest.toml index 906f7646..77929f0d 100644 --- a/docs/report/019/Manifest.toml +++ b/docs/report/019/Manifest.toml @@ -1,28 +1,32 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.2" +julia_version = "1.10.3" manifest_format = "2.0" project_hash = "4ba49797108fc71b365784ebeeb1834809629bf2" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] -git-tree-sha1 = "cad4c758c0038eea30394b1b671526921ca85b21" +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.4.0" -weakdeps = ["ChainRulesCore"] +version = "1.5.0" + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" -[deps.AbstractFFTs.extensions] -AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + [deps.AbstractFFTs.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24" +git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.2" +version = "4.0.4" weakdeps = ["StaticArrays"] -[deps.Adapt.extensions] -AdaptStaticArraysExt = "StaticArrays" + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -30,46 +34,46 @@ version = "1.1.1" [[deps.ArnoldiMethod]] deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "62e51b39331de8911e4a7ff6f5aaf38a5f4cc0ae" +git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.2.0" +version = "0.4.0" [[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f83ec24f76d4c8f525099b2ac475fc098138ec31" +deps = ["Adapt", "LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "133a240faec6e074e07c31ee75619c90544179cf" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.11" - -[deps.ArrayInterface.extensions] -ArrayInterfaceBandedMatricesExt = "BandedMatrices" -ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" -ArrayInterfaceCUDAExt = "CUDA" -ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" -ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" -ArrayInterfaceTrackerExt = "Tracker" - -[deps.ArrayInterface.weakdeps] -BandedMatrices = "aae01518-5342-5314-be14-df237901396f" -BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" -GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" -StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ArrayInterfaceCore]] -deps = ["LinearAlgebra", "SnoopPrecompile", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "e5f08b5689b1aad068e01751889f2f615c7db36d" -uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2" -version = "0.1.29" +version = "7.10.0" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[deps.AxisAlgorithms]] deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7" +git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.0.1" +version = "1.1.0" [[deps.AxisArrays]] deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] @@ -86,22 +90,32 @@ git-tree-sha1 = "0c5f81f47bbbcf4aea7b2959135713459170798b" uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" version = "0.1.5" +[[deps.CEnum]] +git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.5.0" + +[[deps.CPUSummary]] +deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] +git-tree-sha1 = "601f7e7b3d36f18790e2caf83a882d88e9b71ff1" +uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" +version = "0.2.4" + [[deps.CatIndices]] deps = ["CustomUnitRanges", "OffsetArrays"] git-tree-sha1 = "a0f80a09780eed9b1d106a1bf62041c2efc995bc" uuid = "aafaddc9-749c-510e-ac4f-586e18779b91" version = "0.2.2" -[[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" - [[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "e30f2f4e20f7f186dc36529910beaedc60cfa644" +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "575cd02e080939a33b6df6c5853d14924c08e35b" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.16.0" +version = "1.23.0" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" [[deps.CloseOpenIntervals]] deps = ["Static", "StaticArrayInterface"] @@ -111,27 +125,21 @@ version = "0.1.12" [[deps.Clustering]] deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"] -git-tree-sha1 = "42fe66dbc8f1d09a44aa87f18d26926d06a35f84" +git-tree-sha1 = "9ebb045901e9bbf58767a9f34ff89831ed711aae" uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" -version = "0.15.3" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.10" +version = "0.15.7" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "dd3000d954d483c1aad05fe1eb9e6a715c97013e" +git-tree-sha1 = "4b270d6465eb21ae89b732182c20dc165f8bf9f2" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.22.0" +version = "3.25.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" +version = "0.11.5" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] @@ -139,26 +147,32 @@ git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" version = "0.10.0" -[deps.ColorVectorSpace.extensions] -SpecialFunctionsExt = "SpecialFunctions" + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + + [deps.ColorVectorSpace.weakdeps] + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" -[deps.ColorVectorSpace.weakdeps] -SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.10" [[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "5ce999a19f4ca23ea484e92a1774a61b8ca4cf8e" +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.8.0" +version = "4.15.0" weakdeps = ["Dates", "LinearAlgebra"] -[deps.Compat.extensions] -CompatLinearAlgebraExt = "LinearAlgebra" + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" +version = "1.1.1+0" [[deps.ComputationalResources]] git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" @@ -177,27 +191,21 @@ git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" uuid = "adafc99b-e345-5852-983c-f28acb93d879" version = "0.3.1" -[[deps.CPUSummary]] -deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "89e0654ed8c7aebad6d5ad235d6242c2d737a928" -uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.3" - [[deps.CustomUnitRanges]] git-tree-sha1 = "1a3f97f907e6dd8983b744d2642651bb162a3f7a" uuid = "dc8bdbbb-1ca9-579f-8c36-e416f6a65cce" version = "1.0.2" [[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" +version = "1.16.0" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "cf25ccb972fec4e4817764d01c82386ae94f77b4" +git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.14" +version = "0.18.20" [[deps.Dates]] deps = ["Printf"] @@ -205,13 +213,14 @@ uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[deps.Distances]] deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "b6def76ffad15143924a2199f72a5cd883a2e8a9" +git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.9" -weakdeps = ["SparseArrays"] +version = "0.10.11" +weakdeps = ["ChainRulesCore", "SparseArrays"] -[deps.Distances.extensions] -DistancesSparseArraysExt = "SparseArrays" + [deps.Distances.extensions] + DistancesChainRulesCoreExt = "ChainRulesCore" + DistancesSparseArraysExt = "SparseArrays" [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] @@ -236,9 +245,9 @@ version = "0.3.2" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "b4fbdd20c889804969571cc589900803edda16b7" +git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.7.1" +version = "1.8.0" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -248,9 +257,9 @@ version = "3.3.10+0" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673" +git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.1" +version = "1.16.3" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" @@ -261,6 +270,12 @@ git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" version = "0.8.4" +[[deps.Ghostscript_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "43ba3d3c82c18d88471cfd2924931658838c9d8f" +uuid = "61579ee1-b43e-5ca0-a5da-69d92c66a64b" +version = "9.55.0+4" + [[deps.Graphics]] deps = ["Colors", "LinearAlgebra", "NaNMath"] git-tree-sha1 = "d61890399bc535850c4bf08e4e0d3a7ad0f21cbd" @@ -269,9 +284,9 @@ version = "1.1.2" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "1cf1d7dcb4bc32d7b4a5add4232db3750c27ecb4" +git-tree-sha1 = "4f2b57488ac7ee16124396de4f2bbdd51b2602ad" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.8.0" +version = "1.11.0" [[deps.HistogramThresholding]] deps = ["ImageBase", "LinearAlgebra", "MappedArrays"] @@ -281,9 +296,9 @@ version = "0.3.1" [[deps.HostCPUFeatures]] deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "d38bd0d9759e3c6cfa19bdccc314eccf8ce596cc" +git-tree-sha1 = "eb8fed28f4994600e29beef49744639d985a04b2" uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.15" +version = "0.1.16" [[deps.IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" @@ -315,10 +330,10 @@ uuid = "f332f351-ec65-5f6a-b3d1-319c6670881a" version = "0.3.12" [[deps.ImageCore]] -deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] -git-tree-sha1 = "fc5d1d3443a124fde6e92d0260cd9e064eba69f8" +deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] +git-tree-sha1 = "b2a7eaa169c13f5bcae8131a83bc30eff8f71be0" uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.1" +version = "0.10.2" [[deps.ImageCorners]] deps = ["ImageCore", "ImageFiltering", "PrecompileTools", "StaticArrays", "StatsBase"] @@ -334,9 +349,9 @@ version = "0.2.17" [[deps.ImageFiltering]] deps = ["CatIndices", "ComputationalResources", "DataStructures", "FFTViews", "FFTW", "ImageBase", "ImageCore", "LinearAlgebra", "OffsetArrays", "PrecompileTools", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "TiledIteration"] -git-tree-sha1 = "c371a39622dc3b941ffd7c00e6b519d63b3f3f06" +git-tree-sha1 = "432ae2b430a18c58eb7eca9ef8d0f2db90bc749c" uuid = "6a3955dd-da59-5b1f-98d4-e7296123deb5" -version = "0.7.7" +version = "0.7.8" [[deps.ImageIO]] deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"] @@ -346,15 +361,15 @@ version = "0.6.7" [[deps.ImageMagick]] deps = ["FileIO", "ImageCore", "ImageMagick_jll", "InteractiveUtils"] -git-tree-sha1 = "b0b765ff0b4c3ee20ce6740d843be8dfce48487c" +git-tree-sha1 = "8e2eae13d144d545ef829324f1f0a5a4fe4340f3" uuid = "6218d12a-5da1-5696-b52f-db25d2ecc6d1" -version = "1.3.0" +version = "1.3.1" [[deps.ImageMagick_jll]] -deps = ["JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "1c0a2295cca535fabaf2029062912591e9b61987" +deps = ["Artifacts", "Ghostscript_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "OpenJpeg_jll", "Pkg", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "8d2e786fd090199a91ecbf4a66d03aedd0fb24d4" uuid = "c73af94c-d91f-53ed-93a7-00f77d67a9d7" -version = "6.9.10-12+3" +version = "6.9.11+4" [[deps.ImageMetadata]] deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"] @@ -374,12 +389,6 @@ git-tree-sha1 = "783b70725ed326340adf225be4889906c96b8fd1" uuid = "2996bd0c-7a13-11e9-2da2-2f5ce47296a9" version = "0.3.7" -[[deps.Images]] -deps = ["Base64", "FileIO", "Graphics", "ImageAxes", "ImageBase", "ImageBinarization", "ImageContrastAdjustment", "ImageCore", "ImageCorners", "ImageDistances", "ImageFiltering", "ImageIO", "ImageMagick", "ImageMetadata", "ImageMorphology", "ImageQualityIndexes", "ImageSegmentation", "ImageShow", "ImageTransformations", "IndirectArrays", "IntegralArrays", "Random", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "StatsBase", "TiledIteration"] -git-tree-sha1 = "d438268ed7a665f8322572be0dabda83634d5f45" -uuid = "916415d5-f1e6-5110-898d-aaa5f9f070e0" -version = "0.26.0" - [[deps.ImageSegmentation]] deps = ["Clustering", "DataStructures", "Distances", "Graphs", "ImageCore", "ImageFiltering", "ImageMorphology", "LinearAlgebra", "MetaGraphs", "RegionTrees", "SimpleWeightedGraphs", "StaticArrays", "Statistics"] git-tree-sha1 = "3ff0ca203501c3eedde3c6fa7fd76b703c336b5f" @@ -394,15 +403,21 @@ version = "0.3.8" [[deps.ImageTransformations]] deps = ["AxisAlgorithms", "CoordinateTransformations", "ImageBase", "ImageCore", "Interpolations", "OffsetArrays", "Rotations", "StaticArrays"] -git-tree-sha1 = "7ec124670cbce8f9f0267ba703396960337e54b5" +git-tree-sha1 = "e0884bdf01bbbb111aea77c348368a86fb4b5ab6" uuid = "02fcd773-0e25-5acc-982a-7f6622650795" -version = "0.10.0" +version = "0.10.1" + +[[deps.Images]] +deps = ["Base64", "FileIO", "Graphics", "ImageAxes", "ImageBase", "ImageBinarization", "ImageContrastAdjustment", "ImageCore", "ImageCorners", "ImageDistances", "ImageFiltering", "ImageIO", "ImageMagick", "ImageMetadata", "ImageMorphology", "ImageQualityIndexes", "ImageSegmentation", "ImageShow", "ImageTransformations", "IndirectArrays", "IntegralArrays", "Random", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "StatsBase", "TiledIteration"] +git-tree-sha1 = "12fdd617c7fe25dc4a6cc804d657cc4b2230302b" +uuid = "916415d5-f1e6-5110-898d-aaa5f9f070e0" +version = "0.26.1" [[deps.Imath_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "3d09a9f60edf77f8a4d99f9e015e8fbf9989605d" +git-tree-sha1 = "0936ba688c6d201805a83da835b55c61a180db52" uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1" -version = "3.1.7+0" +version = "3.1.11+0" [[deps.IndirectArrays]] git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f" @@ -410,9 +425,9 @@ uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959" version = "1.0.0" [[deps.Inflate]] -git-tree-sha1 = "5cd07aab533df5170988219191dfad0519391428" +git-tree-sha1 = "ea8031dea4aff6bd41f1df8f2fdfb25b33626381" uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.3" +version = "0.1.4" [[deps.IntegralArrays]] deps = ["ColorTypes", "FixedPointNumbers", "IntervalSets"] @@ -421,10 +436,10 @@ uuid = "1d092043-8f09-5a30-832f-7509e371ab51" version = "0.1.5" [[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0cb9352ef2e01574eeebdb102948a58740dcaf83" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be50fe8df3acbffa0274a744f1a99d29c45a57f4" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2023.1.0+0" +version = "2024.1.0+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -432,19 +447,26 @@ uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" [[deps.Interpolations]] deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "721ec2cf720536ad005cb38f50dbba7b02419a15" +git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0" uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.14.7" +version = "0.15.1" + + [deps.Interpolations.extensions] + InterpolationsUnitfulExt = "Unitful" + + [deps.Interpolations.weakdeps] + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.IntervalSets]] -deps = ["Dates", "Random"] -git-tree-sha1 = "19ef25c6befb8076aefbc6f89d9011b415fb25da" +git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.5" -weakdeps = ["Statistics"] +version = "0.7.10" +weakdeps = ["Random", "RecipesBase", "Statistics"] -[deps.IntervalSets.extensions] -IntervalSetsStatisticsExt = "Statistics" + [deps.IntervalSets.extensions] + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" + IntervalSetsStatisticsExt = "Statistics" [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" @@ -452,39 +474,45 @@ uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.2.2" [[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" +git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" +version = "1.10.0" [[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "aa6ffef1fd85657f4999030c52eaeec22a279738" +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] +git-tree-sha1 = "5ea6acdd53a51d897672edb694e3cc2912f3f8a7" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.33" +version = "0.4.46" [[deps.JLLWrappers]] -deps = ["Preferences"] -git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.4.1" +version = "1.5.0" [[deps.JpegTurbo]] deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"] -git-tree-sha1 = "327713faef2a3e5c80f96bf38d1fa26f7a6ae29e" +git-tree-sha1 = "fa6d0bcff8583bac20f1ffa708c3913ca605c611" uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0" -version = "0.1.3" +version = "0.1.5" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" +git-tree-sha1 = "3336abae9a713d2210bb57ab484b1e065edd7d23" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.91+0" +version = "3.0.2+0" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "3.0.0+1" [[deps.LayoutPointers]] deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "88b8f66b604da079a627b6fb2860d3704a6729a1" +git-tree-sha1 = "62edfee3211981241b57ff1cedf4d74d79519277" uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.14" +version = "0.1.15" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -495,50 +523,32 @@ git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e" version = "0.3.1" -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" - -[[deps.libsixel_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] -git-tree-sha1 = "d4f63314c8aa1e48cd22aa0c17ed76cd1ae48c3c" -uuid = "075b6546-f08a-558a-be8f-8157d0f608a5" -version = "1.10.3+0" +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] @@ -550,45 +560,57 @@ version = "4.4.0+0" deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +[[deps.LittleCMS_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg"] +git-tree-sha1 = "110897e7db2d6836be22c18bffd9422218ee6284" +uuid = "d3a379c0-f9a3-5b72-a4c0-6bf4d2e8af0f" +version = "2.12.0+0" + [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "c3ce8e7420b3a6e071e0fe4745f5d4300e37b13f" +git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.24" +version = "0.3.27" -[deps.LogExpFunctions.extensions] -LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" -LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" -LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" -[deps.LogExpFunctions.weakdeps] -ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" -InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoopVectorization]] -deps = ["ArrayInterface", "ArrayInterfaceCore", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "c88a4afe1703d731b1c4fdf4e3c7e77e3b176ea2" +deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] +git-tree-sha1 = "8f6786d8b2b3248d79db3ad359ce95382d5a6df8" uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.165" +version = "0.12.170" -[deps.LoopVectorization.extensions] -ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] -SpecialFunctionsExt = "SpecialFunctions" + [deps.LoopVectorization.extensions] + ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] + SpecialFunctionsExt = "SpecialFunctions" -[deps.LoopVectorization.weakdeps] -ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" -SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + [deps.LoopVectorization.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "80b2833b56d466b3858d565adcd16a4a05f2089b" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2024.1.0+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] -git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" +git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.10" +version = "0.5.13" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -607,7 +629,7 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" +version = "2.28.2+1" [[deps.MetaGraphs]] deps = ["Graphs", "JLD2", "Random"] @@ -617,15 +639,9 @@ version = "0.7.2" [[deps.Missings]] deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "154d7aaa82d24db6d8f7e4ffcfe596f40bff214b" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2023.1.0+0" +version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" @@ -638,7 +654,7 @@ version = "0.3.4" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" +version = "2023.1.10" [[deps.NaNMath]] deps = ["OpenLibm_jll"] @@ -648,9 +664,9 @@ version = "1.0.2" [[deps.NearestNeighbors]] deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "2c3726ceb3388917602169bed973dbc97f1b51a8" +git-tree-sha1 = "ded64ff6d4fdd1cb68dfcbb818c69e144a5b2e4c" uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.13" +version = "0.4.16" [[deps.Netpbm]] deps = ["FileIO", "ImageCore", "ImageMetadata"] @@ -662,21 +678,19 @@ version = "1.1.1" uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - [[deps.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" +git-tree-sha1 = "e64b4f5ea6b7389f6f046d13d4896a8f9c1ba71e" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.10" +version = "1.14.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" +version = "0.3.23+4" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] @@ -686,24 +700,31 @@ version = "0.3.2" [[deps.OpenEXR_jll]] deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "a4ca623df1ae99d09bc9868b008262d0c0ac1e4f" +git-tree-sha1 = "8292dd5c8a38257111ada2174000a33745b06d4e" uuid = "18a262bb-aa17-5467-a713-aee519bc75cb" -version = "3.1.4+0" +version = "3.2.4+0" + +[[deps.OpenJpeg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libtiff_jll", "LittleCMS_jll", "Pkg", "libpng_jll"] +git-tree-sha1 = "76374b6e7f632c130e78100b166e5a48464256f8" +uuid = "643b3616-a352-519d-856d-80112ee9badc" +version = "2.4.0+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" +version = "0.8.1+2" [[deps.OrderedCollections]] -git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.2" +version = "1.6.3" -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +[[deps.PNGFiles]] +deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] +git-tree-sha1 = "67186a2bc9a90f9f85ff3cc8277868961fb57cbd" +uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" +version = "0.4.3" [[deps.PaddedViews]] deps = ["OffsetArrays"] @@ -720,19 +741,13 @@ version = "0.12.3" [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" +version = "1.10.0" [[deps.PkgVersion]] deps = ["Pkg"] -git-tree-sha1 = "f6cf8e7944e50901594838951729a1861e668cb8" +git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.3.2" - -[[deps.PNGFiles]] -deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] -git-tree-sha1 = "9b02b27ac477cad98114584ff964e3052f656a0f" -uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" -version = "0.4.0" +version = "0.3.3" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -746,27 +761,27 @@ git-tree-sha1 = "3aa2bb4982e575acd7583f01531f241af077b163" uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" version = "3.2.13" -[deps.Polynomials.extensions] -PolynomialsChainRulesCoreExt = "ChainRulesCore" -PolynomialsMakieCoreExt = "MakieCore" -PolynomialsMutableArithmeticsExt = "MutableArithmetics" + [deps.Polynomials.extensions] + PolynomialsChainRulesCoreExt = "ChainRulesCore" + PolynomialsMakieCoreExt = "MakieCore" + PolynomialsMutableArithmeticsExt = "MutableArithmetics" -[deps.Polynomials.weakdeps] -ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" -MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" + [deps.Polynomials.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" + MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" [[deps.PrecompileTools]] deps = ["Preferences"] -git-tree-sha1 = "9673d39decc5feece56ef3940e5dafba15ba0f81" +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.1.2" +version = "1.2.1" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" +version = "1.4.3" [[deps.Printf]] deps = ["Unicode"] @@ -774,9 +789,9 @@ uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" [[deps.ProgressMeter]] deps = ["Distributed", "Printf"] -git-tree-sha1 = "d7a7aef8f8f2d537104f170139553b14dfe39fe9" +git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.7.2" +version = "1.10.0" [[deps.QOI]] deps = ["ColorTypes", "FileIO", "FixedPointNumbers"] @@ -786,12 +801,16 @@ version = "1.0.0" [[deps.Quaternions]] deps = ["LinearAlgebra", "Random", "RealDot"] -git-tree-sha1 = "da095158bdc8eaccb7890f9884048555ab771019" +git-tree-sha1 = "994cc27cdacca10e68feb291673ec3a76aa2fae9" uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" -version = "0.7.4" +version = "0.7.6" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.RangeArrays]] @@ -806,8 +825,8 @@ uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" version = "0.4.5" weakdeps = ["FixedPointNumbers"] -[deps.Ratios.extensions] -RatiosFixedPointNumbersExt = "FixedPointNumbers" + [deps.Ratios.extensions] + RatiosFixedPointNumbersExt = "FixedPointNumbers" [[deps.RealDot]] deps = ["LinearAlgebra"] @@ -832,10 +851,6 @@ git-tree-sha1 = "4618ed0da7a251c7f92e869ae1a19c74a7d2a7f9" uuid = "dee08c22-ab7f-5625-9660-a9af2021b33f" version = "0.3.2" -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - [[deps.Requires]] deps = ["UUIDs"] git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" @@ -844,26 +859,36 @@ version = "1.3.0" [[deps.Rotations]] deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] -git-tree-sha1 = "54ccb4dbab4b1f69beb255a2c0ca5f65a9c82f08" +git-tree-sha1 = "2a0a5d8569f481ff8840e3b7c84bbf188db6a3fe" uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" -version = "1.5.1" +version = "1.7.0" +weakdeps = ["RecipesBase"] -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + [deps.Rotations.extensions] + RotationsRecipesBaseExt = "RecipesBase" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - [[deps.SIMDTypes]] git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" uuid = "94e857df-77ce-4151-89e5-788b33177be4" version = "0.1.0" +[[deps.SLEEFPirates]] +deps = ["IfElse", "Static", "VectorizationBase"] +git-tree-sha1 = "3aac6d68c5e57449f5b9b865c9ba50ac2970c4cf" +uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" +version = "0.6.42" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + [[deps.SimpleTraits]] deps = ["InteractiveUtils", "MacroTools"] git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" @@ -882,30 +907,19 @@ git-tree-sha1 = "2da10356e31327c7096832eb9cd86307a50b1eb6" uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47" version = "0.1.3" -[[deps.SLEEFPirates]] -deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "4b8586aece42bee682399c4c4aee95446aa5cd19" -uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.39" - -[[deps.SnoopPrecompile]] -deps = ["Preferences"] -git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" -uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.3" - [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" +version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.10.0" [[deps.StackViews]] deps = ["OffsetArrays"] @@ -915,30 +929,31 @@ version = "0.1.1" [[deps.Static]] deps = ["IfElse"] -git-tree-sha1 = "f295e0a1da4ca425659c57441bcb59abb035a4bc" +git-tree-sha1 = "d2fdac9ff3906e27f7a618d47b676941baa6c80c" uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.8.8" +version = "0.8.10" [[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "Requires", "SnoopPrecompile", "SparseArrays", "Static", "SuiteSparse"] -git-tree-sha1 = "33040351d2403b84afce74dae2e22d3f5b18edcb" +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Requires", "SparseArrays", "Static", "SuiteSparse"] +git-tree-sha1 = "5d66818a39bb04bf328e92bc933ec5b4ee88e436" uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.4.0" +version = "1.5.0" weakdeps = ["OffsetArrays", "StaticArrays"] -[deps.StaticArrayInterface.extensions] -StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" -StaticArrayInterfaceStaticArraysExt = "StaticArrays" + [deps.StaticArrayInterface.extensions] + StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" + StaticArrayInterfaceStaticArraysExt = "StaticArrays" [[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore"] -git-tree-sha1 = "9cabadf6e7cd2349b6cf49f1915ad2028d65e881" +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "bf074c045d3d5ffd956fa0a461da38a44685d6b2" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.2" -weakdeps = ["Statistics"] +version = "1.9.3" +weakdeps = ["ChainRulesCore", "Statistics"] -[deps.StaticArrays.extensions] -StaticArraysStatisticsExt = "Statistics" + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" [[deps.StaticArraysCore]] git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" @@ -948,28 +963,33 @@ version = "1.4.2" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "75ebe04c5bed70b91614d684259b661c9e6274a4" +git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.0" +version = "0.34.3" [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" +version = "7.2.1+1" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" [[deps.Tar]] deps = ["ArgTools", "SHA"] @@ -982,10 +1002,6 @@ git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" version = "0.1.1" -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - [[deps.ThreadingUtilities]] deps = ["ManualMemory"] git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" @@ -994,9 +1010,9 @@ version = "0.5.2" [[deps.TiffImages]] deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "UUIDs"] -git-tree-sha1 = "8621f5c499a8aa4aa970b1ae381aae0ef1576966" +git-tree-sha1 = "34cc045dd0aaa59b8bbe86c644679bc57f1d5bd0" uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" -version = "0.6.4" +version = "0.6.8" [[deps.TiledIteration]] deps = ["OffsetArrays", "StaticArrayInterface"] @@ -1004,48 +1020,82 @@ git-tree-sha1 = "1176cc31e867217b06928e2f140c90bd1bc88283" uuid = "06e1c1a7-607b-532d-9fad-de7d9aa2abac" version = "0.5.0" -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - [[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +git-tree-sha1 = "5d54d076465da49d6746c647022f3b3674e64156" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" +version = "0.10.8" -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + + [deps.TranscodingStreams.weakdeps] + Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" version = "1.0.2" -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.VectorizationBase]] deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "b182207d4af54ac64cbc71797765068fdeff475d" +git-tree-sha1 = "6129a4faf6242e7c3581116fbe3270f3ab17c90d" uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.64" +version = "0.21.67" [[deps.WoodburyMatrices]] deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "de67fa59e33ad156a590055375a30b23c40299d3" +git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "0.5.5" +version = "1.0.0" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" +version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" +git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.5+0" +version = "1.5.6+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+1" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.43+1" + +[[deps.libsixel_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] +git-tree-sha1 = "d4f63314c8aa1e48cd22aa0c17ed76cd1ae48c3c" +uuid = "075b6546-f08a-558a-be8f-8157d0f608a5" +version = "1.10.3+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2021.12.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" diff --git a/docs/report/021.ipynb b/docs/report/021.ipynb index 5d96be0a..706d0165 100644 --- a/docs/report/021.ipynb +++ b/docs/report/021.ipynb @@ -1087,7 +1087,7 @@ "\\end{align}\n", "$$\n", "\n", - "The expressions for the cosine of the positive (anticlockwise) angles, $\\theta_{12}, \\theta_{23}, \\theta_{13}$ and $\\hat\\theta_{1(2)}, \\hat\\theta_{3(1)}, \\zeta^1_{1(3)}$ can be expressed in terms of Mandelstam variables $\\sigma_1, \\sigma_2, \\sigma_3$ using {cite}`mikhasenkoDalitzplotDecompositionThreebody2020`, Appendix A:" + "The expressions for the cosine of the positive (anticlockwise) angles, $\\theta_{12}, \\theta_{23}, \\theta_{13}$ and $\\hat\\theta_{1(2)}, \\hat\\theta_{3(1)}, \\zeta^1_{1(3)}$ can be expressed in terms of Mandelstam variables $\\sigma_1, \\sigma_2, \\sigma_3$ using {cite}`JPAC:2019ufm`, Appendix A:" ] }, { diff --git a/docs/report/024.ipynb b/docs/report/024.ipynb index ffaf4a52..7b700b49 100644 --- a/docs/report/024.ipynb +++ b/docs/report/024.ipynb @@ -412,7 +412,7 @@ "tags": [] }, "source": [ - "Now, let's build up a more complicated expression that contains this phase space factor. Here, we use SymPy to derive a Breit-Wigner using a single-channel [$K$ matrix](https://doi.org/10.1002/andp.19955070504) {cite}`chungPartialWaveAnalysis1995`:" + "Now, let's build up a more complicated expression that contains this phase space factor. Here, we use SymPy to derive a Breit-Wigner using a single-channel [$K$ matrix](https://doi.org/10.1002/andp.19955070504) {cite}`Chung:1995dx`:" ] }, { diff --git a/docs/report/029.ipynb b/docs/report/029.ipynb new file mode 100644 index 00000000..e117e7a0 --- /dev/null +++ b/docs/report/029.ipynb @@ -0,0 +1,727 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "```{autolink-concat}\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "PDG" + ] + }, + "source": [ + "::::{margin}\n", + ":::{card} Definition of the normalized Blatt–Weisskopf form factor from Hankel functions of the first kind.\n", + "TR-029\n", + "^^^\n", + "This report investigates how to implement [ComPWA/ampform#417](https://github.com/ComPWA/ampform/issues/417), where it was suggested to define the 'normalized' Blatt–Weisskopf function $B_L^2(z)$ from a Hankel function of the first kind, $h_l^{(1)}$.\n", + ":::\n", + "::::" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "# Blatt–Weisskopf from Hankel function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "remove-cell" + ] + }, + "outputs": [], + "source": [ + "%pip install -q ampform==0.15.1 sympy==1.12" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "from __future__ import annotations\n", + "\n", + "from functools import lru_cache\n", + "\n", + "import sympy as sp\n", + "from ampform.dynamics.phasespace import BreakupMomentumSquared\n", + "from ampform.io import aslatex\n", + "from ampform.sympy import unevaluated\n", + "from IPython.display import Math, display" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "As of AmpForm [v0.15](https://github.com/ComPWA/ampform/releases/tag/0.15.1), the implementation of [`BlattWeisskopfSquared`](https://ampform.readthedocs.io/0.15.x/api/ampform.dynamics/#ampform.dynamics.BlattWeisskopfSquared) contains hard-coded polynomials, see implementation [here](https://github.com/ComPWA/ampform/blob/0.15.1/src/ampform/dynamics/__init__.py#L66-L134).\n", + "The motivation for this can be found in the citations mentioned in [its API documentation](https://ampform.readthedocs.io/0.15.x/api/ampform.dynamics/#ampform.dynamics.BlattWeisskopfSquared).\n", + "However, as noted by [@mmikhasenko](https://github.com/mmikhasenko) in [ComPWA/ampform#417](https://github.com/ComPWA/ampform/issues/417), the polynomials can be derived from the spherical[^1] Hankel functions of the first kind.\n", + "Von Hippel and Quigg[^2] derived a generalization of the centrifugal barrier factor $F_L$, also called form factor, that was introduced by {cite}`Blatt:1952ije`, showing that\n", + "\n", + "[^1]: See [this page](https://mathworld.wolfram.com/SphericalHankelFunctionoftheFirstKind.html) on Wolfram MathWorld for an explanation about the difference between $h_\\ell^{(1)}$ and $H_\\ell^{(1)}$.\n", + "[^2]: See {cite}`VonHippel:1972fg`, pp. 626 and 637, and a review by COMPASS, {cite}`Ketzer:2019wmd`, p. 31." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "```{math}\n", + "F_\\ell^2(z^2) = \\frac{1}{z^2\\left|h^{(1)}_\\ell\\left(z\\right)\\right|^2}\\,,\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "where $h_\\ell^{(1)}$ is a Hankel function of the first kind. They also noted that, if $z\\in\\mathbb{R}$," + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "$$\n", + "h_\\ell^{(1)}(z) =\n", + " \\left(- i\\right)^{\\ell+1}\n", + " \\frac{e^{iz}}{z}\n", + " \\sum_{k=0}^\\ell\n", + " \\frac{(\\ell+k)!}{(\\ell-k)! \\, k!}\n", + " \\left(\\frac{i}{2z}\\right)^k.\n", + "$$ (hankel-sum)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "In the following, we call $F_\\ell(z)$ the _unnormalized_ Blatt–Weisskopf form factor.\n", + "Following Chung and other resources (see e.g. {cite}`Chung:1995dx`, p. 415), AmpForm implements a unitless, _normalized_ Blatt–Weisskopf factor $B_L$, meaning that $B_L(1)=1$.[^3]\n", + "It can be defined in terms of $F_L$ as\n", + "\n", + "[^3]: We switch to notating angular momentum with $L$ instead of $\\ell$ here to indicate that we are talking about a normalized function here." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "```{math}\n", + "B_L^2(z^2)\n", + " = \\frac{F_L^2(z^2)}{F_L^2(1)}\n", + " = \\frac{\\left|h^{(1)}_L(1)\\right|^2}{z^2\\left|h^{(1)}_L(z)\\right|^2}\\,.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + ":::{note}\n", + "As of writing, AmpForm uses $z$ as argument in [`BlattWeisskopfSquared`](https://ampform.readthedocs.io/0.15.x/api/ampform.dynamics/#ampform.dynamics.BlattWeisskopfSquared).\n", + "This means we have to work with a square root and assume that $z \\geq 0$, meaning\n", + "\n", + "$$\n", + "B_L^2(z) = \\frac{\\left|h^{(1)}_L(1)\\right|^2}{z\\left|h^{(1)}_L\\left(\\sqrt{z}\\right)\\right|^2}\\,.\n", + "$$ (blatt-weisskopf)\n", + "\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## Hankel function of the first kind" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### Built-in SymPy function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SymPy offers a Hankel function of the first kind, [`scipy.special.hankel1`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.hankel1.html)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "z = sp.Symbol(\"z\", nonnegative=True, real=True)\n", + "ell = sp.Symbol(R\"\\ell\", integer=True, nonnegative=True)\n", + "sp.hankel1(ell, z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This function is the general[^1] Hankel function $H_\\ell$ and the class does not offer algebraic simplifications for specific values or assumptions of $\\ell$ and $z$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(\n", + " sp.hankel1(ell, z).doit(),\n", + " sp.hankel1(ell, 0).doit(),\n", + " sp.hankel1(0, z).doit(),\n", + " sp.hankel1(0, 0).doit(),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### Custom class definition" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "To implement Equation {eq}`hankel-sum` for the _spherical_ Hankel function, we have to define a custom [`@unevaluated`](https://ampform.readthedocs.io/0.15.x/api/ampform.sympy/#ampform.sympy.unevaluated) expression class.\n", + "The following class evaluates to the sum given in Equation {eq}`hankel-sum`.\n", + "We introduce a special [`sympy.Sum`](https://docs.sympy.org/latest/modules/concrete.html#sympy.concrete.summations.Sum) class that does not 'unfold' on symbolic input for $\\ell$ if [`doit()`](https://docs.sympy.org/latest/modules/core.html#sympy.core.basic.Basic.doit) is called (see [](#nested-doit))." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "scroll-input" + ] + }, + "outputs": [], + "source": [ + "@unevaluated\n", + "class SphericalHankel1(sp.Expr):\n", + " l: sp.Symbol | int\n", + " z: sp.Symbol | float\n", + " _latex_repr_ = R\"h_{{{l}}}^{{(1)}}\\left({z}\\right)\"\n", + "\n", + " def evaluate(self) -> sp.Expr:\n", + " l, z = self.args\n", + " k = sp.Dummy(\"k\", integer=True, nonnegative=True)\n", + " return (\n", + " (-sp.I) ** (1 + l)\n", + " * (sp.exp(z * sp.I) / z)\n", + " * SymbolicSum(\n", + " sp.factorial(l + k)\n", + " / (sp.factorial(l - k) * sp.factorial(k))\n", + " * (sp.I / (2 * z)) ** k,\n", + " (k, 0, l),\n", + " )\n", + " )\n", + "\n", + "\n", + "class SymbolicSum(sp.Sum):\n", + " def doit(self, deep: bool = True, **kwargs) -> sp.Expr:\n", + " if _get_indices(self):\n", + " expression = self.args[0]\n", + " indices = self.args[1:]\n", + " return SymbolicSum(expression.doit(deep=deep, **kwargs), *indices)\n", + " return super().doit(deep=deep, **kwargs)\n", + "\n", + "\n", + "@lru_cache(maxsize=None)\n", + "def _get_indices(expr: sp.Sum) -> set[sp.Symbol]:\n", + " free_symbols = set()\n", + " for index in expr.args[1:]:\n", + " free_symbols.update(index.free_symbols)\n", + " return {s for s in free_symbols if not isinstance(s, sp.Dummy)}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "h1lz = SphericalHankel1(ell, z)\n", + "Math(aslatex({h1lz: h1lz.doit()}))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Indeed, the absolute squared value $\\left|h_\\ell^{(1)}\\right|^2$ results in a clean fraction of polynomials (after some algebraic [simplifications](https://docs.sympy.org/latest/tutorials/intro-tutorial/simplification.html))." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "exprs = [sp.Abs(h1lz.xreplace({ell: i})) ** 2 for i in range(3)]\n", + "Math(aslatex({e: e.doit().simplify() for e in exprs}))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "exprs = [sp.Abs(h1lz.xreplace({ell: i, z: 1})) ** 2 for i in range(3)]\n", + "Math(aslatex({e: e.doit() for e in exprs}))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## Normalized Blatt–Weisskopf form factor" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "We now have the required expression classes for re-implementing [`BlattWeisskopfSquared`](https://ampform.readthedocs.io/0.15.x/api/ampform.dynamics/#ampform.dynamics.BlattWeisskopfSquared) using Equation {eq}`blatt-weisskopf` (with $z$ as input, instead of $z^2$)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "@unevaluated\n", + "class BlattWeisskopfSquared(sp.Expr):\n", + " L: sp.Symbol | int\n", + " z: sp.Symbol | float\n", + " _latex_repr_ = R\"B^2_{{{L}}}\\left({z}\\right)\"\n", + "\n", + " def evaluate(self) -> sp.Expr:\n", + " L = self.L\n", + " z = sp.Dummy(\"z\", nonnegative=True, real=True)\n", + " expr = (\n", + " sp.Abs(SphericalHankel1(L, 1)) ** 2\n", + " / sp.Abs(SphericalHankel1(L, sp.sqrt(z))) ** 2\n", + " / z\n", + " )\n", + " if not L.free_symbols:\n", + " expr = expr.doit().simplify()\n", + " return expr.xreplace({z: self.z})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + ":::{note}\n", + "An explicit [`simplify()`](https://docs.sympy.org/latest/tutorials/intro-tutorial/simplification.html#simplify) is required in order to reproduce the polynomial form upon evaluation.\n", + "To make the simplification as fast as possible, it is done internally within `evaluate()` with $z$ as a dummy variable.\n", + "This is to avoid performing nested simplifications if $z$ is in itself an expression (see [](#nested-doit)).\n", + ":::" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "L = sp.Symbol(\"L\", integer=True, nonnegative=True)\n", + "BL2 = BlattWeisskopfSquared(L, z)\n", + "Math(aslatex({BL2: BL2.doit(deep=False)}))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Indeed the polynomials are exactly the same as the [original `BlattWeisskopfSquared`](https://ampform.readthedocs.io/0.15.x/api/ampform.dynamics/#ampform.dynamics.BlattWeisskopfSquared)!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "exprs = [BL2.xreplace({L: i}) for i in range(9)]\n", + "Math(aslatex({e: e.doit() for e in exprs}))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## Nested doit" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Eventually, the barrier factors take $z=q/q_R$, with $q$ the break-up momentum and $q_R$ an impact factor. Here it becomes crucial that only $\\left|h_\\ell^{(1)}(z)\\right|^2$ is simplified to a polynomial fraction, not $q$ itself. The break-up momentum does need to unfold though." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "jupyter": { + "source_hidden": true + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "hide-input" + ] + }, + "outputs": [], + "source": [ + "s, m1, m2, qR = sp.symbols(\"s m1 m2 q_R\", nonnegative=True)\n", + "q2 = BreakupMomentumSquared(s, m1, m2)\n", + "Math(aslatex({q2: q2.doit()}))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### Symbolic angular momentum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "BlattWeisskopfSquared(L, z=q2 / qR**2).doit(deep=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "full-width" + ] + }, + "outputs": [], + "source": [ + "BlattWeisskopfSquared(L, z=q2 / qR**2).doit(deep=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "### Numeric angular momentum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "BlattWeisskopfSquared(L=2, z=q2 / qR**2).doit(deep=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "full-width" + ] + }, + "outputs": [], + "source": [ + "BlattWeisskopfSquared(L=2, z=q2 / qR**2).doit(deep=True)" + ] + } + ], + "metadata": { + "colab": { + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/environment.yml b/environment.yml index 9a6d456b..bf01f9b7 100644 --- a/environment.yml +++ b/environment.yml @@ -1,6 +1,5 @@ name: compwa.github.io channels: - - defaults - conda-forge dependencies: - graphviz # for binder