From 8465e6650f115d6c423350003975b627ab012c00 Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Mon, 14 Sep 2026 05:00:04 +0000 Subject: [PATCH 1/7] deps: require scippneutron>=26.9.1 The beam-center changes that follow need the beam-aligned coordinate system to follow the incident beam rather than its projection onto the horizontal plane (scipp/scippneutron#725), so that phi and Qx/Qy keep the vertical part of the beam center. Released in scippneutron 26.9.1. esssans imports scippneutron directly but so far relied on essreduce to pull it in, so the bound goes where the import is. --- packages/esssans/pyproject.toml | 1 + pixi.lock | 190 ++++++++++++++++---------------- 2 files changed, 98 insertions(+), 93 deletions(-) diff --git a/packages/esssans/pyproject.toml b/packages/esssans/pyproject.toml index 874ad514c..c66f005f9 100644 --- a/packages/esssans/pyproject.toml +++ b/packages/esssans/pyproject.toml @@ -36,6 +36,7 @@ dependencies = [ "numpy>=1.26.4", "pandas>=2.1.2", "plopp>=26.5.0", + "scippneutron>=26.9.1", ] [project.optional-dependencies] diff --git a/pixi.lock b/pixi.lock index 87f208273..ed05b7874 100644 --- a/pixi.lock +++ b/pixi.lock @@ -168,6 +168,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl @@ -186,7 +187,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -402,6 +402,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl @@ -418,7 +419,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/07/dcb13f37e670257c8d0e944f116c799c34ac6968ecb48c83619f7e91d8b5/msgpack-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -635,6 +635,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/20/a6/efc97000fdb2f34e2431eb09a6ab4de9fbd3bcdb73a8f9d224afa4a9abd3/cython-3.2.5-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl @@ -650,7 +651,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -872,6 +872,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1d/33/f1c6a276de27b7d7339a34749cc33fa87f077f921969c47185d34a887ae2/gast-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/57/461ce12106ab560d1214218a0df8f56dff66f8a9ef624d7c3273dca52167/ncrystal_core-4.4.4-py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -888,7 +889,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/34/942cc95ca4e26489875aa8a95192766247a687379ec29543eebe73ec945f/pywinpty-3.0.5-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -1150,6 +1150,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -1172,7 +1173,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -1367,6 +1367,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -1387,7 +1388,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -1583,6 +1583,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1a/84/8c38176f97ee333c5b0d3f003548718ee87abdac67d4a2d5c00183c872bf/mcstastox-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -1602,7 +1603,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl @@ -1804,6 +1804,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/84/8c38176f97ee333c5b0d3f003548718ee87abdac67d4a2d5c00183c872bf/mcstastox-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/57/461ce12106ab560d1214218a0df8f56dff66f8a9ef624d7c3273dca52167/ncrystal_core-4.4.4-py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl @@ -1824,7 +1825,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -2066,6 +2066,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -2086,7 +2087,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -2273,6 +2273,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -2291,7 +2292,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -2481,6 +2481,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -2499,7 +2500,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -2693,6 +2693,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -2711,7 +2712,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -2948,6 +2948,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -2969,7 +2970,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -3157,6 +3157,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -3176,7 +3177,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/07/dcb13f37e670257c8d0e944f116c799c34ac6968ecb48c83619f7e91d8b5/msgpack-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -3366,6 +3366,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/20/a6/efc97000fdb2f34e2431eb09a6ab4de9fbd3bcdb73a8f9d224afa4a9abd3/cython-3.2.5-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -3385,7 +3386,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -3578,6 +3578,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -3596,7 +3597,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -3831,6 +3831,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -3851,7 +3852,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -4028,6 +4028,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -4046,7 +4047,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -4226,6 +4226,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -4243,7 +4244,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -4428,6 +4428,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -4446,7 +4447,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -4679,6 +4679,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -4700,7 +4701,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -4893,6 +4893,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -4912,7 +4913,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -5108,6 +5108,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1d/33/f1c6a276de27b7d7339a34749cc33fa87f077f921969c47185d34a887ae2/gast-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -5126,7 +5127,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl @@ -5327,6 +5327,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1d/33/f1c6a276de27b7d7339a34749cc33fa87f077f921969c47185d34a887ae2/gast-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -5346,7 +5347,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -5587,6 +5587,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -5607,7 +5608,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -5791,6 +5791,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -5809,7 +5810,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -5996,6 +5996,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -6014,7 +6015,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -6205,6 +6205,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -6223,7 +6224,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -6458,6 +6458,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -6478,7 +6479,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -6657,6 +6657,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -6675,7 +6676,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -6857,6 +6857,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -6874,7 +6875,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl @@ -7061,6 +7061,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl @@ -7079,7 +7080,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/77/bdb5a4c0e8e33c08f31fd175a5af0bc5e29f1b43ffa9e963f4c4f9bfbc97/pydata_sphinx_theme-0.19.0-py3-none-any.whl @@ -7301,6 +7301,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/33/75/98a7eb100dc5cfd20b019046452f08d5e67dfbacc71d8f28763d32426fd3/spglib-2.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl @@ -7308,7 +7309,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -7454,6 +7454,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3c/f5/9febf95f9ec5e2453fb5fc178683720cf135997c3779a8a1c82269ab5a11/spglib-2.6.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -7461,7 +7462,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -7604,13 +7604,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1a/84/8c38176f97ee333c5b0d3f003548718ee87abdac67d4a2d5c00183c872bf/mcstastox-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/f2/56577465a1b42a5e6780bb5fab53fb68f8bfd72f0131ed397576529af724/psygnal-0.15.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -7761,6 +7761,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/84/8c38176f97ee333c5b0d3f003548718ee87abdac67d4a2d5c00183c872bf/mcstastox-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/57/461ce12106ab560d1214218a0df8f56dff66f8a9ef624d7c3273dca52167/ncrystal_core-4.4.4-py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl @@ -7768,7 +7769,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -7961,6 +7961,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl @@ -7969,7 +7970,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -8114,6 +8114,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl @@ -8122,7 +8123,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -8266,6 +8266,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl @@ -8274,7 +8275,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -8424,6 +8424,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl @@ -8432,7 +8433,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -8626,6 +8626,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/38/ed/b7728573156d70b6b094233b0f38d876fc37340826cf852347ec2c7ca8ca/msgpack-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl @@ -8633,7 +8634,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -8773,6 +8773,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl @@ -8780,7 +8781,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/07/dcb13f37e670257c8d0e944f116c799c34ac6968ecb48c83619f7e91d8b5/msgpack-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -8918,13 +8918,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/20/a6/efc97000fdb2f34e2431eb09a6ab4de9fbd3bcdb73a8f9d224afa4a9abd3/cython-3.2.5-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/34/d3/539ae1f2c7404e5396f90a9b4cca2e0d83ed1a9c8e598f94efe88130094a/bitshuffle-0.5.2.tar.gz - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -9068,13 +9068,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -9258,13 +9258,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -9397,13 +9397,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -9535,12 +9535,12 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -9679,13 +9679,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -9871,13 +9871,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -10023,13 +10023,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -10174,12 +10174,12 @@ environments: - pypi: https://files.pythonhosted.org/packages/1d/33/f1c6a276de27b7d7339a34749cc33fa87f077f921969c47185d34a887ae2/gast-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -10331,13 +10331,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1d/33/f1c6a276de27b7d7339a34749cc33fa87f077f921969c47185d34a887ae2/gast-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -10530,13 +10530,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -10676,13 +10676,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -10821,13 +10821,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/f2/56577465a1b42a5e6780bb5fab53fb68f8bfd72f0131ed397576529af724/psygnal-0.15.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -10972,13 +10972,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -11166,13 +11166,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -11306,13 +11306,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/f5/906eda513271c8deb5af284e5ef0206d17a96239af79f9fa0aebfe0e36b4/scipy-1.17.1-cp312-cp312-macosx_14_0_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -11445,12 +11445,12 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl @@ -11590,13 +11590,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1a/1f/86b4d15221096cb5500bcd73bf350745749e3ba056cdd7a7f75f126f154e/scipp-26.3.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/d9/27b13bc9419bf5dae02905b348f16ca827646cd76244ddd326f1a8139a6a/cyclebane-24.10.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl @@ -11804,6 +11804,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/e7/cd78635d0ece7e4d3393f2c1d2ebabf6ff4bd615da142891b1d42ad58abf/scipp-26.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl @@ -11830,7 +11831,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl @@ -12074,6 +12074,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl @@ -12098,7 +12099,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl @@ -12343,6 +12343,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/20/a6/efc97000fdb2f34e2431eb09a6ab4de9fbd3bcdb73a8f9d224afa4a9abd3/cython-3.2.5-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/be/0631a861af4d1c875f096c07d34e9a63639560a717130e7a87cbc82b7e3f/python_json_logger-4.1.0-py3-none-any.whl @@ -12366,7 +12367,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/7b/537a61906eac58d94131273084d21d4eb219f5453f0ed30de3aca580a2b4/scipp-26.3.1-cp312-cp312-macosx_14_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl @@ -12616,6 +12616,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/1d/33/f1c6a276de27b7d7339a34749cc33fa87f077f921969c47185d34a887ae2/gast-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/e8/9d61dcbd1dce8ef418f06befd4ac084b4720429c26b0b1222bc218685eff/jupyter_lsp-2.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/57/461ce12106ab560d1214218a0df8f56dff66f8a9ef624d7c3273dca52167/ncrystal_core-4.4.4-py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/27/2c/daca29684cbe9fd4bc711f8246da3c10adca1ccc4d24436b17572eb2590e/roman_numerals_py-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl @@ -12640,7 +12641,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/f6/775eb92e865b28cdb4ad1f2bed7a5446197516f76b58a950faa3be3fd08d/pybtex-0.26.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/34/942cc95ca4e26489875aa8a95192766247a687379ec29543eebe73ec945f/pywinpty-3.0.5-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/c0/d28e62407f4733bbe0169287bc012f0ac3b4a2021066b285570654119c8b/sphinxcontrib_bibtex-2.7.0-py3-none-any.whl @@ -17212,6 +17212,7 @@ packages: - numpy>=1.26.4 - pandas>=2.1.2 - plopp>=26.5.0 + - scippneutron>=26.9.1 - ipympl>=0.9.4 ; extra == 'test' - pytest>=9.0 ; extra == 'test' - pooch>=1.5 ; extra == 'test' @@ -17880,6 +17881,38 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/25/ac/81e51956820deb21e8950c15b774cec3d0893e56438e0df261afa024ee8a/scippneutron-26.9.1-py3-none-any.whl + name: scippneutron + version: 26.9.1 + sha256: 7e03bdfefa1629de6b9b24160e22436b26f12b91b61432a2f579e04afe342ea8 + requires_dist: + - python-dateutil>=2.9.0 + - email-validator>=2 + - h5py>=3.12 + - lazy-loader>=0.4 + - mpltoolbox>=24.6.0 + - numpy>=2 + - plopp>=26.5.0 + - pydantic>=2.4 + - pyyaml>=6.0.1 + - scipp>=25.11.0 + - scippnexus>=24.6.0 + - scipy>=1.13.0 + - scipp[all]>=25.8.0 ; extra == 'all' + - pooch>=1.5 ; extra == 'all' + - euphonic>=2.0 ; extra == 'test' + - hypothesis>=6.100 ; extra == 'test' + - ipympl>0.9.0 ; extra == 'test' + - ipykernel>6.30 ; extra == 'test' + - pace-neutrons>=0.3 ; extra == 'test' + - pooch>=1.5 ; extra == 'test' + - psutil>=5.9.6 ; extra == 'test' + - pytest>=8.0 ; extra == 'test' + - pytest-xdist>=3.0 ; extra == 'test' + - pythreejs>=2.4.1 ; extra == 'test' + - sciline>=25.1.0 ; extra == 'test' + - anywidget>=0.8.0 ; extra == 'test' + requires_python: '>=3.12' - pypi: https://files.pythonhosted.org/packages/26/57/461ce12106ab560d1214218a0df8f56dff66f8a9ef624d7c3273dca52167/ncrystal_core-4.4.4-py3-none-win_amd64.whl name: ncrystal-core version: 4.4.4 @@ -18465,35 +18498,6 @@ packages: version: 3.1.1 sha256: 7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752 requires_python: '>=3.3' -- pypi: https://files.pythonhosted.org/packages/4d/82/597fcbfe2ee1928f594795de448762518de2021d1d073d02e534053ce1b9/scippneutron-26.6.0-py3-none-any.whl - name: scippneutron - version: 26.6.0 - sha256: 640cb5a35e2c7b29b5a95ddcd8a6b6d7ce39b24bbc78223c2e0d19e2aa2a79c5 - requires_dist: - - python-dateutil>=2.8 - - email-validator>=2 - - h5py>=3.12 - - lazy-loader>=0.4 - - mpltoolbox>=24.6.0 - - numpy>=1.20 - - plopp>=26.4.1 - - pydantic>=2 - - scipp>=25.11.0 - - scippnexus>=23.11.0 - - scipy>=1.7.0 - - scipp[all]>=25.8.0 ; extra == 'all' - - pooch>=1.5 ; extra == 'all' - - hypothesis>=6.100 ; extra == 'test' - - ipympl>0.9.0 ; extra == 'test' - - ipykernel>6.30 ; extra == 'test' - - pace-neutrons>=0.3 ; extra == 'test' - - pooch>=1.5 ; extra == 'test' - - psutil>=5.0 ; extra == 'test' - - pytest>=7.0 ; extra == 'test' - - pytest-xdist>=3.0 ; extra == 'test' - - pythreejs>=2.4.1 ; extra == 'test' - - sciline>=25.1.0 ; extra == 'test' - requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl name: argon2-cffi version: 25.1.0 From 40c7f080d1799fd6a9fc8bdcd7e1641ccc283a9e Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Wed, 26 Aug 2026 04:33:18 +0000 Subject: [PATCH 2/7] fix(sans): measure beam center relative to sample position The center-of-mass beam-center finder projected the center-of-mass position onto the plane normal to the incident beam without first subtracting the sample position. The resulting offset was therefore measured from the origin of the lab coordinate system rather than from the beam axis through the sample. This was invisible so far because all supported instruments place the sample on the beam axis at the origin. --- .../src/ess/sans/beam_center_finder.py | 12 ++- .../esssans/tests/beam_center_finder_test.py | 98 +++++++++++++++++++ 2 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 packages/esssans/tests/beam_center_finder_test.py diff --git a/packages/esssans/src/ess/sans/beam_center_finder.py b/packages/esssans/src/ess/sans/beam_center_finder.py index 30578ba2b..4592bf1af 100644 --- a/packages/esssans/src/ess/sans/beam_center_finder.py +++ b/packages/esssans/src/ess/sans/beam_center_finder.py @@ -246,11 +246,15 @@ def beam_center_from_center_of_mass(workflow: sciline.Pipeline) -> BeamCenter: pos = pos[select] com = sc.sum(pos * v) / v.sum() - # We compute the shift between the incident beam direction and the center-of-mass - incident_beam = summed.transform_coords('incident_beam', graph=graph).coords[ - 'incident_beam' - ] + # We compute the shift between the incident beam direction and the center-of-mass. + # Both are anchored at the sample, so the center-of-mass must be taken relative to + # the sample position. + coords = summed.transform_coords( + ['incident_beam', 'sample_position'], graph=graph + ).coords + incident_beam = coords['incident_beam'] n_beam = incident_beam / sc.norm(incident_beam) + com = com - coords['sample_position'] com_shift = com - sc.dot(com, n_beam) * n_beam xy = [com_shift.fields.x.value, com_shift.fields.y.value] return beam_center + _offsets_to_vector(data=summed, xy=xy, graph=graph) diff --git a/packages/esssans/tests/beam_center_finder_test.py b/packages/esssans/tests/beam_center_finder_test.py new file mode 100644 index 000000000..98f23056c --- /dev/null +++ b/packages/esssans/tests/beam_center_finder_test.py @@ -0,0 +1,98 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Scipp contributors (https://github.com/scipp) + +import sciline +import scipp as sc +from ess.sans.beam_center_finder import beam_center_from_center_of_mass +from ess.sans.common import gravity_vector +from ess.sans.conversions import ElasticCoordTransformGraph, sans_elastic +from ess.sans.types import ( + CorrectForGravity, + CorrectedDetector, + Numerator, + Position, + SampleRun, +) + +import scippnexus as snx + + +def make_detector( + *, + center: sc.Variable, + distance: sc.Variable, + size: int = 41, + extent: float = 1.0, +) -> sc.DataArray: + """ + Flat square detector with a Gaussian intensity distribution centered on ``center``. + + The detector is normal to the Z axis. The pattern is narrow enough to be contained + well within the detector, so that its center of mass is unbiased. + """ + x = sc.linspace('x', -extent, extent, size, unit='m') + y = sc.linspace('y', -extent, extent, size, unit='m') + position = sc.spatial.as_vectors( + x.broadcast(sizes={'y': size, 'x': size}), + y.broadcast(sizes={'y': size, 'x': size}), + distance.broadcast(sizes={'y': size, 'x': size}), + ) + r2 = (position.fields.x - center.fields.x) ** 2 + ( + position.fields.y - center.fields.y + ) ** 2 + sigma = sc.scalar(0.2, unit='m') + counts = sc.exp(-r2 / (2 * sigma**2)) + # A wavelength dim exercises the summing of non-position dims. + counts = counts.broadcast(sizes={**counts.sizes, 'wavelength': 3}).copy() + return sc.DataArray( + data=counts, + coords={ + 'position': position, + 'wavelength': sc.linspace('wavelength', 1.0, 3.0, 3, unit='angstrom'), + }, + ) + + +def make_workflow( + *, + detector: sc.DataArray, + sample_position: sc.Variable, + source_position: sc.Variable | None = None, +) -> sciline.Pipeline: + if source_position is None: + source_position = sample_position - sc.vector([0, 0, 20.0], unit='m') + workflow = sciline.Pipeline(()) + workflow[CorrectedDetector[SampleRun, Numerator]] = detector + workflow[ElasticCoordTransformGraph[SampleRun]] = sans_elastic( + CorrectForGravity(False), + sample_position=Position[snx.NXsample, SampleRun](sample_position), + source_position=Position[snx.NXsource, SampleRun](source_position), + gravity=gravity_vector(), + ) + return workflow + + +def test_center_of_mass_finds_center_of_symmetric_pattern() -> None: + center = sc.vector([0.1, -0.07, 0.0], unit='m') + workflow = make_workflow( + detector=make_detector(center=center, distance=sc.scalar(5.0, unit='m')), + sample_position=sc.vector([0, 0, 0], unit='m'), + ) + result = beam_center_from_center_of_mass(workflow) + assert sc.allclose(result, center, atol=sc.scalar(1e-3, unit='m')) + + +def test_center_of_mass_is_measured_relative_to_the_sample_position() -> None: + # Pattern is centered on the beam axis through the sample, so there is no offset + # of the beam center, despite the sample being off-axis. + sample_position = sc.vector([0.1, -0.07, 0.0], unit='m') + workflow = make_workflow( + detector=make_detector( + center=sample_position, distance=sc.scalar(5.0, unit='m') + ), + sample_position=sample_position, + ) + result = beam_center_from_center_of_mass(workflow) + assert sc.allclose( + result, sc.vector([0, 0, 0], unit='m'), atol=sc.scalar(1e-3, unit='m') + ) From 500dd73a36104c9f0475c21fb9bbff47a762af68 Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Wed, 26 Aug 2026 04:51:26 +0000 Subject: [PATCH 3/7] refactor(sans): apply beam center to the scattered beam, not to pixel positions The beam center describes where the beam is, not where the detector is. Applying it as a detector position offset made it leak into everything derived from the pixel positions, in particular the solid angle, which is a property of the real geometry and must not depend on the beam. Callers also had to undo the shift to recover the real positions, see the SANS2D masks. Overriding `scattered_beam` in the coordinate transformation graph confines the beam center to the quantities that are actually measured relative to the beam: two_theta, phi and the cylindrical coordinates. Those are unchanged bit for bit; the solid angle, and hence I(Q), changes by up to 0.04% (0.2% for I(Qx,Qy)) for the Loki-at-Larmor reference data, so the reference results are regenerated. The beam center no longer needs to be added back to the result of the center-of-mass finder, since the pixel positions it works on are no longer shifted. --- packages/esssans/src/ess/isissans/general.py | 5 +- packages/esssans/src/ess/isissans/sans2d.py | 27 ++---- .../esssans/src/ess/loki/larmor_workflow.py | 2 + .../src/ess/sans/beam_center_finder.py | 86 ++++++++++++----- packages/esssans/src/ess/sans/common.py | 9 -- packages/esssans/src/ess/sans/conversions.py | 24 +++++ packages/esssans/src/ess/sans/workflow.py | 3 +- .../esssans/tests/beam_center_finder_test.py | 7 +- packages/esssans/tests/beam_center_test.py | 90 ++++++++++++++++++ ...ce_IofQ_UncertaintyBroadcastMode.drop.hdf5 | Bin 15776 -> 15776 bytes ..._IofQxy_UncertaintyBroadcastMode.drop.hdf5 | Bin 73376 -> 73376 bytes packages/esssans/tests/loki/workflow_test.py | 19 ++++ 12 files changed, 213 insertions(+), 59 deletions(-) create mode 100644 packages/esssans/tests/beam_center_test.py diff --git a/packages/esssans/src/ess/isissans/general.py b/packages/esssans/src/ess/isissans/general.py index ee0127052..b8d4968c6 100644 --- a/packages/esssans/src/ess/isissans/general.py +++ b/packages/esssans/src/ess/isissans/general.py @@ -12,7 +12,6 @@ import scippneutron as scn import scippnexus as snx from ess.sans.types import ( - BeamCenter, DetectorIDs, DetectorPixelShape, DetectorPositionOffset, @@ -81,9 +80,9 @@ def default_parameters() -> dict: def to_detector_position_offset( - global_offset: DetectorBankOffset, beam_center: BeamCenter + global_offset: DetectorBankOffset, ) -> DetectorPositionOffset[RunType]: - return DetectorPositionOffset[RunType](global_offset - beam_center) + return DetectorPositionOffset[RunType](global_offset) def to_monitor_position_offset( diff --git a/packages/esssans/src/ess/isissans/sans2d.py b/packages/esssans/src/ess/isissans/sans2d.py index 6f839785a..119ad1626 100644 --- a/packages/esssans/src/ess/isissans/sans2d.py +++ b/packages/esssans/src/ess/isissans/sans2d.py @@ -6,7 +6,7 @@ import scipp as sc from ess.sans import SansWorkflow from ess.sans.parameters import typical_outputs -from ess.sans.types import BeamCenter, DetectorMasks, EmptyDetector, SampleRun +from ess.sans.types import DetectorMasks, EmptyDetector, SampleRun from ess.reduce.workflow import register_workflow @@ -25,33 +25,26 @@ """Sample holder mask""" -def detector_edge_mask( - beam_center: BeamCenter, sample: EmptyDetector[SampleRun] -) -> DetectorEdgeMask: - # These values were determined by hand before the beam center was available. - # We therefore undo the shift introduced by the beam center. - raw_pos = sample.coords['position'] + beam_center - mask_edges = (sc.abs(raw_pos.fields.x) > sc.scalar(0.48, unit='m')) | ( - sc.abs(raw_pos.fields.y) > sc.scalar(0.45, unit='m') +def detector_edge_mask(sample: EmptyDetector[SampleRun]) -> DetectorEdgeMask: + pos = sample.coords['position'] + mask_edges = (sc.abs(pos.fields.x) > sc.scalar(0.48, unit='m')) | ( + sc.abs(pos.fields.y) > sc.scalar(0.45, unit='m') ) return DetectorEdgeMask(mask_edges) def sample_holder_mask( - beam_center: BeamCenter, sample: EmptyDetector[SampleRun], low_counts_threshold: LowCountThreshold, ) -> SampleHolderMask: - # These values were determined by hand before the beam center was available. - # We therefore undo the shift introduced by the beam center. - raw_pos = sample.coords['position'] + beam_center + pos = sample.coords['position'] summed = sample.hist() holder_mask = ( (summed.data < low_counts_threshold) - & (raw_pos.fields.x > sc.scalar(0, unit='m')) - & (raw_pos.fields.x < sc.scalar(0.42, unit='m')) - & (raw_pos.fields.y < sc.scalar(0.05, unit='m')) - & (raw_pos.fields.y > sc.scalar(-0.15, unit='m')) + & (pos.fields.x > sc.scalar(0, unit='m')) + & (pos.fields.x < sc.scalar(0.42, unit='m')) + & (pos.fields.y < sc.scalar(0.05, unit='m')) + & (pos.fields.y > sc.scalar(-0.15, unit='m')) ) return SampleHolderMask(holder_mask) diff --git a/packages/esssans/src/ess/loki/larmor_workflow.py b/packages/esssans/src/ess/loki/larmor_workflow.py index 664feee8f..249ab9ba1 100644 --- a/packages/esssans/src/ess/loki/larmor_workflow.py +++ b/packages/esssans/src/ess/loki/larmor_workflow.py @@ -108,12 +108,14 @@ def larmor_detector_coord_transform_graph( *, sample_position: Position[snx.NXsample, RunType], source_position: Position[snx.NXsource, RunType], + beam_center: BeamCenter, gravity: GravityVector, ) -> ElasticCoordTransformGraph[RunType]: graph = sans_elastic( correct_for_gravity=correct_for_gravity, sample_position=sample_position, source_position=source_position, + beam_center=beam_center, gravity=gravity, ) return ElasticCoordTransformGraph[RunType]({**graph, **tof.elastic_Q('tof')}) diff --git a/packages/esssans/src/ess/sans/beam_center_finder.py b/packages/esssans/src/ess/sans/beam_center_finder.py index 4592bf1af..f88526f52 100644 --- a/packages/esssans/src/ess/sans/beam_center_finder.py +++ b/packages/esssans/src/ess/sans/beam_center_finder.py @@ -178,13 +178,25 @@ def beam_center_from_center_of_mass_alternative( if beam_stop_arm_width is None: beam_stop_arm_width = sc.scalar(0.02, unit='m') + workflow = _with_default_beam_center(workflow) + data = workflow.compute(CorrectedDetector[SampleRun, Numerator]) + return _find_beam_center(data, beam_stop_radius, beam_stop_arm_width) + + +def _with_default_beam_center(workflow: sciline.Pipeline) -> sciline.Pipeline: + """ + Return a workflow that can compute detector data even without a beam center set. + + Computing the detector data may require a beam center, but the beam center found by + the functions below does not depend on it: it is derived from the pixel positions, + which the beam center does not modify. + """ try: - beam_center = workflow.compute(BeamCenter) + workflow.compute(BeamCenter) except sciline.UnsatisfiedRequirement: - beam_center = sc.vector([0.0, 0.0, 0.0], unit='m') - workflow[BeamCenter] = beam_center - data = workflow.compute(CorrectedDetector[SampleRun, Numerator]) - return _find_beam_center(data, beam_stop_radius, beam_stop_arm_width) + beam_center + workflow = workflow.copy() + workflow[BeamCenter] = sc.vector([0.0, 0.0, 0.0], unit='m') + return workflow def beam_center_from_center_of_mass(workflow: sciline.Pipeline) -> BeamCenter: @@ -208,12 +220,7 @@ def beam_center_from_center_of_mass(workflow: sciline.Pipeline) -> BeamCenter: : The beam center position as a vector. """ - try: - beam_center = workflow.compute(BeamCenter) - except sciline.UnsatisfiedRequirement: - beam_center = sc.vector([0.0, 0.0, 0.0], unit='m') - workflow = workflow.copy() - workflow[BeamCenter] = beam_center + workflow = _with_default_beam_center(workflow) data = workflow.compute(CorrectedDetector[SampleRun, Numerator]) graph = workflow.compute(ElasticCoordTransformGraph[SampleRun]) @@ -257,21 +264,41 @@ def beam_center_from_center_of_mass(workflow: sciline.Pipeline) -> BeamCenter: com = com - coords['sample_position'] com_shift = com - sc.dot(com, n_beam) * n_beam xy = [com_shift.fields.x.value, com_shift.fields.y.value] - return beam_center + _offsets_to_vector(data=summed, xy=xy, graph=graph) + return BeamCenter( + _offsets_to_vector( + xy=xy, + unit_vectors=_beam_plane_unit_vectors(data=summed, graph=graph), + unit=summed.coords['position'].unit, + ) + ) -def _offsets_to_vector(data: sc.DataArray, xy: list[float], graph: dict) -> sc.Variable: +def _beam_plane_unit_vectors( + data: sc.DataArray, graph: dict +) -> tuple[sc.Variable, sc.Variable]: """ - Convert x,y offsets inside the plane normal to the beam to a vector in absolute - coordinates. + Return two unit vectors spanning the plane normal to the incident beam. + + These do not depend on the beam center, which is applied to the scattered beam and + leaves the incident beam unchanged. """ - u = data.coords['position'].unit - # Get two vectors that define the plane normal to the beam coords = data.transform_coords( ['cyl_x_unit_vector', 'cyl_y_unit_vector'], graph=graph ).coords - center = xy[0] * coords['cyl_x_unit_vector'] + xy[1] * coords['cyl_y_unit_vector'] - center.unit = u + return coords['cyl_x_unit_vector'], coords['cyl_y_unit_vector'] + + +def _offsets_to_vector( + xy: list[float], + unit_vectors: tuple[sc.Variable, sc.Variable], + unit: str, +) -> sc.Variable: + """ + Convert x,y offsets inside the plane normal to the beam to a vector in absolute + coordinates. + """ + center = xy[0] * unit_vectors[0] + xy[1] * unit_vectors[1] + center.unit = unit return center @@ -280,6 +307,7 @@ def _iofq_in_quadrants( workflow: sciline.Pipeline, detector: sc.DataArray, norm: sc.DataArray, + unit_vectors: tuple[sc.Variable, sc.Variable], ) -> dict[str, sc.DataArray]: """ Compute the intensity as a function of Q inside 4 quadrants in Phi. @@ -292,6 +320,8 @@ def _iofq_in_quadrants( The raw detector. norm: The denominator data for normalization. + unit_vectors: + Unit vectors spanning the plane normal to the beam, defining ``xy``. Returns ------- @@ -304,9 +334,11 @@ def _iofq_in_quadrants( phi_bins = sc.linspace('phi', -pi, pi, 5, unit='rad') quadrants = ['south-west', 'south-east', 'north-east', 'north-west'] - graph = workflow.compute(ElasticCoordTransformGraph[SampleRun]) workflow = workflow.copy() - workflow[BeamCenter] = _offsets_to_vector(data=detector, xy=xy, graph=graph) + workflow[BeamCenter] = _offsets_to_vector( + xy=xy, unit_vectors=unit_vectors, unit=detector.coords['position'].unit + ) + graph = workflow.compute(ElasticCoordTransformGraph[SampleRun]) calibrated = workflow.compute(CorrectedDetector[SampleRun, Numerator]) with_phi = calibrated.transform_coords( 'phi', graph=graph, keep_intermediate=False, keep_inputs=False @@ -325,8 +357,8 @@ def _iofq_in_quadrants( for i, quad in enumerate(quadrants): # Select pixels based on phi sel = (phi >= phi_bins[i]) & (phi < phi_bins[i + 1]) - # The beam center is applied when computing EmptyDetector, set quadrant - # *before* that step. + # Restrict the raw detector to the quadrant, so the denominator (solid angle) + # covers the same pixels as the numerator. workflow[NeXusComponent[snx.NXdetector, SampleRun]] = sc.DataGroup( data=detector[sel] ) @@ -544,6 +576,8 @@ def beam_center_from_iofq( com_shift = beam_center_from_center_of_mass(workflow) logger.info('Initial guess for beam center: %s', com_shift) + unit_vectors = _beam_plane_unit_vectors(data=data, graph=graph) + coords = data.transform_coords( ['cylindrical_x', 'cylindrical_y'], graph=graph ).coords @@ -556,13 +590,15 @@ def beam_center_from_iofq( res = minimize( _cost, x0=[com_shift.fields.x.value, com_shift.fields.y.value], - args=(workflow, detector, norm), + args=(workflow, detector, norm, unit_vectors), bounds=bounds, method=minimizer, tol=tolerance, ) - center = _offsets_to_vector(data=data, xy=res.x, graph=graph) + center = _offsets_to_vector( + xy=res.x, unit_vectors=unit_vectors, unit=data.coords['position'].unit + ) logger.info('Final beam center value: %s', center) logger.info('Beam center finder minimizer info: %s', res) return center diff --git a/packages/esssans/src/ess/sans/common.py b/packages/esssans/src/ess/sans/common.py index e3de665c1..debfe23e6 100644 --- a/packages/esssans/src/ess/sans/common.py +++ b/packages/esssans/src/ess/sans/common.py @@ -6,8 +6,6 @@ import scipp as sc from scipp.constants import g -from .types import BeamCenter, DetectorPositionOffset, RunType - def gravity_vector() -> sc.Variable: """ @@ -91,10 +89,3 @@ def mask_range( else: out.masks[name] = mask_values return out - - -def beam_center_to_detector_position_offset( - beam_center: BeamCenter, -) -> DetectorPositionOffset[RunType]: - """Convert beam center to detector position offset for all runs.""" - return DetectorPositionOffset[RunType](-beam_center) diff --git a/packages/esssans/src/ess/sans/conversions.py b/packages/esssans/src/ess/sans/conversions.py index 44dadbd2c..d49c87119 100644 --- a/packages/esssans/src/ess/sans/conversions.py +++ b/packages/esssans/src/ess/sans/conversions.py @@ -13,6 +13,7 @@ from .common import mask_range from .types import ( + BeamCenter, BinnedQ, BinnedQxQy, CorrectForGravity, @@ -33,6 +34,24 @@ ) +def _scattered_beam_with_beam_center(beam_center: sc.Variable): + """ + Return a provider for ``scattered_beam`` that accounts for the beam center. + + Scattering angles must be measured relative to the actual beam, which in general + does not coincide with the nominal beam axis defined by source and sample. Shifting + the pixel positions by the beam center maps the actual beam onto the nominal axis, + so that all angles derived from the scattered beam are relative to the actual beam. + """ + + def scattered_beam( + position: sc.Variable, sample_position: sc.Variable + ) -> sc.Variable: + return position - sample_position - beam_center + + return scattered_beam + + def cyl_unit_vectors(incident_beam: sc.Variable, gravity: sc.Variable): vectors = beam_aligned_unit_vectors(incident_beam=incident_beam, gravity=gravity) return { @@ -102,6 +121,7 @@ def sans_elastic( *, sample_position: Position[snx.NXsample, RunType], source_position: Position[snx.NXsource, RunType], + beam_center: BeamCenter, gravity: GravityVector, ) -> ElasticCoordTransformGraph[RunType]: """ @@ -142,12 +162,16 @@ def sans_elastic( Position of the sample as a vector. source_position: Position of the source as a vector. + beam_center: + Offset of the beam from the nominal beam axis defined by source and sample, + in the plane normal to the beam. """ # noqa: E501 graph = { **beamline.beamline(scatter=True), **tof.elastic_Q('wavelength'), 'sample_position': lambda: sample_position, 'source_position': lambda: source_position, + 'scattered_beam': _scattered_beam_with_beam_center(beam_center), 'gravity': lambda: gravity, } if correct_for_gravity: diff --git a/packages/esssans/src/ess/sans/workflow.py b/packages/esssans/src/ess/sans/workflow.py index 16303599b..fa854f8ad 100644 --- a/packages/esssans/src/ess/sans/workflow.py +++ b/packages/esssans/src/ess/sans/workflow.py @@ -9,7 +9,7 @@ from ess.reduce.parameter import parameter_mappers from ess.reduce.unwrap import GenericUnwrapWorkflow, WavelengthLutMode -from . import common, conversions, i_of_q, masking, normalization +from . import conversions, i_of_q, masking, normalization from .types import ( BackgroundRun, CorrectForGravity, @@ -155,7 +155,6 @@ def with_background_runs( *i_of_q.providers, *masking.providers, *normalization.providers, - common.beam_center_to_detector_position_offset, ) """ List of providers for setting up a Sciline pipeline. diff --git a/packages/esssans/tests/beam_center_finder_test.py b/packages/esssans/tests/beam_center_finder_test.py index 98f23056c..edad55e32 100644 --- a/packages/esssans/tests/beam_center_finder_test.py +++ b/packages/esssans/tests/beam_center_finder_test.py @@ -3,19 +3,19 @@ import sciline import scipp as sc +import scippnexus as snx from ess.sans.beam_center_finder import beam_center_from_center_of_mass from ess.sans.common import gravity_vector from ess.sans.conversions import ElasticCoordTransformGraph, sans_elastic from ess.sans.types import ( - CorrectForGravity, + BeamCenter, CorrectedDetector, + CorrectForGravity, Numerator, Position, SampleRun, ) -import scippnexus as snx - def make_detector( *, @@ -67,6 +67,7 @@ def make_workflow( CorrectForGravity(False), sample_position=Position[snx.NXsample, SampleRun](sample_position), source_position=Position[snx.NXsource, SampleRun](source_position), + beam_center=BeamCenter(sc.vector([0, 0, 0], unit='m')), gravity=gravity_vector(), ) return workflow diff --git a/packages/esssans/tests/beam_center_test.py b/packages/esssans/tests/beam_center_test.py new file mode 100644 index 000000000..ef1152c47 --- /dev/null +++ b/packages/esssans/tests/beam_center_test.py @@ -0,0 +1,90 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Scipp contributors (https://github.com/scipp) +"""Tests for how the beam center is applied, as opposed to how it is determined.""" + +import pytest +import scipp as sc +import scippnexus as snx +from ess.sans.common import gravity_vector +from ess.sans.conversions import sans_elastic +from ess.sans.types import BeamCenter, CorrectForGravity, Position, SampleRun + +SAMPLE_POSITION = sc.vector([0.0, 0.0, 0.0], unit='m') +# Offset of the source from the sample, i.e., the nominal beam is along Z. +SOURCE_OFFSET = sc.vector([0.0, 0.0, -20.0], unit='m') +NO_BEAM_CENTER = sc.vector([0.0, 0.0, 0.0], unit='m') + + +def make_graph( + *, + beam_center: sc.Variable, + correct_for_gravity: bool = False, + sample_position: sc.Variable = SAMPLE_POSITION, +) -> dict: + return sans_elastic( + CorrectForGravity(correct_for_gravity), + sample_position=Position[snx.NXsample, SampleRun](sample_position), + source_position=Position[snx.NXsource, SampleRun]( + sample_position + SOURCE_OFFSET + ), + beam_center=BeamCenter(beam_center), + gravity=gravity_vector(), + ) + + +def angle(position: sc.Variable, graph: dict, name: str = 'two_theta') -> sc.Variable: + # A negligible wavelength keeps the gravity drop out of the comparison. + da = sc.DataArray( + data=sc.scalar(1.0), + coords={'position': position, 'wavelength': sc.scalar(1e-6, unit='angstrom')}, + ) + return da.transform_coords(name, graph=graph).coords[name] + + +def assert_zero_angle(value: sc.Variable) -> None: + assert sc.isclose( + value, sc.scalar(0.0, unit='rad'), atol=sc.scalar(1e-9, unit='rad') + ) + + +def test_two_theta_is_zero_on_beam_axis_without_beam_center() -> None: + position = sc.vector([0.0, 0.0, 5.0], unit='m') + assert_zero_angle(angle(position, make_graph(beam_center=NO_BEAM_CENTER))) + + +def test_two_theta_is_zero_at_beam_center() -> None: + beam_center = sc.vector([0.05, -0.03, 0.0], unit='m') + position = sc.vector([0.05, -0.03, 5.0], unit='m') + assert_zero_angle(angle(position, make_graph(beam_center=beam_center))) + + +def test_beam_center_shifts_two_theta() -> None: + position = sc.vector([0.05, -0.03, 5.0], unit='m') + without = angle(position, make_graph(beam_center=NO_BEAM_CENTER)) + with_center = angle( + position, make_graph(beam_center=sc.vector([0.05, -0.03, 0.0], unit='m')) + ) + assert without.value > 0.0 + assert with_center.value < without.value + + +def test_phi_is_measured_around_the_beam_center() -> None: + beam_center = sc.vector([0.05, -0.03, 0.0], unit='m') + # Directly to the right of the beam center, i.e., phi == 0. + position = sc.vector([0.25, -0.03, 5.0], unit='m') + assert_zero_angle(angle(position, make_graph(beam_center=beam_center), name='phi')) + + +@pytest.mark.parametrize('correct_for_gravity', [False, True]) +def test_beam_center_is_applied_relative_to_sample_position( + correct_for_gravity: bool, +) -> None: + sample_position = sc.vector([0.1, -0.07, 0.0], unit='m') + beam_center = sc.vector([0.05, -0.03, 0.0], unit='m') + position = sample_position + beam_center + sc.vector([0, 0, 5.0], unit='m') + graph = make_graph( + beam_center=beam_center, + correct_for_gravity=correct_for_gravity, + sample_position=sample_position, + ) + assert_zero_angle(angle(position, graph)) diff --git a/packages/esssans/tests/loki/reference_IofQ_UncertaintyBroadcastMode.drop.hdf5 b/packages/esssans/tests/loki/reference_IofQ_UncertaintyBroadcastMode.drop.hdf5 index 6a6c950bd0344a86d469748665466c7f9944611d..bb6aefc33edaee32b6a5220518356a7e89c12488 100644 GIT binary patch delta 946 zcmZXTe^AqP9L8s3jA4R|5JcJn5;CquF!;Pb8~6Tv4LIgqod^naMyY{Bhrbw5KrwPc z3R{l-&{Mbo540mG2&fab9AS+7(Sj&D}ck?xhcKi=`{0&S7 zQQ`_!+qg*TQDuMXb3eOqd8}K?GzV{&b3-;0mvZhHR}gRF%%wVxT|dZmRqx|0zov4h zhhOA)^D<5`A>q1T_v9i!aN+csbL`uxF}7da&l)5b*hh;Utmf4w7O=C9MbZ;Yyr5^A zV~1H3Ps^kug{)ta!;%AcvA%7o4Bky-t=*fL>djd8mP?F=4SGg1gH^`zFN86}!%()@ z8pQ5-OW8!%I_9fh!-PMJ*(4`si%ae-$VbHD-w?8Nfq;D{e~b+|=JAD)C9I5{!?N5t zRA)_LvGgX^zj71j^RD5_Eu-i^Fo>E5{kW>}67F|gMw|UIJ~7>g)8h{GkJFsPPGcvY z%&_9Ev@eij=P~cIb_|q%in}+rpz!X;=m>8>D%nxSzs< z9-jp=V826>x6BYt!Rbj7<3B;XVkStKa-1|Tj*-I&*U2UIDCyAOAXk&7h*L66M%-se zZ}u$7|8thOeLY9s+xn0kk}ML_=p!Pma)I2lt`J)x0;i`40{R|+X;!$UqRr@b_nHv52~7Lknzbh2vom7 zy5|yP@OiYi?s4j@71PKbe>!*|h|VbG^r}uqH6(^^s(Ct&uA5J$Vp|Gb|JrWKx9*_2 fg;E;&hn{AxHPee}7HTYNlLQ;Z%O7oxx-I+*n)Y#g delta 969 zcmZ{jeNfYN9LI-1+lmmTHJr-0*rWC(kS8mfk$bIdpru_=z~~ z>a`8r35SB)X!qgL-dN0iT;Rg_COeqyj-72;Jjj0W{+4l%+E{VCfo*+L&rXwLtoLCV zOVJ%-QU4rdhLIdLxO@+*Tk#f4iiu+(>TS%?6U}CJMX+aGl^Q1T3}r)|3KsC)Y8Er^ z&kD@GELJRKoY|XM-WRiz*G0@4A!0xBo?_EpLKdIKXWIp?>^HKADXf3sx)7()-)I2I(0qgp+Jve$3nx#24qJU@tujTTg09>BT20c@D*#p$WW=xD_k$}FFzKtcW;DG`UwbseGW>)rSQXHG1zP#@F0>8G40Oa zAH#z&(Ia9t&yX80-zA#5hM!63vQctYIZB$8w@K=(oqWFOC$cpA7TH{Nhcv~Fk#GDa z$du<@BFvm762X1a(C;8MiL+!#{ugnboF`tjF7RIS6EImJgsWm91YKDI}jrOVa4^ ki6r`&=p&jfK0=+=R?|~iI(n(5#b;%eXyLj|Ywz>_1!9wcr2qf` diff --git a/packages/esssans/tests/loki/reference_IofQxy_UncertaintyBroadcastMode.drop.hdf5 b/packages/esssans/tests/loki/reference_IofQxy_UncertaintyBroadcastMode.drop.hdf5 index 28855e1670499057503a06037964e5c717cc7f86..7b3593bcddc2f7794bded255b7d8cbf7278f2ed0 100644 GIT binary patch literal 73376 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 Xju7ifTOohMz=+p3JyjHEKOO!b!+@j< literal 73376 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 diff --git a/packages/esssans/tests/loki/workflow_test.py b/packages/esssans/tests/loki/workflow_test.py index 0d20b94e1..e754620da 100644 --- a/packages/esssans/tests/loki/workflow_test.py +++ b/packages/esssans/tests/loki/workflow_test.py @@ -10,6 +10,7 @@ BackgroundRun, BackgroundSubtractedIofQ, BeamCenter, + EmptyDetector, Filename, IntensityQ, LookupTableFilename, @@ -18,6 +19,7 @@ QBins, ReturnEvents, SampleRun, + SolidAngle, UncertaintyBroadcastMode, WavelengthDetector, ) @@ -57,6 +59,23 @@ def test_loki_larmor_workflow_parameters_with_param_returns_param(): assert parameters.keys() == {ReturnEvents} +def test_beam_center_does_not_move_detector_positions(larmor_workflow): + wf = larmor_workflow() + wf[BeamCenter] = sc.vector([0.0, 0.0, 0.0], unit='m') + reference = wf.compute(EmptyDetector[SampleRun]).coords['position'] + wf[BeamCenter] = sc.vector([0.03, -0.02, 0.0], unit='m') + position = wf.compute(EmptyDetector[SampleRun]).coords['position'] + assert sc.identical(position, reference) + + +def test_solid_angle_is_independent_of_beam_center(larmor_workflow): + wf = larmor_workflow() + wf[BeamCenter] = sc.vector([0.0, 0.0, 0.0], unit='m') + reference = wf.compute(SolidAngle[SampleRun]) + wf[BeamCenter] = sc.vector([0.03, -0.02, 0.0], unit='m') + assert sc.identical(wf.compute(SolidAngle[SampleRun]), reference) + + def test_loki_larmor_workflow_compute_with_single_pixel_mask(larmor_workflow): wf = larmor_workflow(no_masks=False) wf[UncertaintyBroadcastMode] = UncertaintyBroadcastMode.drop From 6c69938376a22aeac36e4f9965df8fd9c57ae63a Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Wed, 26 Aug 2026 05:15:45 +0000 Subject: [PATCH 4/7] feat(sans): treat the beam center as a beam direction The beam center was applied as the same transverse shift to every pixel. On an instrument with banks at different distances, such as Loki, that is wrong: the beam center is set by the collimation, so it describes a beam direction, and a given angular deviation shows up as a proportionally smaller transverse offset on a bank closer to the sample. Applying the offset determined on the rear bank unchanged to the window frames overcorrects them by up to a factor of five. BeamCenter therefore becomes the position of the beam center relative to the sample: the transverse offset together with the distance at which it was determined. That distance is what turns an offset into a direction, so it has to be part of the value; a beam center given as an offset alone is now rejected rather than silently misapplied. A zero vector still means "no correction". The finders report the distance they used, so values obtained from them need no change beyond being carried around whole. Every pixel is then shifted in proportion to its own distance from the sample, which also covers the depth of a bank without any special treatment. Note that the distance reported by the center-of-mass finder is the intensity-weighted mean depth of the bank rather than its geometric center; see the docstring for why that is consistent, and for the limits of resolving anything within a bank. For the Loki-at-Larmor reference data the results move by less than 0.3 sigma of their own statistical uncertainty in almost every bin, so the reference results are regenerated. --- .../common/beam-center-finder.ipynb | 16 ++ .../esssans/src/ess/loki/larmor_workflow.py | 6 +- .../src/ess/sans/beam_center_finder.py | 151 +++++++++++------- packages/esssans/src/ess/sans/conversions.py | 49 ++++-- packages/esssans/src/ess/sans/parameters.py | 4 +- packages/esssans/src/ess/sans/types.py | 23 ++- .../esssans/tests/beam_center_finder_test.py | 71 +++++++- packages/esssans/tests/beam_center_test.py | 47 ++++-- .../tests/isissans/sans2d_reduction_test.py | 8 +- packages/esssans/tests/loki/iofq_test.py | 4 +- ...ce_IofQ_UncertaintyBroadcastMode.drop.hdf5 | Bin 15776 -> 15776 bytes ..._IofQxy_UncertaintyBroadcastMode.drop.hdf5 | Bin 73376 -> 73376 bytes 12 files changed, 281 insertions(+), 98 deletions(-) diff --git a/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb b/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb index 736fc73fe..887497cdb 100644 --- a/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb +++ b/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb @@ -188,6 +188,10 @@ "id": "13", "metadata": {}, "source": [ + "The result is the beam center relative to the sample.\n", + "Its component along the beam is the distance from the sample at which the transverse offset was determined, here the distance of the detector panel.\n", + "That distance is part of the result because the same beam direction corresponds to a proportionally smaller transverse offset on a detector closer to the sample.\n", + "\n", "We can now update our previous figure with the new position of the beam center (pink dot),\n", "which is clearly in the center of the beam/beam stop." ] @@ -443,16 +447,28 @@ "metadata": {}, "outputs": [], "source": [ + "from ess.sans.beam_center_finder import _BeamPlane\n", + "from ess.sans.conversions import ElasticCoordTransformGraph\n", + "\n", "workflow = workflow.copy()\n", "workflow[QBins] = q_bins\n", "workflow[ReturnEvents] = False\n", "workflow[DimsToKeep] = ()\n", "workflow[WavelengthMask] = None\n", "workflow[WavelengthBands] = None\n", + "# Offsets inside the plane normal to the beam only define a beam center together with\n", + "# the distance from the sample at which they are given. We take that distance from the\n", + "# center-of-mass estimate above.\n", + "plane = _BeamPlane.from_beam_center(\n", + " data=workflow.compute(CorrectedDetector[SampleRun, Numerator]),\n", + " graph=workflow.compute(ElasticCoordTransformGraph[SampleRun]),\n", + " beam_center=com,\n", + ")\n", "kwargs = dict( # noqa: C408\n", " workflow=workflow,\n", " detector=detector['data'],\n", " norm=workflow.compute(CleanDirectBeam),\n", + " plane=plane,\n", ")" ] }, diff --git a/packages/esssans/src/ess/loki/larmor_workflow.py b/packages/esssans/src/ess/loki/larmor_workflow.py index 249ab9ba1..0ee8d66e4 100644 --- a/packages/esssans/src/ess/loki/larmor_workflow.py +++ b/packages/esssans/src/ess/loki/larmor_workflow.py @@ -188,5 +188,9 @@ def LokiAtLarmorTutorialWorkflow() -> sciline.Pipeline: data.loki_tutorial_run_60392() ) workflow[Filename[EmptyBeamRun]] = str(data.loki_tutorial_run_60392()) - workflow[BeamCenter] = sc.vector(value=[-0.02914868, -0.01816138, 0.0], unit='m') + # Beam center determined with `beam_center_from_center_of_mass`, the Z component + # being the distance from the sample at which it was determined. + workflow[BeamCenter] = sc.vector( + value=[-0.02914868, -0.01816138, 4.11610], unit='m' + ) return workflow diff --git a/packages/esssans/src/ess/sans/beam_center_finder.py b/packages/esssans/src/ess/sans/beam_center_finder.py index f88526f52..746ea85d2 100644 --- a/packages/esssans/src/ess/sans/beam_center_finder.py +++ b/packages/esssans/src/ess/sans/beam_center_finder.py @@ -2,6 +2,7 @@ # Copyright (c) 2023 Scipp contributors (https://github.com/scipp) import uuid +from dataclasses import dataclass import numpy as np import sciline @@ -120,7 +121,6 @@ def _find_beam_center( > slope * distance_to_center.fields.x - beam_stop_arm_width ) - center.data.fields.z = sc.scalar(0.0, unit=center.data.unit) return center.data @@ -180,7 +180,16 @@ def beam_center_from_center_of_mass_alternative( workflow = _with_default_beam_center(workflow) data = workflow.compute(CorrectedDetector[SampleRun, Numerator]) - return _find_beam_center(data, beam_stop_radius, beam_stop_arm_width) + graph = workflow.compute(ElasticCoordTransformGraph[SampleRun]) + com = _find_beam_center(data, beam_stop_radius, beam_stop_arm_width) + return BeamCenter(com - _sample_position(data, graph)) + + +def _sample_position(data: sc.DataArray, graph: dict) -> sc.Variable: + """Sample position as defined by the coordinate transformation graph.""" + return data.transform_coords('sample_position', graph=graph).coords[ + 'sample_position' + ] def _with_default_beam_center(workflow: sciline.Pipeline) -> sciline.Pipeline: @@ -206,9 +215,37 @@ def beam_center_from_center_of_mass(workflow: sciline.Pipeline) -> BeamCenter: The center-of-mass is simply the weighted mean of the positions. Areas with low counts are excluded from the center of mass calculation, as they typically fall into asymmetric regions of the detector panel and would thus lead - to a biased result. The beam is assumed to be roughly aligned with the Z axis. - The returned beam center is the component normal to the beam direction, projected - onto the X-Y plane. + to a biased result. + + The result is the center-of-mass relative to the sample, i.e., the transverse offset + of the beam together with the distance from the sample at which that offset was + determined. See :py:class:`ess.sans.types.BeamCenter`. + + On a bank with depth, the reported distance is the intensity-weighted mean depth, + not the geometric center of the bank: layers closer to the sample see more counts + and pull it forward. That is consistent rather than wrong. The transverse position + of the beam is linear in the distance from the sample, so any intensity-weighted + average of points on the beam is again a point on the beam. The weighting moves the + result along the beam, not away from it, and the reported distance says where it + ended up. + + This holds as long as the intensity is symmetric around the beam at every depth. It + is not exactly true: masking, the shadow of the beam stop and, with gravity, the + wavelength-dependent drop all bias the center-of-mass, and they do so differently at + different depths. The resulting uncertainty on the distance is a few centimetres for + a Loki bank, which is of the order of the depth of the bank itself. The distance is + used to extrapolate the transverse offset to other banks, where an error of a few + centimetres out of several metres is negligible, but it means the variation of the + correction *within* one bank is not resolved any better than the noise on it. + + The result is anchored at the sample position, so an error in the sample position at + the time of determination tilts the inferred beam direction by that error divided by + the distance. One millimetre of transverse error at five metres is 0.2 mrad, which + is 0.24 mm of transverse error on a bank one metre from the sample. Errors along the + beam are second order and negligible. Note that this is an error on the beam + direction and does not require the sample to be in the same place for the run the + beam center is applied to: the direction is re-anchored at that run's own sample + position. Parameters ---------- @@ -253,53 +290,50 @@ def beam_center_from_center_of_mass(workflow: sciline.Pipeline) -> BeamCenter: pos = pos[select] com = sc.sum(pos * v) / v.sum() - # We compute the shift between the incident beam direction and the center-of-mass. - # Both are anchored at the sample, so the center-of-mass must be taken relative to - # the sample position. - coords = summed.transform_coords( - ['incident_beam', 'sample_position'], graph=graph - ).coords - incident_beam = coords['incident_beam'] - n_beam = incident_beam / sc.norm(incident_beam) - com = com - coords['sample_position'] - com_shift = com - sc.dot(com, n_beam) * n_beam - xy = [com_shift.fields.x.value, com_shift.fields.y.value] - return BeamCenter( - _offsets_to_vector( - xy=xy, - unit_vectors=_beam_plane_unit_vectors(data=summed, graph=graph), - unit=summed.coords['position'].unit, - ) - ) + # The center-of-mass is a point on the beam, so relative to the sample it is the + # beam center, including the distance at which it was determined. + return BeamCenter(com - _sample_position(summed, graph)) -def _beam_plane_unit_vectors( - data: sc.DataArray, graph: dict -) -> tuple[sc.Variable, sc.Variable]: +@dataclass(frozen=True) +class _BeamPlane: """ - Return two unit vectors spanning the plane normal to the incident beam. + Plane normal to the incident beam in which beam-center offsets are expressed. - These do not depend on the beam center, which is applied to the scattered beam and - leaves the incident beam unchanged. + ``axis`` points from the sample to the plane, i.e., it carries the distance at which + the beam center is determined. Offsets alone do not define a beam direction, so + searching for a beam center means searching within such a plane. """ - coords = data.transform_coords( - ['cyl_x_unit_vector', 'cyl_y_unit_vector'], graph=graph - ).coords - return coords['cyl_x_unit_vector'], coords['cyl_y_unit_vector'] + unit_x: sc.Variable + unit_y: sc.Variable + axis: sc.Variable + + @staticmethod + def from_beam_center( + data: sc.DataArray, graph: dict, beam_center: sc.Variable + ) -> '_BeamPlane': + """Plane containing ``beam_center``, normal to the incident beam.""" + coords = data.transform_coords( + ['cyl_x_unit_vector', 'cyl_y_unit_vector', 'incident_beam'], graph=graph + ).coords + incident_beam = coords['incident_beam'] + direction = incident_beam / sc.norm(incident_beam) + return _BeamPlane( + unit_x=coords['cyl_x_unit_vector'], + unit_y=coords['cyl_y_unit_vector'], + axis=sc.dot(beam_center, direction) * direction, + ) -def _offsets_to_vector( - xy: list[float], - unit_vectors: tuple[sc.Variable, sc.Variable], - unit: str, -) -> sc.Variable: - """ - Convert x,y offsets inside the plane normal to the beam to a vector in absolute - coordinates. - """ - center = xy[0] * unit_vectors[0] + xy[1] * unit_vectors[1] - center.unit = unit - return center + def offsets(self, beam_center: sc.Variable) -> list[float]: + """Components of ``beam_center`` within the plane.""" + return [sc.dot(beam_center, e).value for e in (self.unit_x, self.unit_y)] + + def beam_center(self, xy: list[float]) -> sc.Variable: + """Beam center given by offsets within the plane.""" + center = xy[0] * self.unit_x + xy[1] * self.unit_y + center.unit = self.axis.unit + return center + self.axis def _iofq_in_quadrants( @@ -307,7 +341,7 @@ def _iofq_in_quadrants( workflow: sciline.Pipeline, detector: sc.DataArray, norm: sc.DataArray, - unit_vectors: tuple[sc.Variable, sc.Variable], + plane: _BeamPlane, ) -> dict[str, sc.DataArray]: """ Compute the intensity as a function of Q inside 4 quadrants in Phi. @@ -320,8 +354,8 @@ def _iofq_in_quadrants( The raw detector. norm: The denominator data for normalization. - unit_vectors: - Unit vectors spanning the plane normal to the beam, defining ``xy``. + plane: + The plane normal to the beam in which ``xy`` are given. Returns ------- @@ -335,9 +369,7 @@ def _iofq_in_quadrants( quadrants = ['south-west', 'south-east', 'north-east', 'north-west'] workflow = workflow.copy() - workflow[BeamCenter] = _offsets_to_vector( - xy=xy, unit_vectors=unit_vectors, unit=detector.coords['position'].unit - ) + workflow[BeamCenter] = plane.beam_center(xy) graph = workflow.compute(ElasticCoordTransformGraph[SampleRun]) calibrated = workflow.compute(CorrectedDetector[SampleRun, Numerator]) with_phi = calibrated.transform_coords( @@ -573,10 +605,13 @@ def beam_center_from_iofq( workflow[QBins] = q_bins # Use center of mass to get initial guess for beam center - com_shift = beam_center_from_center_of_mass(workflow) - logger.info('Initial guess for beam center: %s', com_shift) + com = beam_center_from_center_of_mass(workflow) + logger.info('Initial guess for beam center: %s', com) - unit_vectors = _beam_plane_unit_vectors(data=data, graph=graph) + # The refinement below only varies the offsets within the plane normal to the beam. + # The distance at which the beam center is determined is taken from the initial + # guess and kept fixed. + plane = _BeamPlane.from_beam_center(data=data, graph=graph, beam_center=com) coords = data.transform_coords( ['cylindrical_x', 'cylindrical_y'], graph=graph @@ -589,16 +624,14 @@ def beam_center_from_iofq( # Refine using Scipy optimize res = minimize( _cost, - x0=[com_shift.fields.x.value, com_shift.fields.y.value], - args=(workflow, detector, norm, unit_vectors), + x0=plane.offsets(com), + args=(workflow, detector, norm, plane), bounds=bounds, method=minimizer, tol=tolerance, ) - center = _offsets_to_vector( - xy=res.x, unit_vectors=unit_vectors, unit=data.coords['position'].unit - ) + center = plane.beam_center(res.x) logger.info('Final beam center value: %s', center) logger.info('Beam center finder minimizer info: %s', res) return center diff --git a/packages/esssans/src/ess/sans/conversions.py b/packages/esssans/src/ess/sans/conversions.py index d49c87119..8d4edff17 100644 --- a/packages/esssans/src/ess/sans/conversions.py +++ b/packages/esssans/src/ess/sans/conversions.py @@ -1,5 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2023 Scipp contributors (https://github.com/scipp) +from collections.abc import Callable + import sciline import scipp as sc import scippnexus as snx @@ -34,20 +36,44 @@ ) -def _scattered_beam_with_beam_center(beam_center: sc.Variable): +def _scattered_beam_with_beam_center( + beam_center: sc.Variable, incident_beam: sc.Variable +) -> Callable[[sc.Variable, sc.Variable], sc.Variable]: """ Return a provider for ``scattered_beam`` that accounts for the beam center. - Scattering angles must be measured relative to the actual beam, which in general - does not coincide with the nominal beam axis defined by source and sample. Shifting - the pixel positions by the beam center maps the actual beam onto the nominal axis, - so that all angles derived from the scattered beam are relative to the actual beam. + Scattering angles must be measured relative to the actual beam. The beam passes + through the sample, but its direction, set by the collimation, in general deviates + from the nominal beam axis defined by source and sample. The beam center is a point + on the actual beam, so together with the sample position it defines that direction. + + Every pixel is shifted transversely in proportion to its distance from the sample, + which maps the actual beam onto the nominal axis: by the full transverse offset at + the distance where the beam center was determined, by half of it at half that + distance. Only the ratio of the offset to that distance is used, so scaling + ``beam_center`` leaves the result unchanged. + + The shift is a shear rather than a rotation, hence exact along the beam and + approximate elsewhere, with a relative error in ``two_theta`` of the order of the + squared beam tilt, i.e., below 1e-5 for a beam center of 20 mm at 5 m. """ + axis = incident_beam / sc.norm(incident_beam) + distance = sc.dot(beam_center, axis) + if distance.value <= 0.0: + raise ValueError( + f'Invalid beam center {beam_center}. The beam center is the position of ' + 'the beam relative to the sample, so its component along the beam must be ' + 'the (positive) distance from the sample to the plane in which the beam ' + 'center was determined. A beam center given as a transverse offset alone, ' + 'without that distance, cannot define a beam direction.' + ) + offset = beam_center - distance * axis def scattered_beam( position: sc.Variable, sample_position: sc.Variable ) -> sc.Variable: - return position - sample_position - beam_center + beam = position - sample_position + return beam - offset * (sc.dot(beam, axis) / distance) return scattered_beam @@ -163,17 +189,22 @@ def sans_elastic( source_position: Position of the source as a vector. beam_center: - Offset of the beam from the nominal beam axis defined by source and sample, - in the plane normal to the beam. + Position of the beam center relative to the sample, i.e., the transverse offset + of the beam together with the distance from the sample at which that offset was + determined. Set to a zero vector to apply no correction. """ # noqa: E501 graph = { **beamline.beamline(scatter=True), **tof.elastic_Q('wavelength'), 'sample_position': lambda: sample_position, 'source_position': lambda: source_position, - 'scattered_beam': _scattered_beam_with_beam_center(beam_center), 'gravity': lambda: gravity, } + # A zero beam center means no correction, leaving the plain beamline graph. + if sc.norm(beam_center).value != 0.0: + graph['scattered_beam'] = _scattered_beam_with_beam_center( + beam_center, incident_beam=sample_position - source_position + ) if correct_for_gravity: del graph['two_theta'] graph[('two_theta', 'phi')] = scattering_angles_with_gravity diff --git a/packages/esssans/src/ess/sans/parameters.py b/packages/esssans/src/ess/sans/parameters.py index 561e88d57..cfb5f1efe 100644 --- a/packages/esssans/src/ess/sans/parameters.py +++ b/packages/esssans/src/ess/sans/parameters.py @@ -15,7 +15,7 @@ MultiFilenameParameter, ParamWithOptions, StringParameter, - Vector2dParameter, + Vector3dParameter, parameter_registry, ) @@ -112,7 +112,7 @@ parameter_registry[DirectBeamFilename] = FilenameParameter.from_type( DirectBeamFilename, switchable=True ) -parameter_registry[BeamCenter] = Vector2dParameter.from_type( +parameter_registry[BeamCenter] = Vector3dParameter.from_type( BeamCenter, default=sc.vector([0, 0, 0], unit='m') ) diff --git a/packages/esssans/src/ess/sans/types.py b/packages/esssans/src/ess/sans/types.py index 1c7152070..ee5340097 100644 --- a/packages/esssans/src/ess/sans/types.py +++ b/packages/esssans/src/ess/sans/types.py @@ -137,7 +137,28 @@ class TransmissionRun(Generic[ScatteringRunType]): """Filename of direct beam correction""" BeamCenter = NewType('BeamCenter', sc.Variable) -"""Beam center, may be set directly or computed using beam-center finder""" +"""Position of the beam center relative to the sample. + +The beam passes through the sample, but its direction, set by the collimation, in +general deviates from the nominal beam axis defined by source and sample. Together with +the sample position, the beam center defines that direction: it is a point on the actual +beam, given as an offset from the sample. + +Its component along the nominal beam is therefore the distance from the sample at which +the transverse offset was determined, typically the distance of the detector bank used +for the beam-center determination. Recording that distance is essential, since the same +angular deviation of the beam corresponds to a proportionally smaller transverse offset +on banks closer to the sample. + +Only the direction of this vector enters the correction, its magnitude cancels. A value +determined on one detector bank therefore applies to all banks, and, as long as the beam +direction is set by the collimation alone, also to a detector that has been moved to a +different distance from the sample. The value is tied to the collimation that produced +it, so re-determine the beam center whenever the slits change. + +Set to a zero vector to apply no beam-center correction. May be set directly or computed +using a beam-center finder, see :py:mod:`ess.sans.beam_center_finder`. +""" WavelengthMask = NewType('WavelengthMask', sc.DataArray | None) """Optional wavelength mask""" diff --git a/packages/esssans/tests/beam_center_finder_test.py b/packages/esssans/tests/beam_center_finder_test.py index edad55e32..a664f09c6 100644 --- a/packages/esssans/tests/beam_center_finder_test.py +++ b/packages/esssans/tests/beam_center_finder_test.py @@ -73,27 +73,82 @@ def make_workflow( return workflow +DISTANCE = sc.scalar(5.0, unit='m') + + def test_center_of_mass_finds_center_of_symmetric_pattern() -> None: center = sc.vector([0.1, -0.07, 0.0], unit='m') workflow = make_workflow( - detector=make_detector(center=center, distance=sc.scalar(5.0, unit='m')), + detector=make_detector(center=center, distance=DISTANCE), sample_position=sc.vector([0, 0, 0], unit='m'), ) result = beam_center_from_center_of_mass(workflow) - assert sc.allclose(result, center, atol=sc.scalar(1e-3, unit='m')) + assert sc.allclose( + result, center + DISTANCE * sc.vector([0, 0, 1]), atol=sc.scalar(1e-3, unit='m') + ) + + +def test_center_of_mass_records_the_distance_at_which_it_was_determined() -> None: + # The beam center only defines a beam direction together with the distance from the + # sample at which it was determined, so the finder must report that distance. + center = sc.vector([0.1, -0.07, 0.0], unit='m') + near = beam_center_from_center_of_mass( + make_workflow( + detector=make_detector(center=center, distance=sc.scalar(2.0, unit='m')), + sample_position=sc.vector([0, 0, 0], unit='m'), + ) + ) + far = beam_center_from_center_of_mass( + make_workflow( + detector=make_detector(center=center, distance=sc.scalar(8.0, unit='m')), + sample_position=sc.vector([0, 0, 0], unit='m'), + ) + ) + tol = sc.scalar(1e-3, unit='m') + assert sc.isclose(near.fields.z, sc.scalar(2.0, unit='m'), atol=tol) + assert sc.isclose(far.fields.z, sc.scalar(8.0, unit='m'), atol=tol) def test_center_of_mass_is_measured_relative_to_the_sample_position() -> None: - # Pattern is centered on the beam axis through the sample, so there is no offset - # of the beam center, despite the sample being off-axis. + # Pattern is centered on the beam axis through the sample, so there is no transverse + # offset of the beam center, despite the sample being off-axis. sample_position = sc.vector([0.1, -0.07, 0.0], unit='m') workflow = make_workflow( - detector=make_detector( - center=sample_position, distance=sc.scalar(5.0, unit='m') - ), + detector=make_detector(center=sample_position, distance=DISTANCE), sample_position=sample_position, ) result = beam_center_from_center_of_mass(workflow) assert sc.allclose( - result, sc.vector([0, 0, 0], unit='m'), atol=sc.scalar(1e-3, unit='m') + result, + DISTANCE * sc.vector([0, 0, 1]), + atol=sc.scalar(1e-3, unit='m'), + ) + + +def test_center_of_mass_result_yields_zero_scattering_angle_at_the_pattern_center() -> ( + None +): + center = sc.vector([0.1, -0.07, 0.0], unit='m') + sample_position = sc.vector([0, 0, 0], unit='m') + workflow = make_workflow( + detector=make_detector(center=center, distance=DISTANCE), + sample_position=sample_position, + ) + beam_center = beam_center_from_center_of_mass(workflow) + graph = sans_elastic( + CorrectForGravity(False), + sample_position=Position[snx.NXsample, SampleRun](sample_position), + source_position=Position[snx.NXsource, SampleRun]( + sample_position - sc.vector([0, 0, 20.0], unit='m') + ), + beam_center=BeamCenter(beam_center), + gravity=gravity_vector(), + ) + da = sc.DataArray( + data=sc.scalar(1.0), + coords={'position': center + DISTANCE * sc.vector([0, 0, 1])}, + ) + two_theta = da.transform_coords('two_theta', graph=graph).coords['two_theta'] + assert sc.isclose( + two_theta, sc.scalar(0.0, unit='rad'), atol=sc.scalar(1e-4, unit='rad') ) diff --git a/packages/esssans/tests/beam_center_test.py b/packages/esssans/tests/beam_center_test.py index ef1152c47..51dfe478c 100644 --- a/packages/esssans/tests/beam_center_test.py +++ b/packages/esssans/tests/beam_center_test.py @@ -13,6 +13,8 @@ # Offset of the source from the sample, i.e., the nominal beam is along Z. SOURCE_OFFSET = sc.vector([0.0, 0.0, -20.0], unit='m') NO_BEAM_CENTER = sc.vector([0.0, 0.0, 0.0], unit='m') +# Beam center determined on a detector 5 m downstream of the sample. +BEAM_CENTER = sc.vector([0.05, -0.03, 5.0], unit='m') def make_graph( @@ -53,26 +55,30 @@ def test_two_theta_is_zero_on_beam_axis_without_beam_center() -> None: def test_two_theta_is_zero_at_beam_center() -> None: - beam_center = sc.vector([0.05, -0.03, 0.0], unit='m') - position = sc.vector([0.05, -0.03, 5.0], unit='m') - assert_zero_angle(angle(position, make_graph(beam_center=beam_center))) + position = SAMPLE_POSITION + BEAM_CENTER + assert_zero_angle(angle(position, make_graph(beam_center=BEAM_CENTER))) + + +@pytest.mark.parametrize('fraction', [0.2, 0.5, 0.9, 2.0]) +def test_two_theta_is_zero_along_the_beam_at_any_distance(fraction: float) -> None: + # The beam center measured at one distance defines the beam direction, so pixels + # on the same ray but at a different distance also see zero scattering angle. + position = SAMPLE_POSITION + fraction * BEAM_CENTER + assert_zero_angle(angle(position, make_graph(beam_center=BEAM_CENTER))) def test_beam_center_shifts_two_theta() -> None: - position = sc.vector([0.05, -0.03, 5.0], unit='m') + position = SAMPLE_POSITION + BEAM_CENTER without = angle(position, make_graph(beam_center=NO_BEAM_CENTER)) - with_center = angle( - position, make_graph(beam_center=sc.vector([0.05, -0.03, 0.0], unit='m')) - ) + with_center = angle(position, make_graph(beam_center=BEAM_CENTER)) assert without.value > 0.0 assert with_center.value < without.value def test_phi_is_measured_around_the_beam_center() -> None: - beam_center = sc.vector([0.05, -0.03, 0.0], unit='m') # Directly to the right of the beam center, i.e., phi == 0. - position = sc.vector([0.25, -0.03, 5.0], unit='m') - assert_zero_angle(angle(position, make_graph(beam_center=beam_center), name='phi')) + position = SAMPLE_POSITION + BEAM_CENTER + sc.vector([0.2, 0, 0], unit='m') + assert_zero_angle(angle(position, make_graph(beam_center=BEAM_CENTER), name='phi')) @pytest.mark.parametrize('correct_for_gravity', [False, True]) @@ -80,11 +86,26 @@ def test_beam_center_is_applied_relative_to_sample_position( correct_for_gravity: bool, ) -> None: sample_position = sc.vector([0.1, -0.07, 0.0], unit='m') - beam_center = sc.vector([0.05, -0.03, 0.0], unit='m') - position = sample_position + beam_center + sc.vector([0, 0, 5.0], unit='m') + position = sample_position + BEAM_CENTER graph = make_graph( - beam_center=beam_center, + beam_center=BEAM_CENTER, correct_for_gravity=correct_for_gravity, sample_position=sample_position, ) assert_zero_angle(angle(position, graph)) + + +@pytest.mark.parametrize( + 'beam_center', + [ + # Offset without a distance, i.e., the pre-existing 2-D convention. + sc.vector([0.05, -0.03, 0.0], unit='m'), + # Upstream of the sample. + sc.vector([0.05, -0.03, -5.0], unit='m'), + ], +) +def test_beam_center_without_a_positive_distance_raises( + beam_center: sc.Variable, +) -> None: + with pytest.raises(ValueError, match='distance'): + make_graph(beam_center=beam_center) diff --git a/packages/esssans/tests/isissans/sans2d_reduction_test.py b/packages/esssans/tests/isissans/sans2d_reduction_test.py index e32af35cc..8229bf1f6 100644 --- a/packages/esssans/tests/isissans/sans2d_reduction_test.py +++ b/packages/esssans/tests/isissans/sans2d_reduction_test.py @@ -197,7 +197,9 @@ def test_pixel_dependent_direct_beam_is_supported(pipeline, uncertainties): assert result.dims == ('Q',) -MANTID_BEAM_CENTER = sc.vector([0.09288, -0.08195, 0], unit='m') +# Transverse offset obtained from Mantid, at the distance of the SANS2D detector, which +# is where it was determined. +MANTID_BEAM_CENTER = sc.vector([0.09288, -0.08195, 4.0], unit='m') def test_beam_center_from_center_of_mass_is_close_to_verified_result(pipeline): @@ -209,7 +211,7 @@ def test_beam_center_from_center_of_mass_is_close_to_verified_result(pipeline): def test_beam_center_from_center_of_mass_independent_of_set_beam_center(pipeline): - pipeline[BeamCenter] = sc.vector([0.1, -0.1, 0], unit='m') + pipeline[BeamCenter] = sc.vector([0.1, -0.1, 3.0], unit='m') center = sans.beam_center_from_center_of_mass(pipeline) assert sc.allclose(center, MANTID_BEAM_CENTER, atol=sc.scalar(3e-3, unit='m')) @@ -262,7 +264,7 @@ def test_beam_center_finder_works_with_direct_beam(pipeline): reason="Beam center finder tests are slow and we are revisiting the approach." ) def test_beam_center_finder_independent_of_set_beam_center(pipeline): - pipeline[BeamCenter] = sc.vector([0.1, -0.1, 0], unit='m') + pipeline[BeamCenter] = sc.vector([0.1, -0.1, 3.0], unit='m') q_bins = sc.linspace('Q', 0.02, 0.3, 71, unit='1/angstrom') center_with_direct_beam = sans.beam_center_finder.beam_center_from_iofq( workflow=pipeline, q_bins=q_bins diff --git a/packages/esssans/tests/loki/iofq_test.py b/packages/esssans/tests/loki/iofq_test.py index 5e1f6d0ad..5dc0527e3 100644 --- a/packages/esssans/tests/loki/iofq_test.py +++ b/packages/esssans/tests/loki/iofq_test.py @@ -280,7 +280,7 @@ def test_beam_center_from_center_of_mass_is_close_to_verified_result(larmor_work pipeline, loki.data.loki_tutorial_mask_filenames() ) center = sans.beam_center_from_center_of_mass(pipeline) - reference = sc.vector([-0.0291487, -0.0181614, 0], unit='m') + reference = sc.vector([-0.0291487, -0.0181614, 4.1161], unit='m') assert sc.allclose(center, reference) @@ -294,7 +294,7 @@ def test_beam_center_from_center_of_mass_alternative_is_close_to_verified_result center = sans.beam_center_finder.beam_center_from_center_of_mass_alternative( pipeline ) - reference = sc.vector([-0.0248743, -0.0166965, 0], unit='m') + reference = sc.vector([-0.0248743, -0.0166965, 4.12268], unit='m') assert sc.allclose(center, reference) diff --git a/packages/esssans/tests/loki/reference_IofQ_UncertaintyBroadcastMode.drop.hdf5 b/packages/esssans/tests/loki/reference_IofQ_UncertaintyBroadcastMode.drop.hdf5 index bb6aefc33edaee32b6a5220518356a7e89c12488..1742644c3534b2388b0bba56ef7b42b84b22dcf1 100644 GIT binary patch delta 817 zcmV~$3rv$&6ae6938ce}Q41z&prf-OC=#sPbJ;xSf}8ljs8Mu6qFCR6V-n-E41cu4 z&J_?^#UdnDt%9g?y5S=-a0ZAVYRW^zAPAeUBZ^QM4@?#*(vxIOcke;oUvBET|Xth3#mwK1Ih+Gmfg8aA3{xfmUg zhp#)caeuT4*R`5ZapM45rC=jQ{hEuLhL2!zYbH)K8}OIHsL0f8dF0Atjl60?3Fi}x zyb%(3lGj|W@=@^MZ9^d3>*1015>!4o3h#Zhptmj=mZz+N>py%AW&I3%oiibPsXw$V z@P!biH^k5PfZ4S&Fo%5v)`WK~MDJp`=lYoBGWW2l8=MU8J!6AK-OMiUVo4EQEXCfz zVinJrcjt3<`_KzE=K70?;@7MuYk+MJA7<0zM%g>{2X?!DoCVK!gCV0kyiJfpMc~I^ zuU5eN4GQS_b_$#>nF8+pey~HMfr5ZQXb230&wb{=OWiy$L_|uUd=mp^&1%@y6bG^8 z@o-qS4o2=ILgc&*@bcUbveInuGnl}fkpmSWR?zYy&?lY(uP=WG|4(nh?D{`I*I5M` z<^XL$8$8W;0n@hhfzRMLbd-+6KBFfOxUAp{tEcnCRiE)s^5=4o!?XC4e+0i~ni0(# qTUYY+$#MK*>UOSZ+{kly2JhaP$IEse<#msbaKo(=zxk^VO#L6`qhmn; delta 817 zcmV-11J3-Qd!T!uAb*1IhCtfAlR#FvmOyqzlR%V!j6gr&f5?(Lbaf#6O<;wLhF(sy`fIpg%J?nLiTvjX!^u zh(9#|gFheLc|Xw}Y(G;WVn4`LS3fv>P(QK3Nk2$vLqBQ+Jbypb4>muLye>a=#4A6L z{3kzdydppI6CXe0yBj|ja~3}b*b+bFKoURt{R%%K6$w8@V+TK71qDCOGy*@`$M-%l zCjCB(L-Ia_a`HZNXXQS7ALc%xS>`_XblW})QQkfp($qeG_R&5KrOQ5W$IL#xz|1}r z=g22s_2l1#r$1tQmlDDuv zm7%IWIR&LY?mD18LusEr_z9do7}labn}nA>JN1-4BW{#F2z8r2GQ5>OI~tHagQSZ- zP#ly#z-)#-+-;0LnZ1xctbUI^dJ~F1fFq1P4aR^z{(qH;K0J$yK05`GK2LXpK7)gU zK16asI<$oeIsnGfInNTOIV0YNIofesImhKPIdd%%ImKu4I1dKOIMWraI9I2XICC_G zIL$?DIJyp2IAU)_IK9s|ICSwTIB7v2I5mwHILOryIA=!(ICZ-NIQ3QlIKvhAH`2iH zH&apSH-C1fNmz| z?l*P+?l%a+@;7}{{5OOi`Ztr_{x=7a1UPc61~@~C2{_LW2{;_h6F3>15jd(P7&tWr z7dTt(A2>8ACO8Q>CODL$FgW=OFE}WLG&oFUI)6BMc1Sp(Qd2mkwNyCvpuo zpJ6z19eOwhM}9c);*B^TD~dSWHBRhKx4v6?vPZJ{`=^RzesD!MpOHoiC^O~5!O z1JF1~oZC2LtLHccNb5LV5B)e~0{}V3pbR voFzm#8~0N=61`SAC0=GZ1H524jQD^#C;N>#Wf_z?%2<^-l6sl5A0vSpz7|+2 diff --git a/packages/esssans/tests/loki/reference_IofQxy_UncertaintyBroadcastMode.drop.hdf5 b/packages/esssans/tests/loki/reference_IofQxy_UncertaintyBroadcastMode.drop.hdf5 index 7b3593bcddc2f7794bded255b7d8cbf7278f2ed0..c5851a6ccae27b038441fd11f06612e30b8b38f3 100644 GIT binary patch literal 73376 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 bwh?%{ju7fe8$N%8zzF9z-BlE@9}fQyxNP!u literal 73376 zcmeFY2UJzfvM##FQHhd71Op0YNusQ;rizM)84wdeK@>A$LJR~WK>-mF5CtU&0wzEt zE5Sq(kQ@ZXKu{FKe5VL|pYz|d-yZkeH{Q78-G8nzR?pepv%0%xb#?Vu)hCS%=MEB8 z66O59goQc$9Lc`hfxln<*CiF6zN~@gfpY8qn?I!-&WZl#Xx=|JJRAYe?=pq{e93n=^;Q)*PTekoMR52Y~@P|H%LQ=Kl%~7|ofvK`zZZ8I(;wo_v`l*Hy_`v$<_r1ZVO;rzS# zYoYX~;(yjI{V)HW{QsT<|7!l8=$E4b2JErfvfGZGuzPGAH`#1k|NFM@>R%@Q+w<3m z{|}vw{q6m8zWwjd-`}MFN$GAaa{;}+F2K3OG-aq3wqw*)^;RyYg z^Yh5?Kjj<$B>(b%-t5IDeZ1|Tm;-zs_$*U(C+ba{%;5~E**-nPQZr=r>`X^ToBjQi z2bS}JhWgq4N6)dD19X0m?f2C`RF3)Y@4Rk{-9URne~LL9wrsa?(wfSS?$0&Q{?dJa zo(JClM}B`t2KqNZZ=l^j2G0N7u2?_)fp+@Z)zxOd=bvlfy}dSj?6%l#vv=xe=%9a7 zKDfX9ulYm;V>} z{n?z90mcku{GI;IfxkKMHwXUaz~3DBn*)Dy;BOB6&4Ir;@HYqk=D`0E99X_+u^|tK z?;oiD`TmXI01oh1ykTJ9s@lK7AE@_Nd_|#ubd5v*)EKBIto-M0Y`;I@{|F}hzt9OD z7BT1>S^q$JIAi;$^6>u2SlHjjs{Zt^&jWsuMCCsf8vE(=S7%XN;XeAjynhG^_j^?M zcsQzm>KJVqsQWt==dhp+d+~5Y**As%Cp_)DWa+PGVn|e)H`FD}B4S zZF2gZA;$t}zh%tIs^3RrWz|>j-~CClGW|!a8P3+-TbwrS*s{sa@y}cR;{Gp5NU734 z-qjZ4X#ZkC(t-Ilfam>r`8|nqtov^N_-hn6wwt#0LEry!-m(6r-`4=0|CIK3?03?a z-~ar3j{Xy;7G&=gIJ-95^tqV+<2ZlQ<@p!%|EjnCNl%!g&W_e*%O?A6cD5V^w&CAB z{7v^yPlY*iXPPXZ!{(VTGy9$N6%6oWApNVKfa$Bq;UxCs-TjXo7L46$HF@%6tG@uV z{rOX@mi_^R`=6&;^#jKP?F_6>1N8pd?tnfT+mE9U)En?m4A3zeDEM!t1A1TK=N|$a z`|13XumAi0i2+Rfzv?3YIbQmmFEB2JE_nuIb!D|J-iyDPVX8_VPbdGAb#cs{N{7*V0}8IJO;Vjtl)Li+rU({ifeFI zhC7?<&CR&3gew82sCJ%+kX3HD_GS+5hkW8zm4+f^!UZfCa|rytcktQF4zAM!u=$E7 zf+V=;p3O&@cS2#}k%+`h9$K{JIQ))Az{-6mT#L;yK~ zP6$SdT}Uhsz`^)fD5ai(-De3JuM`bE`Adi$=K^VoQOFNB!-lrOSg`sP0(Cqflk9{w zmBVl@r<{AP@itfeU>GKEtLHvE9Rr{E1rWCC;&zFs!)4nvC@2lW)>1pX(=$e)RvLGr zgC_(}h~eczQ}C|efn?q+ZrAA}5UzNR%7+}ZE`!==?c@As&jW~JYDE7~P zfa!+a*j{lH1?|tFHRU>D)OhKoswZUZSbi_zBj;{yY**vZ{MO6ZK7Jz@COEwPaP>Q;RqK3~fzg_}QkMl6{{)HVo3?Vv32rgGoz^3;D z^zKYYsjw%q*VI9w>lpToibQz(MsTNYz?GTy7#3}gxyOTWNXs7l4}&pky&Jq_KXK!4 zR&W*WdT^7L?SiMSGAubVfO!Vo*l#B{xebe+ZH0Ev7j7-jcka-ID^LyUR!DXI)a z$aJg(OhkBr2Z%DS2QB4aWdWKzXh#HCowLp1b%7PaCvna)@Dy4BRv5+l2HJ; zNoz21dJr14`6wF20lqFfytgk?)mT)c=PQQWQS_OZ{|9b zH?72|=&kTv_XJ{2`@uVZCnDpI!}q8Um|M4@+WiD};zuwkE(}JM4k(j~hsHGre4Cwt zyqpBA7~O;#=_*8|WI`>z2BRB`aA4VYD8+ro^wGR@^HK`ZSovrx-~h2krNY84!h=rdBIfj2WnSWpxhw?N`l3(NUw%y$Eg{N~p*X3v{cM3ZPkH}kcPpq-U9Nkyk+oi48;?h8F+Kkrj3YL{dxbBwwxuK5z=gZ-{#Gc6Y9R2v7+xn?!Q$Kn z?&ewD7$Q2Eww)W(r<)7>w}A<$G3d4MF*rQGf-84bnbM@JkeqsjtDUtMS$qd^Yts^v zvz!WJU2P=azK5qeg#Am7z(vFxqZUWNSSt$~Iq%@QsScmtML^xd4XQLmvlEgK#s9#Cn>0B7+zM0r<2d~Xg+qH z$xy~UP5L@Uh+4`-X_&MOEwvg)%X}ngodO@NF_fgH?SrWM;t!Oc5GKJ9FA=eXwFkfP z(8H0p;nLHLUs|#><4Y03Lmnc)NPxDzdI!zar*PA~go$@cQE)IA_t&~(c26=4EFz%M zxe5|;iLl-jfTq+H__ULiQyn+tcC$KrSrqs~oblb$6QwJBFv{yK_+N%2L@*fFHAmy~ z`pr1(6vN811(s(8qCWltUL9M5z?oAro~lYy!Ju0iilfFr-Es*!k5pjcG(NhcJA&G5 z+_1=@jjR437`|cW;WuR{x)O<7e>D|aMVC;zaW(G0FUBq@J2Y)iLH$Zs-2HY2PIJ%0 zxc3fTb)Le;uTfa3UkF>dhbWCmfX&bAnC$Z&)9RjL;k>u-b1TBQhSzu$uSfz}qO?v_ zoEDhp;dWdH{C^2jixeLX9^QgOt2yKnC{K6Iq{z%wlLnOtk=@aalEH4*P&GV`b9#_5nO&BxvwG5xRXw znpPVs(}Zc0$;xF4{pwVvc_Pzj%o;9f^YN4HFFh(XHy|}{MY7+(GkkK{HyF06x#*lUz^*1;&K z6b(Nr!Ov3!)slGV%BA9kRwsmZ2SG@{7p~r3uzhtKDm*Fh85fOk2|x5M4#V>yr*U@0 zR21-BW7j7oXrz7P+H$kGDc3gO>~&zw;XKT$SHwrVW|Vd1raM%aX8h)Hk8=d12Up{2 zkN|C0am8*k9_-`JB=3h(WTha3;tEmXTz-p_sy?`F_XWS4zrb?-88}Q2!}`YwFkZV7 z_tu<6ZEYAF*oN|E#UkMHV{DK}MSFe|)OIIeZDcM~zu&=j!A>Ne;wRBB^$mL#r$Xm&c#NG3j75Yz>3L7ZX_CU5N=Y=W*=32Lcnq zFpmX49-YP(izsY%+6uLcC0M8>ehoYRR5->3VEoWzD2u0{`Cc6Izm?#~jAz(+u^V?! z3lL2dqo?B}XrkG7NX}BG0w*Q9rKwKeITDm8uS_#ftCP8tB6SGq(S;}lvfRedptrgt z$c&-Yn^dX5cnsMlkE06xX(TL2WcgE+PU#EL3O`nt^a#>M4<*Wv=a6?~9%MXf(K{?3 z_iXABSAPY<$>A`5b{8efFW{r?MWmL6V7+1tRKJ8nb43=?Q~a>xryH(_c_Aah6UPO^d8#A4DV|myo9FqJ52gLw(UCu=GhcvX^n!=@F-WYoGHfBk^fceD- z*zbK3gD46)E{@>cQii9^6_CH*jParcP3TxKYJk}}ynOe&5CpM*_*0@jZY#F<%1@Urtp(!;ALeGm-c>8GB{_wpfBr+vP@Szzn>4Ykw@^6@q&?gA%r>?BE)Kl!OZBlh^$Wt6`&7hk|f|amYPN>(cD=Yv`j{aaz}8W=KJYwWHgT8N6)ZB4EcRJaE%6unZ_f zS&hwCr#Cd?k2J5z9Js}Of&ZW)ptT@gHkr%zWG8=f_or04>P%(u9@(jWGYvvAws z9wrN9Vij`_n+*?Pwr>?;#R9N(9x`nn&Uz= zH^_uE8uaMugvB)J;&fWBXiSw`7gOeH5dZUK)X-=|D#MnOLzFI=+|r}P1;fbCZz?HX zoJ6CgRH%F9FRZ=z3G{@A9(}5UrREE4*!>7AEebF#B?~SNH_@Yh4uA3gE0Y6;p3S^FZ7@MG@{ zcywlCne0#QIbLHJzB-C@gBEb+d4iiE+qX~oy%zc%n9!#?&OGq!OP5>pay!Pn=N@QC zf$13@Zeo{TnxyDye3@5;1ld>^TrtJBZJk(`)eSend=#uHM5!tdxo7dx;JPX_PZOis zIv$#%%}WLM-{80}hxW3z*}5YiF>l33c)b#(8es`)f2cxl_Nfz(*i`ztYCPp}xg`B^ z0ZrJ=&`X_#bZLhQfj8GDR# zu`~H8NYQIE5ch4zyt?J~q9LtA(&|REW zbwrD$A0!_nLh3vpECc3|arL+o>x#yfL=$UPGP6JZYzwLB!oXG1vi6tb>AgR2&Y?$?w; zYI!4ObQi+yVLpbY*Wk7AeT*H}3DrX_7`wI`fj3?v+ghA<-jJmC*GG~0#9my&*ZmQTMBx#u3?dX1=gvBqPhDf#_U^`|+J%Oz7bo^2d#LHG`dN8pIKBDmmY*3^jbR5m!j^fjNUK*7Wh}No1 zq`zb3{75zSZmdLB(iePoY(d489!yesjrL@IBG=Eb)PIHX^F>JOfee+O6(?0C1!|HS zM+R=XRF`2&d%_mc#w>H%6Jtedo*pE*&xh%|-%%=yJ5IInr)hD^$a@0&cdcN6W&K-VQXjv*@6eK zXwQZgFT3YS8%k&6o+7>Q1h$SP*tb8$u7wjI+IpOOEHx1gQziT4Sm%W;EIzD6!jNFv zW5gw+j$P=S;e_*=u2`@tFg;}TJ_yhA<(kg92BT$-_|SX?SF$p2SLZ3}in_pG91Gr8 zjWFGP9mlujgIgH`2kDm(X7}C{SB;Ny;`Du~2yJWnh>{#Z%6P*|TupvjJ);+r-v^T~ ztDB#FRiPWo6KF-ZK4l0mC8x)W$@1YAlC3;I9mkH*xD_6hBXyGUll*Dpct3JF=ugUP zPEjkzn_P~$lkzkV`tZPtc4};=q`|XEK1GMbW4R>es!lCy}(T>&0% zxPr4kJg_Ix6ILtTF`~!@Tq!>sats1@jx**iQpd#?M_HVCWV$75&urA6ZD6wf8bV(k zKy%h>n08rVR{T+XUKRt-tq%CIR>Q;C<;x(5GfRc_ss{OoG}IWPTWS@ULfs- z5Y6WJf@k?JRE_7QUok1jX8nRnA$MSLBMS?C8&J^8M^4%zq;XxG&Oa8SAqxd5Z@fIk zy&J^Jn;gvyW!DCNIr=txI8m@3iT|2LE3TW-!n0dx^^}8D(CkUJi~Z^Pn_%iX8%!1* z(e&tU6h-Dl(4(~xv} zKVQKc!vd^nszBkC5IChC!(N_3xQemzq?-f&aDQalM^mvFhy?~oF56|-g#vz zDP4y2BmoL+8H75+add7@C6+5ppu|tMT-nX+_nXzlwU)bu1i7~`G(Q6EXNPc0Aq3JB zdeB=G1F3>YJlXq%#l2){nWz&Ee40oJL+@kaF;)k&SkjxPEY5aXh$cLcpxAUF+ABJm zF0Gd!v9CE~(#t$a%APu@RSc>Ma8%AFebm><5G&;V(oOEMXQ)H+MsjIlt&>&wr zHTnuMGpGXAcHof&pp_b}+QhOauhnIy>)7q2NRCq%2=LxS9**N3i%woDf(egDJlXrRJIA1KXj=jdjqC~tY{E8zX zbttvsC&m3jB&Q=mLvMb;)rCXIuW}eEUmQz6cMYRAE7fU4)d;FHokkTA3nrgp>HYtB(1|o%k)J_p+<-TZ#Ti* zza6(-c`5u`Axg{>5n5S@p-YP)I3@!3tg>+Acqj{4L}5*QG>!&eK>CI|;7`7S&yfkZ zoBj?P2OmbTnl<$1-NNyPv9z0=>wBEt5xn0To43uT1FSFhf&V@#;Il)-APy}ls5j`0 zNQYCQJl@CLM!b|7&2nhQsCUw2F24$b>Yq{bx(R;I^D(7CgH|l(p|!bpaP3zq-pm_B zn?2Mhx0q@WaBS3dPXw!)ALr9Gs-w^>7ni8W-Lk`R!r;e#Ke2hN5=ggtYG7HJJ z-je3%+R{BW7pj`4lYfmt7o24RYW~)p3_EUJAaUny)g4lk&oeX4T_PT$W<=Woh#fK^oN|NC`K7V6K=ft%&W$k@|;ty#Emv$fja@$9q(1 zl|ZUTnj&s+$UrL=u5Y6;*fRnK?IWQ7ayYFMIR<5O0lN3*6$IDq1J8!ni0sy- zgNd~FgD&-MUqmAxETTr4b+mN-LE0vLinKKSsiEgG4X(|mr{2}%q1Q%Rg$0&P;3KK2*HTn=Hq|#plCkA!;*58pwcU;+`p%qcX3e8;M_n3y zYchp7vulEdGKtmkmWIB%IJp;!p1%@likh1R@a`MX| z;opQGif16o6o9)X9mBTy!*r+>Zu5F0Z|FD3+xsDGjww_dD!GxT>bQc}#*$y_7-+WV zVp54G>Ql}8_9L@c-v8dGNG~2l*9E6hc4h?JbwW`$w}@NHt{sp+i1qR+$nlv^GP3Tl z@VkR4EFPbv9SGH$TUc<8LkG7B)8VP(NwQj;PRX@lxrPd>GXDrDqn*oQ9&yYUr6V;a#I_!2Ku zBuQgkA#VTtfCXW9amcI;>+E{)Y4bIlw5mmvRvK!v&mr{MI=IAop*v3;374NCV(xXk z7xcwc$x`kan@;X_A=ZxRxr#SOzo6}PJCb$2ps8#e8dq+C5%U(!6FR_LO@hYEMRdwT z1ln5`vU}`A?$O=n@ZEnFi%s-E@nksWWrl(4(TD)OcqpIE!Ajd-I4#K9#u9_6rAU&N zMvkH9b{e#5t2)(tOeFQ`Gl_2%Lu*%9(CC2mG$nKoeav;E%m{DVBos<<>*8qX=KCaI zP(vK+Uo`i)Jd?jbhY1~O!W12_XG%Jp7_-ZcjPkQ}%vb*<%t~>6#zsw%`TUZXu}iC> z`%xLRz2z!RatR>qW$sj%v4#BiFQG-XhP1Jb=#=*u;-)H-biE2ek)ICOe}cB|AZl4I zP9sn8(fp7mw23!D?RzRrURNUKLodRPSFw0jd2h4E! z$S?3|K0;c~_cXf@4jn&}f%aD+xG>HJ0qZKc1sCn$EnC+o%Z8dGX-dbZ^my5D6sXms zXlW=0FRI3{Gwj~Z&=v1~=HScc3fQF8Kv%FG>t|J?LOK`Wi_5U;n;6aVdWmBGpD@gO zg_qkzsB{u9ZMeoyy_K?*<^BUEhq!cMrY5@wHlS9EnWXvAlw|L&rfd6mP*9O4jr#0M zueu^>`;=tLtuLY0?cYdurZltLON)8tzM6R@wVzq(c#0XK=+BH7@n>{0eVC3ru1uua zYG(DjY0Q-(IVOI5FWDy+kj?Z9y#gBKdQN~UmI{%9@Jkd_6=P-jdyG9*01b-->`RQtX>l(&1O;HY=T%hi ztwASq0?o@!a8k$v&C9%DX`(^-?|6~t(u-3cJ779F1D0mjVJR2_jklMe@xrB#&tDmF zsuW|t>01l%ZhnF4G7)-ZEkso*?wFA1i@ee2U_SXGets{*oBJ_H%y^5PZRPl+#zW_x zO3}JYgJ@#>bW#$Pq2~G#G<)?Va`>uDTI=;mP|<+OIg_Y(_B=Aaxq?pEET&~FHW8-j zKxq%%Nq4v>$(Ed>ExGZuBfo&0d)`s2kO*^O%1B01elc@V&y{(s;LF?yJI|Q4pJ%d^ z&oiT*onztz{Fsn%cSiXAN=9k<1V+bFlv(BTf{qnulliVIl+fcxrDDhE+m_8_`P7;k zbLUdo9&O4FoJc*kYGmdnNQM{W==@z#a$V%L*>^1`$_u?$)!sp!~Ii77j( z!5jPp#@o7}vmzKju9U-G_8#Q6*kUc~vz4%n!mxTVIG4I3kBzM{4=d#+tviil>sej@ zAFi+~ud(7%5B4wC!(C4oq^e6{)}mYR4obtAn8R3awi~~3f(7H3LCJOvEDoe&-PIsm z2+P2fi>(;HinT|0-{Z*BW?a0QiJEuSET*SK9_qs6P@zZjZ>muWi@{6pH6Ri(rmlq8Up zz7VTpL!oZ_7&2Q^vCRA#ihI7pOC%F7rX)k%RG6;aS&ogVT%;}RK4)=q(0y?nL(J zkz{ze3DaBhP+M1oyHjp}b_}7bX5!TIiI)^wMaWR~C+<)Bh`d#b^x13#@$T28!Xx7; z-&l*jCYn%%fF8ZOVnMxoH<2ojJ57G#M!)KVi7RxC^b}LbJfVeD9XQPANJZvUngMgt zWd~ER^fc3p3yh=FF(x-+1QWGxJ|iA=g6TXS$atChF~UAOnEmHxFj3Q`n73K&6k_;@ zLVre6_`zU$xat%sygESVlU7n|gE6h(pFuNg)am|YRnpZMLFZeQ>Fjk;YEbM(?oK`` z4CkjYAwTdYkwa@)JrZPAi(y6)IBAoH#d^Ugf0Kmtf<46eB&nsl7CjXXDAW}s2m8Bl?Fk06CrmcmPU-7Nz+P&`x)J$aZJNO4W??+K1OzxFZ1I135G|< znmO@Io0&3FoY`B~N{zQNDI@MG{n{2lo4y|+OLi|7{9_hXebOV{It_YOsX*&m-U<}yyF=ai2Ik&(him>d#LjAj z;%3&)G@3}M6E5IKy(D!Mbwf@Ac=t1V#;7>#8P$owLK^Oe-&dXr?iLBvUMBg?^C=()6|8@J z!X|u3-r2|Bk-h@|z@a_ezk*l%1a{kXW6#neh;PWkk{^PQa*4yB#ji2$C5L{h-32eZ z4_O@)3P*EUTFl1E>QpJw=Ex!-X0}J$Pdg)S9?Z3(2Y60!js`d zo?)EMpJFoSo?@1aI?6cRbYRZe%wu$qsxUuB@Gv*Ei%Fw2jVjVYXm-IF+EcoRPIWG! z8NX)HhNI&sOLzkP9HvT@-O_Z-NQQEUNs@khFBB*9QfJo-jIF7{E;crPT74TTMW5r- z)VnMucLlpob>q(S7L1sijZaI`aWk_HkHsFMLGLuy@4N&BvBwY>$v0Si{4^wUE`fPD z)!-#nVOG>l2s#~uwn8){zX;Nr1;gpP8M{|5P=uuxczzzG?+MU=B`Xc zTy(=lwHSOgz7Lf{KM-T`7S@X!Fu#GH)Dt@)C?P;0cjK}6O&9do7#6{x$YB`v}@)i;oq^8=bM z5JQeT&e8nghbi{UdPm_wc2*r6hv%Yg;~5w%PsAy$02Cj-hDoV4u$vu(>02(~cBVUGW?jX_ z_kK{eG{&c+c~}tcj_{v^7tbRwNvaJYdimfr=|zXn8fvZfqHRZ2aoYYqSM~UN?v+t3 z+|tFt5WbL%!ou0u?R^kc$!*-Y*qxZd;wH;(`axB#8t>Bb;o{i|=d4p$`gShKvN7cs zZt{|K@n?uF9ZnUShLXY|W%^vm#(Z9$Os}s`rG(KFDZO+l?bcsJb`~4R|M_ILYk`BMqzcLjJ@_KW|RV#5!|wrnR9n7Bc*Q292Z*7oLo1PDeur^ zyws(b@PzktVtEOTo6hbfPlu7St|#f}AED>=t4Wr{v@6@SDBDJd(k`i!`;novMn-`4 zC5zMa@e;)0l_TH7qLeu49e$Kl;@!|VNRPt7EUOKPoMB>w)M7C3w!+f*? zU3*ZB47aDK@M`9EX0@{M8mA4$9hIQzFA}(B_VH|daVRubFQEHFlJIU@1yr_;Cb!NP z2odL}TSb}ZU}L5nT!zqo&RaG%>J2{r6sAvB@9~w5Pu?Z^6)};b==4bwSpf0w5LvC4{}j*Cmpl1EeJmRD^Kffk5Zb=1 z#yi2&n7qdhEYN{5H-Y*@);5<5#T&^AIH`A|?7=%UyePq`;trfu_=dJO669K_PA7bZ z)9Yv!|ISgR34*hUcakBkjGV{vdp&7wSWin9>?MKu$7y@2KiL;0kdaq5rNqA=euM9n zdrORw9XW)F3>eBhJgdO$=aXXU?+G(m3EwC$=M61k^}5!+1e%fJd(cc5U1r{f)s1fh6T^MV4cGHI*Px-C%FbczTad0b*1pk z?nU*wr&x2o4o)8vp(N~shcS=f#-9J6YCqQZH4lZwOCe`;8ooj|uxQ^nlt+c5?VK?i zSGWb+SM5SfxDhs8d<;`Ddr0z#Q&W^P-c@)ZEMyEl;@=FfIbUFvB|~C{ij=ZXhpWkc zx3`L&xVY^RdL6=mZ;42q#>P0`Y(!wD9LbhTkWNSfc9d7M=cp>dw2q+m_59?~#Y=g& zYSGReMBA4PBL3(Rbo7!kx#W+dZSL%zY?nG2oz|tbQf8FizJ!LAZ>FVM9<(#fleT2W z(DXBR=~_-MEgo4x+ctF2k#=6D``$0|sQ*SzgZPCn3$(9MwMe zAv4S!ZtGdRKGPh69)>VtxVCO> zT;oMukogpexfZr)8@n3^<_JOmojh=myBEK`f=Cs241`n;V zufy2st(aLhm>3aBiePPy4Qel0%`<@QS|QPc)Hg-nuHtX)6)ryC}*)1 z^*q~4k~f^`xa)bEr5!;w)9+HknftUn={Y%wzn~Mb&GaC#nIz6t)4|l|lyoGEV#|`q zA^JL9VNtuIJCBpxw#{_lhdCSXWk}M}Gw6JP9C^%8rN{_HGT0?fgNF-}N~REfj{l0( zo=;fL`hv>hUc%y9Cbl@f#+5f#uY)(G#4HZ3-LI}2Bp&PF~>a& z-A95D{OkvM)jxvg%`W(;T>-D>E3OqAOTcM<53+3Zq#I|0$Rgr0%@&I#?YlRrWqTUQ_dccv7P<81 zMLIPV-X_boSQ=(^l}c02(pI-1D%!l0^01MH6`Rw^<#Va=_(X~+Vb{4Vagx#r{?7eKE(1tX8L@wzwfBY0yDibcwxbnrIT9xFlJ z^~dn6z75;$&oMRp0OnLgBXaUFJhHC@PeUm*wjF_F-g+3H%)=dROYV~#b%S~~-X(FO zJq)~$BB1mjl9SzWi^VtAXdc6o?d2#NJe8XKPm&zp2#m-+hH)3J<3eaPYT7P?|7tN- zymrKBib2S)5RAE=2Y=(cEH2;$N5w~2)^r5x@v^_k?Mrt_0225~r#M9}!m2iL*;eF}pR`b^sNY%Uv{xPg3f z_mP7!i!%*7O}B2kl9u%aI(#XV49ZzV-zbDEi~?!?l_0WyaE5l)93e$X54x+qjy%_{ zqmjKPq;FzMw%5l|>Jv7OLspsUo_~YyR3XZ=WzS~j=cBc#2p^pC;pLeE$@mf^y-Y*( z=3Lxy%*TOSO;EJBjGVGK*pBr8X>EZud)8FPE(6;qBtj;q6yfRf5NYI(m!1#sK_(B$ zek$;>T8Yy;*|=QZ8%X4y>^sv|t?`7LBv*}I14n2G{W%kBJwzWzW|rW72R_{&(9_zDIqHw`rnnO^ zWmWL2&P5d8EhtAv;hszW$obTd!=rvRgPlXqEDPDf@hl!gRnna5r9Og}5=9@w1^*B1q z+%mAVlcIC=!{8nzPTqz?QRi&WU00?LAG(egY|PZ4NH!jSOAns3c)>t859X|Wy>b3S z*xY)A3H)A|oB9mO^GXpIcoVNGSYL9gAQ_w0VBV}ks6Bs%_N@2l8TuYyw#$;ZoETMF zs*_&8B$E6@O3aLn=EAUZ4YE~aCqyAzinc^WC?guQR9f0oC_+R- zluc$KqwL@5)#vT~`+OhY$M^hm-)G+EKIhzLT-Wn@-rH6wvfBq0n1QA?%L$#x9$p;F zB6PLbfI15n!S}tHZx*uX*lof02XYpo{b%~j%|ut%_=KavMa=n zeM(=>bVe;^ujg5_T`tp^^_mGR1vJ@*`f=>ju_5f~GC6kTd2e=oZ!hMNEXi6HeZ>x5 zH|L&DaAxFnRR5iVkvUn|=yMUj=2qc1<23BG2rqa>qAH2UVNdttOS1#$ zWO4_E&Lv1=J_x$}%(C^JA&x%ihaUa!t$Sk7ZX{P{tguD=Is zW~E}q>TE33;Wo!P2XS~+G*&LXhwYDZaY(<9C~Mk?3opIK-8Bz6hV337`_gR7%ARbn znK)Z&tHjnF)Me@Ux=elmKd&7yWmO9ZyLp4M$CF31l?u~Y?-oaP&v^;^HqnvwzOjlq zJMChIkG8OMex}*GLbblPOuem`!P zzjPq0ecqq#ZBt~Q!rJj#?~gdCz7e(AEmS0T@LU0x%P-8vO8KK$l@NuEMM30#@*Sg7@*G zI49z}aD3_!^lP=n8zZEcGS{#FN4=7tWGGnKWzm@87%b5p&&nqi;>@QZnBICAlV=&> zj*F(~7@CHYR`g`k5|VLEk33A+SB(RQl;Xn8;>=oX3;uk-^_S1Dp}bow4z(6zXFs*z z>v44`Gv_(VzVFR$Nph^m%c1P9m@K=#>?fA2AHh^RbXlS91h!|vWVTLXF&mXUiR~UeTr44zq` zkK4}O6xxSc3aW1%(L~|B&?r@cCE2n#N7e_E74G1U)IrSingO<$%Clc958+6gfRe~* zb=cOU2Y#%H;+SPk9H!POR6YHRYRlH*DEKZs+qEAr@%3=w$xG>-d|2tlJ(~2_lo6z)*3LF1Hff0_) zTJVnB^3YLCa)cfuvuAR-hY1^JIFY?uZ^7~}&SjHl5ccqq4g3CfHdFpMpBaBz&zxKB z*!A6vY3JLpTO;N(=@BMuUxY48ZX3?Rx9hSfD-AXZWZ3=NqglR$G@HZwy)yX~My=_< zh@#%CHa-pGJ+tt4(__4IxDlH|xZU2`BJ`*&#j{t>;-A5%(KP%dPL|ZUV_U{%n+F}b^(!PUzkl;39j+2?Up$XI3XwAZsby-2FEjth}gGF8#%KS`v zFr_`inc^&QHl&v%I~d)Dvx{Hjskh>+aoKYmpz#wJEXSol>mle0e6HEX!i9sx$G%fh=8r6!Vl-XJhI# z*alxnIY?#XvM_#*fH7G8EkWf9IN|a#-ygIv!tn$*`)o`*aHO> zX1QrJ>oaN~s|Xy%R&t3|mf}YAjCz2jlT9#S&l&8mc>;I3%i{b$9(aG!Sxoj{i5Dua zU_r80Y2Ig-gARb)0=X3X7Cj{U3{$pWXEv*!8EYzOT#T)@rg7RoZON#PMw4S#F;)Zx|DHNHTZ3eoXFy7+dwZ4zEvtiBEOv zko1yatr;~~Nd~bYVbAeJYA!B{s>0OyMOb|MB;H6mf`fw2A>A5-X@Tp|!($cZAIre2 zmPc`Co+Y}BT7zlg&iG#LII4}BOY>Jo3nR?9ZL&f%in(NCZniS6O9&7ayZl7^yJ6Ut znqSHSr?CLeS75vnn9Taks5rG0y_;gF>Zt8#X&8te4aaeCqaph9J*9Y(E;~0}ibYL* zj%D1w(W+V%jSJ48wZJ)YDxz?cQwg@7io$!@!8l3wD%wTX4j~I)7@DRskj$v)lKI4E3jJ?TrM+t=fX zjk5Ste+llEDG{{9+feGj6ucsL9uLZX#lWgm{LOg*`fyGSBP~}{%Fn_D?#JSdl~~}NQOs+DF*}{| z2Fn+YXYZ`-Sk7KeR`SP!iID}&?|?NsFD1tuo47n8T9MnW^k)use7qOQF@q2l_Wq#^ z`=cYl^3M!ls-5C&bKxa)<=BVYlery5bqyZ!yNg;+n$gOj537uNj)$*Z0+Ci8#;r6~1(GL^pp=T=+c)D--;%=lnvf z4$?+R<@MYys!*6B7l+#98f zN#A zpgD7K!s4fRtj}tku;>?_YhH_M zZ!hyPI%Xwam)(PjV52F*@4%`-dIdL1H zCIOwKC*n-b>292%P>V6s2X|*@?6Qma**+o*VQQU#GrB=gEV)4NDE0^t*vU z7G-$ho*cX67mu&b6yc)_`DhTlAIFUkM%A2)_~XeyX3a4twR*fC2g{tJ!hQB$2iM&`AFs)lmrYh^9*N1Jf z3+1}A1l+kY2djE;`*c1o%RcpH1y>tUI$4gL<-7_VM~AREkJMO3#w9cksKH;EoO4E@ z32XDSaIi-U?&q?c1LBuBKSlytZ|=m+bMi5YW#N|>XYq@v6CN+};A3hlF0`#hZ*m#g zqaI95+!dXUO~DDJff&g-Dcr(LG5F35G%>Fdt%X~&rlOSkB_TcK3O+R)!(1zkaqgdJ zd{w^>-#BtyRC5rQgL`9peI}}V2cq@jv&ekTVO{tM?6ZpV*v7M0O=fZHB^Do+VGi|T>`e7zbe56ivhGj# zI{h0S;(L9j5{3(!A7Q(V0iLqIg<{#KF|elrmRhQzzRh;joOuchk3B-ygc-OiY%Q|O zs(9$E8JhHq!ZW5f6ZxY70(Dz-V-;D_93lijovuL zE*F2O*kh;|=TT5Qh(Ugr(9>BNb-rxIA%#mZcyi~Z+jRjuJa1xbwi=uMsUDw6e#O&V){<+*?LN3ILhO=xOs}E=O#{RF=E#WbvXAT=Mxxj#587pL7Ck{ znJw3$)fPR$Pw}qo;2vUQNVL<+K&Ux_+bz630 zf?*x*>U&JcPWp_K8&=>dC(gq#u@Wn8b>iI(r?HRUG5pqkUpQ>yf|axUP{p-3j`xei z*}gTH^n9prlFRrS*34lS_V#73oCmX^YZ2oWl`%kDlO11dh~Jb);tuT#SS&UapB_Gn ziGnG!icLVNchNYw+*dd`qzvD$$w$qe78vj%98Y~$!6W;Q;?m}6IC!`wj$^kmXj~N@ zy>&p?alQpF`&Oc-%nNk-{uHlHmS^)$^sk6P;)EWP5ixu|p|8QRRT2 z@H;CNy?&}Qy>BC!)ini{I%GfInG=Ol9ACK0?Hk&!AIombII)^<;;b-lGz)YY#sW?- zraa*y7R@TbTe2hB%V-If5zhB(#GE}iI+pcviRH4&M7(jGp*ecwR5rL6j@mRcjFzWQ*CkXR*;@aopZ0E-{ zLR04e3^jHW!eUc#>)i@$-n$xSUG0Y&vT;I#L}>|1v|(>E#&nL}K>d?bapunfs5L)d zP~@C5>UVmH=8&pMV)&@EOlW>qE*w(rhYK%<;pjuTg4bBiOZZU_lkesV^V|#s_n|BB z1-C)09BYC7_wGlF)O~oX?UHbCE!+bCAu{Ia?FFb%1 z5)(LvvX6mxS#;`kXhe0@q6KMKudu)Z%<#z7Ygldr@=`vlI5J3@b@rTP3J&+K<+H zKKSnP zeDgT`*mD-0d_M+vZvToq$Hd^TN1t%hQ9ahL{U-Kr6K4%p$>^5O?eBWT;i~V^xVY&o z7Eg6&s-v#pqSg_(p8Uq|@2uI&@9)sg?H1-9BW%$@Z+z(wY&yrIJv1|Ap{*OS$8RO} zAjc1fZP<*e`;t-L;RlwcS+Vk$x@>)UD{3v`XP1?K(M~xLpUsqI${vY={HmL{^|UP0 zn{b8iued(CUW2{e$MLQaZP>YibLQPVi*w)KzyV{bQ0c*Ey!+$65VYKs=~REjZz z=6a>d%dvQV(hcn4`w@Q)+=-u;^k(`WGB9(R982+kg99h-=DcP5(P&#OetdCGm^!Wj z`(8=Js0Wkr0W;vdXGOyG9)_ha7gPyja=p>-f}3cs5q7i|>-D~1&yPJzL+oNO)8Q;z z|3H$t>bw(lqwb=r)NTwOUXJ>pz~)tc#$)}z2z%^jvAWaWvE*_lR+L}Bv|%Q!*4r1A zUgo0ZgmRQvlZP)AehTJ&mDzHWL2OOWTvQrdU-E01A9iZkv%{?=IJ5K*O5I(=cHf-K zdfr!N`v#~8_qG>eStDVtVP{G<-YJV@_Qs9+n8k*=4yX{{Ew| zK*4}LySEl|#IKhevHXjRT)*OuWj9NnK6J&#w--?_?j>4k`Qo!RO(ofp(HtMZIhFj6 zqSSt4!6;P^<0W12Ip?6ID4oWob;=y*&vFlMLrJV9};*POOJ1S1agWQ|oW zbaas)27wW(U2vg)BvWz9njGv|>4$@y_u%?d)@=EWTf#kw3&M-oG|Y;%!A%wQxIs@J z#nT;FV&`AH^*R^j!ws23s1iFFwht}5xPHtr757=DqDl~9Iv1xfbJvGlZuSmcY=hAG zh##JH&Bng2kMK-q3i@-~*M;`4(KOQsh2z0E&xrFC@H3gzFUrEUR}C? zZwq(h`6DvS=;ox--dZiV^Zgc4Uegbc^pqLbt!r}G@`R@BAQI@%|10Z31?gzaTWh2#pU8~5a-XlT+&}um-9{cuv|J7 z8-k?R?%(aW&EqyYe|v?~_P-UzEv&^@F5kIiUn^8CO2F%T2z#Kzam{;2iPn`d(u*-` zZwAVbio%tzb4m`E*9eK>E|~SZ341J$#=y83REl!I&s%%4@;-^EJLeIe3OPupaO}S8 z*fn^D^XT+*Zx9^p@8H(b1vuEt0TWCXp*Yy#n(fjoExHMpX^#{=OKPnp%Uqa-i`^cf z;q^LHn0$(kJFy5Kr8r_i+6&=b0q0TUZj$c@+GX?Eb$`gQhFWxJ;NYE{e}g-BeI;CI zkcehy-lEz)8=+%QC!YANjExJDuqjKdv_kqLMt$Ra))xd(dZWo|Os3;IT5Z>2F&lrO zyIwT9$=#u8!=h1VfI3SsJcG#33TK2E+_5Dd2YgY$HqgN1N8&JCWhT>aPvP9wiFjrd zV=cYsu;D{GaJ8&6TlG$#T`oL=JD%#Z(frJ3IZXkt*!E|)M%R@z{7dbe= zKNBZS<94vuV=(ajc4jyr8ecnHqH-V9S>?LXOo^Y%s;19jofbb(`GzuXTgvU_wZ7si z8#m?*Kk-V$P&J$Oup3ZU6`_)XZq90S#uvfA=v#=Q{3d@@K z1%2c-FrCF=pY%vkSbd6kshVw_=zLPM@d{Pif@`i#^`^K^FwcaNQ1du zfQyG7el+?_{kL$Pnic12ZMcljiw*GlVl`BdxP=BE^qE?KJlhc{#Y)W9v1QelF^}sL z^2{XJ1Pe3Pm@%NVYn(XS)YBsEo~&^Dc)qS0U@qsMzQ00D6nEsNDXR7}Wk0!obd>i5 zmY6da{Ze)D_XZnLU2~)}QG;VeOE~ZAJlRR2FomYwI4&XwwSNI-#6F?3W&1Nz%SZHS z+n7=v7hSyW8B;3raw4YnD-fmsdy}z4vQOwqZnM)>AE{a1I6vVbMznUfhuah#bjxd@ zhV7{s!`HN^7c=mSt|59{?dF+x+G&gnPFZ5C#|4z$VT2DIbhzD$F^d>ujOUp#2HIqa z%8k2M!1r^;qI-XCOS588DUwQF#t0XdrLSH(`IIFyPaD7jK6bxHx$$!BoIf3%h0k=s zp(j*hx`1`Y2CV3^da2aXUToGPecUi+4Q~G>$xa?IM__6KA9E zq1m`)$u!iM@)XA?e4%@ss?p|yVQE)BlR*n{VZRZj=>g5y`_00CiS38&@%?j- z`Og{4hTI*^-b+i0bYn9d8t|#N1zv8eMY-^6xNN~RQ9jq*Y1}T&7N2uFffaM6^7H*= zcJIYNcJb*x!Ck&Td*BG7Hi(>h9V^W?vd`m+ag%`^4tE{KBy6p*ap!aFzj_wVaJrB4 z$8SdKjpl6g8;&PYx8^2ub1+M90g_{5ne(-gEYw(k#TsqaZWP4_t{7A5qs`?Y+{r#4RoZox zm^%%<=FZ^fJbO`iUA7S$QZ6TW<{iQYr8VePvl~lu#hA&S9XLiiP?TnVaggZQLErbH z!E!UUe9tlLx2_+1)1w$rIm_X@Wpn2EY$so%Qp@a z^=()B@M#^Qya9dO(Ou46bZ?=#9S7QbAsfFPOWi%u_>Beg=Uh+eYsFd9^9`uDa|>$J zAHpS+qW3TIv|^Zi zNfiF{S$b(~Gq;7vZ*}hN5!C1{@Gw6WXUT4{JTfZdI`7F(#t0 z^yCW6h_@ALrXZ{HK=x)_Cf?#qZk~x@Jq_51iN@XU(iQkW&duT) zzMOE3>A1z04wSlvIU1L6E$7$yPkemGy8o5uk8cCpoY;utog47<>Gx ztDVbuE;um%6Sx26|MBaJ=zh#cbGAkC^1twX6GBDhe*Vzik6q7uc%19WxJ=0?`Wjxm zA_#SZ%CX@_cU`KNTCk*e3+88EiEUApxOk2QTX4dHIoMb*mqEEWV8mH;JkD+VAC}^b zi0*IImGkm-m0J=%^WQsc{$avo+m144yQ#vhXWeDjKe&i}=5w74cP`-r`_OqEYCNO@%ZBpqVzv1UWu+plM4hxQ|l z*`z`fR^=7K_N|>R%>P@6`zB5Q_bsQyr=#)c6w$L5Nq1w>j7Ma%)bl|sa~QHK#fMqo zyx7uOGLfC=vxdoYUAO0r^Z5O3H44{tSc`utbLAZBYXUg_(2p=x&dvCBNjy3R+KSqA zU(Hof*~^Z0k6#6=`9iOggf*l`mv+^^=aBCHxiTv9Uq4NYD#nbp+1L@uxvl@l4Qx&n zrT>rr|9?&Q?OqSN!ji_6;k~il-+Gt7Mmqgp8D0Jb9Tq}pb_xc~J&#WU({M$(Av1{4 z5ArTwIl_PMSwQ!9d%WLxj=L(yhgR8W z!|g7*(*4I}T<<ZgKtqgh;e zp(x$NOWoJGN%jBAmv2wRp{F=Dfx9qn)0(tmj?gx~`yF&RUU>A*1dLvqg{HY@xtx85 z;26`r5A90-KthY1xqGtIxg!IMN=LDd${bO-r`$}K%dhTqi)F_%f1UrfvE%mccVEQ0 z2EMtCXZP3rH?FJ9F1O;o?7#l(^2eP2uRp4__J76Mj2I;HE9^P-Z(MfesfZXS3U@sv z|G&~d;Q#jd8a99pyDvUTw(@&vSK89-{mjX>L3D4f(kx2<{^i*2a&Jcn`d*Su{@`Gd z|J|zY`DasqZ?@oO~CzSmv?=G_|kIUBoUEk6d&87YBaL&_9Vr5^w@}xU%iDlTn7=BzJrNNd$3=9 zf1+=8cba{P-VB9yQJp;}cVD~mbh$aQ{2jO}Q|`pM&fR09%m4p!#<88aAn$3Z1nJgO z{hw+3jQb-h^Hlv8tnK{=H{Jh)9x%6)LzxMCSYq$4@D7|-(x4;3aqWk}| z%r3u#LEyi93oZu=a9)zl$@OD@N|!-L3iAkx%lsY^ErPE_vQ#0(5BGsSmkL_H5?QB7lGLF|!(aOy$`y>ZZm{+QR7 zZn&99J7yoFvX@QiwtQQvJtKrBtT{`ams?S#pHu0EG0m{=q%AG`>qtGEl3@j%L3^}M zqk^_7z4vw<4Zo90mphK6YmgGee6k@u|FMwHcw<3p`zC{Y`gSUo>_R^o zxzQ`ydGzJUQ2Jy+Ds>GEpbG;IQjaxmR8FjvmiN!5CHYY_Tj?x~BH>g$@G#xom_k=y zQKMr0oN0P{4&AbAIqj5MLf4HBrn!UdX`^%;)v_?9`5jBCO}al6PO_%D?m^TxrZ>Gf z*_O7D^^g>;M?1s!(v|i1!8UCT-L|e3&TMm`2NaEHw#8SN)8I`v$*-kT4vmG5n<;SN zY7k8Im`UfW>ru`9L+Mc}ny&u8y$N(z4$cK8~ zQ>6Pgt)i#W)TwW&CjGnLfjVwE2rK=j(-kUz!6~~x_3{}+TT8an+%z_#E#7o+c`RLTI*lq1 zdr8%^vnWyjB3KxX6}9zx!9b8mZ=`>#28;at`p65jA(77MuT3v>&ZX%aHqmpupKgf9 zfsGxd8B%XSEY^}rx`4J`Uq-E(#!#yQa~f_WL*Kt$Pu;AgX!dY@ zdd|%pY>QkB_!nOXqz;;K42>K+G9xP&Rj~(FB{PULtCm_v5Fe6+(j#u4QLP> zM<*n?(ajgF>DqOA)YRLXUOl{&KJ7h+p2(4*qgR?!$$pfslJlWX2V7};)MQ$x=0-1F z9Z%UcQ+oHP6ZI_CqFL)?sdlX$ed*8w4fC8}#&$_MS8hMO6&(p7bSPcwxP%UgeGaL% zI#hdQF|gb_uqd+tPL8R8>6N|d#?V@Dt^Nfnc_ZlLgvW6C*;)wx7!I)XEja1zfyTQ@ zuwqmh4cP5KS7nvc){l$nf}fx1!>CRgIoL>;aHWT6?s%NgTW~W|7yM=n7sR5C1>34T z8gW!tC^++y9#Z;1R|qHR+>~=vQ(BcSof1xaTl05TY=_T*YINomDY~mwkt+X`q_0fW zsPU$6P`3kU+=d?X_Ae9avCE2P-f*Dn_V=ZFYsOKzKBH(#VKw}4>qj;0Bqq>Ubd7PZ}FzNBS+Fbg)^zF zuRYD2wvJX>Ork!QXHdeQyV%8#*1eRWQI{KG@TL*;>ic%M!0WZzY%i@EWk(&f4C&$t zZ(u@W2OK^zl^V|JNqf9{06Wv=`TX|{q`bwcrQu(&^c_g;Cj5b3pPs^Mqs#DP@ON;Y zmjt_4^`g;D##CwHZt8xalg~jDsG4sIy}bM@b=EpbXWv~(CB-~MvP_B3Qv@%YEke(8 zj|HWldxUota>C}Dp~B0b9kf=433Z4<>RM^R<7_6Ky0Dn4vy1e}uL1PKw>zLc+MHUS zUI7gqmJnsP8uT8A!k3k`a8G6di1k_x^3(^O+C)H7ZXDo0S2jo^j72`;Y{T>QTyIV zUPBFSGU*;A9icJa72{i1j?QR{^VZN5I?5MQxIWv-ebIqn~ z<6XLs>QLXYF>oem7#+#yxqUCLL;K>v^z`00PU7IGdOA|&`Yd<}0s zuEH{jCg`kw4f73#Q`d~CbcnT(UDK(vMNTWiZz_bBC?MAhL;uBdqcXKBks(J_7WBSoJc~v_1(F@2WPaq~qk=k=e zP~4Jcup9OZ+#dC(?dlSg3_l0SgT?47<8=5H+Jn9-sfB?KH83i@0rEyahv;ENaN=Ap zT%_;e+3+|}OF0Aji-Liv?}e?4Ga<%50j{?v!p*#OP%WJX>zeLBj$9TV1z z;unnSQ4i7!XHfU&iBx^FJKe6SK@HQo=in*H(}i*V)~M-oPiRz}BplPfEb5CZ3(TmN z;~ctEMpC$vIteVr0_ev*>h$XbA8HzR8^r7dYIfiqge-A~mwpMb{LL(oxgQ1>8|~qV zd;t8Co&l2uPuP7@7i2>+K|wqihI)s>fOa={vU(FtT^|kab{~Se_VbX{aU4v%4}y9@ zD#)21hc#kRAd3eeZf*eheGG+dj_09z%1VgK%YZLIzOXgn|*le!0X5{*yZRH=3drAoDQ$OH133#(6Cfd2>4qITd!=SYh`xPi&5^vo|7^(eeVGJn$M%di)X=% zqy#Vke>lFz8HULEK(Ry^q@4_c_onl~yf?rInVqnvd>z;sAAp$|UhqlI0nSg|1@gDT zVdHpza9Di`q?3~1XiF53*;hE?G6iy~VHsi)ZVpf5ec@fla(L2j4(NngfTYwE_&wAd zu07L&eudkiIR69r?Rp#zyf+2y<%i+5j4bsUH;jhe9Y7bX0h%~<9L48lbW?u~y8Y}a zVBf5SJ*!&j?j;X|f^j#68S!_8{JmT(<5eXZ&ksV(1moV~!e7aQ)W<=V-qv=fQQ^L{ z;iD4WWNSv3$8Vx=LY5v9KLWeMB7*>IQv=wDd}YTM(dVtSxTPWD?2}>F_ z!_pb!VfRJ{u)G}x!@+@n6H}q+p&xvGw-!8O=D?jN!(mL;H0U>R2rQT=1rEu2@OzUo ze5(COX8+WIxP6*%TjDx-75;&T_@gRG%516VhhVZ8Y zq5e`2@OjZjHvW`{`+I9i^7dZP{8trh)fK=iygv-+(-(R^n+)MzN^sTQ7@~U&1vBM| z@J?(kj1P5y@)7o+-Z2_BSQoCfXBLgZt4$X10-Sk_fgQ}m>x9RNkeh-C9?UZETD!e z)Gg`<%d*~+!f!34V8k<0xTu{>_3aPllZL}}ZFQ)w=?n8pKa*@7HU$>VNeO^emb}!$&m1uTnLt zFscorw;h2GhCU#1YX!`hHyQH9XG5XuLu!U|^^*v^tE3N8=~J%0L7e zb61$z!eEciN{CWf3fr%50z$45I zbiGW#`L6-Ajv=r-4dMBLv0#0EES!6&2IYUm;rcIG@VR6F1NXI)`qeGuqqscW@-&AW zB_AmA^@R54dm(#h9gN^}+eGg;7*}9L|3(zRuyZl6I0q(V<4gLH`3cf0>a+iA(C5vkl9b~ zknzng2vk>-sx{JJ=d1uy4}X!v!<1lRW^YLI9tq$2Yk*3KI`l0c2XkxHVC3mpaO#Hv zkR;wVY6!&!OF?q69$&*YLyMsUhE&c#+*eXOvxGXL)Zp93OBKx;wtb{5YJZ}gGQ%#{lF%i^eMS$9rYrr}B=#QfVY3#_U^cQ$j z&8^bH!2RO{y@qu{lzIwX@b@m=Hll+DzBUy$<|POV7ZwW}e^t>}D+UN|<*%t~+;yrJ z$%GGcL#S<95{>;Cdiw zmtmoLHT?YZ3c|);0o}@I(3p1!Rxck%H9OsCdTa>&?RXUiiN(>gZBsuG5iTT(y^Oi0e;B z9}kB=D*0g2I1x_%4TFe%)8LxMQuw-RAgs9miEOoLCogp$lQZ`s$=Z?6$xP=WqLF-? zz>O=!`0q3F+wv=!<^G3U)9fVAgZe_rm!6=dBn^*8je(i_`@+C;ieTYB8uE%&z#wll zB=8l@!%hqC_Z$m7WsP9q5KZ_tP!?31r6G5KCaihW7mhv{1gml-AzbYf86EtW==)28 z#FABE-X!jLELlD%h71mVNygl$Aj5{V zlgJ69K~q~1KKX8i8sFVuWxEFyh8+R<>Z6dh=`4(FVswDZ5PJV4KM(hepczRc>52Md za8s|0HeF4km%@h$31>zM$+rBzuJ+djMb4X4R_!mWvYslK<{uKKs-y@fkCxFb8^;N9 zaW1qW{}wguUqtohK7pGyUqSP$4mHTFf|4Qk;OXBuNS^NscONA}-~s{C&uc^V>(3-q zxs?7+ zYww7qqc}V={X`OPO2OK#zsRDvelSzxCmB`oi_k_Dcr*Jw`MISZEH?c~B4>($s+uHd zME@c8I-5x5+t=jNgd(C7QBP{m)De~GH^_?Tg+!|)|x>8+Vn5mmCDBa5tM%nj9 z)1&dCF+JZjg@!CO7Zx4~5k|+HqqT>FXwtD<>Z#d6-)SzQ_YVAm=rgP7&cJJ+e!T$v zcjUnr|0QrZ%K>a(XhLbc4x~PjhVZ?;!R2lpk-Bq>e3H*6Dhe^Ae#b5n{V|Y;FApR= zOhbr5$q_q43bUp_w1;iYs znuCKW^PDcIM;;S;-`D;p*WRu6PPBJcXKteQX7AkSkt8YMk={Kz_6h$c>f@;qbD}|) z=h85nQFN&GeYnBTEekgertyX)@W(I-{>(lCyJjAMK9}|3^_r>RbYcW7|1J%M&l-r! z`f?HwkU)&r`jF3yd`Qx!P@<4{h-4j$A<^yeWUP5M`F$>htTm&C#SC7HFNnWP&&ASs*glJV;=lY#AJhhg0|L!8dI;lqJN#Mw??Gr|l2(c0GjLspnxwVH9YtW;AW31wAeP z5+v5IpwqIi(4TYr2)$NUgJ1J^8Xce_STQ5vXOqFdcHT059!B5)K-Vpm6#AJb(1WTY z=%so?s;jw=HdGv?*Lxe$xat%*mc1A3s1zN%&Z1cda>{ekt1y=wiOePCVqT=zu|T4HbOEWGFq7Q*&B&D{tH`G24J7fe9|<<` zB&P#IN!yCk#P)SO>Fj-u%%RCd^J)>Xv??dRx85X+@8^@Yi8shj+3RHYk1J&Bo?Nm$ zHJdDmJV&H#qllbyIH?@Gk7TNPlU3t4l06z5i1^W^WKoI*nZ0!i8K9*@UM?9tkcBEGli($JVGqm{D}MZy`-?*l_bx%CNegQ zh(q`kQm|zVIaQ=Z)?XV-zS$d+?8@cDv3WU(9U4NsHA9FO|F%9!mJm<*Br7D4_|s_9!E|BC06Oo% zW7=!IGTpJMKNU|sLko^C5X}vFXKjSO2PO)o$4YUZN`DmdG!bs9nhJC8`Uq+tTe;jj zhAy9^PDAT^2vf$(3vyBpbQxoGo-5K8Cs}Hea0~W@H^XP+aG0QdoXgAS!oJ8kaLh^x zRw?y^CN&KR&*=?iC5A(`o8xiBtwKUln{kvD#TiAUs6$&IVtZHrGZMLCdm{+$UI~o zQf4Zmq!cBUG^vONDNRagp!%I}pV#Ym|G9^Ahx6L|+`ZR&*7H282F5<_f?nHJIB=*3 z<|GPWzv*1GQP4!Qe~fFl3eKIQlpXH|WUFf8X^;ru#eoZfE4z{)ANL zOVHO9736I>j!LX#nQN;r)5*NYWZo=b@Ir!T{d*1DUh2$IsyTd>R5>j7W0w+y)pFmUIgNj82qhofu?H=u%Lf7zE9G} z;fr$EyGsPmm-NEYSM~68do|d9j(}&Qhash6HFT9ATtBD{&wvN#IeM9Mn=5A>yB8*S z2EzU|F~F>n!D&kt1iNLzM&}avotg(KG8J&!x)5HR%Y})55}+d>9TL7rfPl#!@EQmJ zD{jtaelrL8c70gCN(t(Uq`*r}3Sf^4a853eFkt}%Nw|T(*LwKM3j$x;R9N!20<=w< zAZo=ecxNJkHb37(!iW%FSu+V6CeOo13whuIRY zt|uX?&JKt>v#CZ!^ug{Bz2>i^4Gj+{=aDMO^-5BorZ>g%*3h)sCvo~$U7DwV9H$&k zz`WO6u>6Dvx^172MOyQ5M~f`B_9<|6iav0ia~G^%WD6<9EDCf4IIbb98Cfd@`N6PqrZ4wE@gGIDqvB+-9||OWDD4Ga9=0fyUf2V*3V!NPMdiDScf| zM$V#ia%mm9Oh`wR*@mWe>FBcs(eH)_Mrh4Iu7^3!NmRnN_=))P&K+=zy$c$f&Vt6z z0@$$Q2&B&Ufm7?O;hZkF_rEcN(jX%^9Hk8kb{23_c`cl`It(&zgJD}q3K)B3!Inq) z5O}!|{3cewo*PB5=t>@ZI~EIyW5S_3Bml1L{|~Klzz0VW#sX*#ege zsx%I!@b}GZ!=5mf)U%XXPT}LJ?^?pFZIQJr&1EKkHJRRwTsECqv8{cRSnLmu z6R>F>Ge~JBpQ(pv_{R&{aMO?m^Z2P_wh;9^9>KI&DU$!zhdq(mIB94H9#cMuDjx{9 zC@5fBlmuR=AB2X+FObx81(v24!_D**m>F>t4$Tb!1Fv;pcg_`ZtX*Mxg%xae^nz1H zLEvyW4n#DvAonSkC#zILs$Cr{$hr(OFV{h-_Gxf8&4E{$@nG;i7*v+K!TT~>SQBpq zXUEQg)XN%hE0Und+X@DUSHpLZAGOEq;hr9<7%R%|HVl#U zC1=*WJczQrxG_F_hyDf@(4BMLxL+8l?tlwH@_6DMxPtu4Pvdm$6=<+&Ke|lUL;Z#S zp_aW0eiIbK?Fo|D)A9}8y?+7^UlhZ{=4yDMk_%C-$3T1g0hn`aJ1jWq2r}cj`+9U4 zxL#cZ93363jTXYI@J)~x90aPe#~|oyCWz^uhP_55AiA*zR8`ACy)hdu_8y1%AA%uA ze-nKCWC1f5&jy9p)1YnFOt_P(0!`Ouz`?!huwC5*1SRyrE@l}Vn$GRN2_E2nI1~bx zM?=1T7`)bwg9$!a5dOFkcF44X3U30Q`t%BVzs$sw!6xXcE{?%p*5K<2n=os`eoW$< zhgI`4aN%hr$)RD~zF`E#zVAl4OOv>|(`1%Ccz~8S-zKBnn=~}_%)h+kaGmm>Fy=OY$L>d+UHO=Mns8`Itl;_tCj zXjxSYhsXZLrPhga5OuBtxA`SdB9aADWK$tl zFAVZ7guv{3hk&+hh6D>wc&z9HI~>-7(ftF^pPc|+u0>#Jcpi*9+hMk82Yh?e1AznW z@MO*v2-unj#!X4^@w-3Rak22o+J*4cV;Q_ULtq~tShXT)BVe4mN08v^jv9z#ce38F!`ArfY~$HCuoO`x3o8V=+P!IpzxVOX6XJDmSQ z?U>of*S7^fm)oP!_^o&_AP|2H7~}T3YMgz_6b%j^K;xg|Xq;pqWnWoApT?GBgvl6o zOZ6fdbf?m^@gWrW+KBdiyG4iIH~fpEC#72O2AsX9zeAX%H<&T=em*u%6WF47Y34Vl zjS63XB14YzarD><3ej+*bI}{ArWVMX<4o;3u11zD6Ysd3NBjQO*u6Rwf37sgww76_ z8>Nh99?#*PkrZx{eh0NDJK_1e2AHUR1~gJmz}1mNPEeT)oBfW$-l3y#FFy>*Uq^z7 zVG=0T=EIkbt?>25cQAS(j;CKM;ak@k=p(9+Dj_q_?~^nZng4{fr`kdL(_5T2p_j1VWeg64Oh+40X|#K&fr&G8arPEH40c$8+PoteF=hx?C7i%@61nLARGl_1 zm_jct6G>u=ERE`ariaFVA>c8~c2-hNjM6 z%*OBA$_~qVvW>^W$nQ@oJx|Fa!{%1HyDNd-*excd+tKtqb`Wn#3X`q+L~7Bwgx!_B zxT-uEcMZkiH~wIpW?_vQ3tdt8$UMy4JQ-!bh~x6>e0W~?76`1k242fff<;FzOz=vA z9GPQq$oDvmyp0F-EhoT3CLgAbuZ5&-Z{V$y6sii$!hoHoI6l-Ib7m|<2Ol2Rkq#!_M zd~oy&ek+o{} z?rebJ@#Ai_yeSQ4HO~ zC9$J@2gjIvaU2uXA`^F-bqI;&?7ksN&R5 zir1LNj$F@RksZ~nr=y>x?RDji=PRenUvE&&^`-1{sV8e%A;b!OGN@|jL;9Ato+c@2 zvbaU-$i3f=0{8Bv4-s#1fsQ84ZW5;b8CN-;#S>I6KaRtj1JJtK58cyOV7Iw7I)BpQ zoX?cdLRk(i8;2q4_-E)TdLYS)X)};_romlM7;$j3S_WW;7?5h=-6zg>YG$J#xkjc;^K%;;oG(s{*Ujd;Hcu>tCAd}~7>{)=#lM#w zaMHo~xbmbP!n9Gi>M#l(OS{4CL<878s)k9IN})714h&?&z`f%bG(QQ4n?HE~s)dv;G%XJP-nCy+Jo%1l>bt;-Cjlk|7 zH{e>p36MP$4w-6uz~6KOXxXd>tyX6ceP9ihI~T*$BnNQ3zZw$Pt%b?24#H4>IGEkf z1&g)>2#FA_Il(tj@@kDR~B!JSo%&HAeX#OR>Su38x%)#tNw{{2AYd z%SZCjwLgfh@jS+cXJ4a5+tNr%`#5E+yhu~~cam7+49f1^PU?@(U_^@wgvA&^U@`tq~mb?P$2MoZUXgZtKh+kWpFLn2687Xgth;zgu8Vfu&-<{ zMAYm9=Y1)lJ}D2>Gt6D~#y(rc3PX z`uo(0|I@0y%60$$IJC};JshD5Fc&r#jlSXups;hwplo#^!vq_89fW-vW0QSH$jdI^9%~d4{*Qh zD^MAK22@|?fWi1wn0z=9LjOcVa8m>X)^!ao03#m?MZO6}=$&u?l`%I1a~zePQU||p|cEMkKyVZnzn&!|q=0%2Tx^${;ghY?zP)A%Z zKEC^nhWWf$cgY&&l(CMNZSKj7I+Mlw)638EJ3o(oyb#Q?KF?!XHb*tY7q#l^Mm1UKsX%Vb_7Bn zr*ie_8c^8t81B`K!9QV=IJZ<9+Z`0J;eaI4JbpZ7+6_%z7l8LV70${YfHj*pLdFwU zFp+YCo@xt_@mmN#FD?SVZW|Du;|3D;t6{;ZU4W}Y;YxBelzvG9!@9Gu;paK1XnY0| zQ5;UErG{Qdjj;HgCO+M3hSuLX+#qNzX6$vt*t{?_U+@Aq%qqZcyGopFp-7sE>eT&!XYE8nBs6QaO;vp!`r~+00YVeqo3=wByAe76k$Eojz zQV(AkDBlI^eryJ-2fomM_z0XCH~|+l>!AMc1ITOq0Dl$^L21(usKHNQR{R9`G%iCp zSGUHxFo;Or3Sv7PU~r8MEO)SgR#*b9-%Y{S!3tI@S-|pZZXo_^BYX+o0|VoIx%xpO zTxmT60e|no+n6^ntoR<(w!eXg@i#y}S`_QDs*+y-@R^DxuRfjTejaH%`Hp;xM+{F_-NI9rjK6Gt)9V z%|gxy@T3-4(dAqAY~g4j^;`&GGs`|>WVR^lj-SoOzu3l%Qa01Vhdaqzw3ys%q{tyc zmB!3|g9&TbVwQh9^1g1u9s@VDZn8qryOYpRSOgEYzlVtSM=+O*n+|wh2Gg``;GdER z{@mEC8V!XY&;4*-Za@4oSP3KH|3Ukw&9HyZX6Q}{hGpAR;C2{?&yBkZ-~GBEa-b8I zZ+Z)r{ZAn3*-iKpS`9<%(qYxpAjs(VhWQZx59Gdz&qPV)gI%;H^yd@ZAyCnfefWU!~FM?^WdaH=d3OUPKGo z2bksh8{hBGz&-a(@%8$n=r(l;ju|+NCoio;4GC+M9wUXL)8%pTBoRyo5j=fP5VxG~ zh2wjwz|trOOy3p2^YL-;qiH`}o3$IhUtIy+`gS1VWCeapY=LjbE|A-J1O%&3fMRk;>OZXjR2|wmIfZQE7 zm~krbG>bG4~X>bk}oO#w~EQybSp_Z-d0IJJ43$00pNjVfou^usD|hT7JQx z`OFpe9$o}hHhS>vqdN4ODTB&AeVA@#00qhmA>)cIOc7cIg)28e;wOJNWfBHnuXEu= zLK%Egd<(N`zrYGD4mY_w9%C(fA&74^YMqq9AJ)FO)5Z@4bfeIG-&Z`9Scqn)#**UE zTNo<8opw1+p(m4WliY9{G1VnBKdY3cjx+n04-PgmCZo8PSF!0l+j={aXSQ9Gmtp8m z3#xZgalk54bn#>_uRJE#QfnHXlS)gRBWVD&$vMlFRF-RSHL*LmrJ@Zd<_pq~9hf{2t<8pyj+&hO##{U^=)Cey`XF{Qn(;>OJu=?0yQQu2zHH$|iU-w~gabG=q}TBQPqw2CIQ}_Ri>|3gWR}+NsKuj;(7J3DZrS0H(^DMmS zh=C=uqu|RoFIc_E3eE*Cg@$N5urhZ8f!TZEghLdp`VkKY)$=$WUNQXFcn<9DUVx|3 z%}~pC3!+jU1K*t%IPu>_7<=vvyu&i6o0tg>)j6=GCje%M?1ty|?%?s%9u$L30Q=NH zOjQXigY?1J+XVEojiGC@E4&Li3JJz(u;Fz9r0SP|{f9Gf@^>9nFuvmir)HZNVo4I z-K?l1@hV$#kaMC%R)Qoqt{Ru_JcnVOEtnh7r(s_B zS*T6C2|A10!B6HX%=YMm$R%CyV9`%7ZRi1YdxbEkT;yYpb_YC9OOum%KTJm9Wg0N8E`hi4a0f~{jYyx%q! z`=oAx$;)x*wO1d-j;rGN5gT;+poRtZD^Xr!K1yDWL(|_y9B=y!inp4ewwEQTr?HPn;pXo#xgrV2`&;vo^~OJo|E6CX^h=qf6`A_i+&{_~S|z zxp5iG(%H_GRno|>w~OxU|03Vn0!(1=5Pjc0lT1cAUYUm!b@?Qq`*W_&erOvis>Wkx zp$l3k&qtl02`HmK85`vJ@VZkyNKC!~h62T~);ktx(J?ULa^Enm&G7Q?R=D_JFVuVw zh6(2*;l#T*SpTF5))$|Fo-Hk)HmwbU*4Dz+4bLD{zZZP>wL`S~dytNK1Z#FYgOJR2 z@bEbg0XCOleP<37#^eDXS6j6XNr7`){Gsr|UKpCQ4mz8-x}dcsyuPdjza6H*pV>wb z^>H!KH5ZO|69F|`UFGWUBG{OI6;xc_gUHYm(EU6N6Rbwyu-RwmsM(5ZKkY^Z{zJ%< zIgh2HLHIo&3txOwCUI|lV&8-C?9*9f@t}!J_426Uw#2_RqrPK0RkWHgr+J?2S%uBN z7~}OFK_(!k#m>+DLAQ^okmi5p%*@r0b$J>Sad_%ci8;*WQ4E=`RHOo3KhoLx6W`qt zq3gT;;_)THctN)ocRPlmTc-;?uhYiuwo)9|d@OF6%7;4j_n~a>CAfS)0ctD)phY7D zZmm5I+0&DOcBjJORmGsc>kJf6y96)ST!VbQd$4(8A7~5oL7=4|8b29}B^b@*wj>T#9pW*0&9#Ee17#!|hgPG|q@I|^DN<7m*^;!lj-4_T+Twbp( zco4iSJRnTn9b)3ABP>v|%a=~P1dVCJP7G8qx@JCaNTW$>1(}7qJgIq)qGnVuExz*wPjebPuYz(^T40S<&Z(GkW;O22UV$V# z9h1zJaYxBC+?)3Xq?4Y4<@qY887&04mMl1wc^TS1-hfjNTEN}@B?OHhghughc-Zm; z{;U{-tMkU7*FsVJ9j<@|&nMvpVJRGJorzOD74gAKWxVS<3FVEYP}D*K*E(=|7cWUP z_7+F?P=1u|;^Q<(FW~UJhp<|;3x1kigYXZH(4}z(Hu#po)wkua$1@L1_EbV+b~+3= z$H8@p7?9eZ3m5NQg5euOFevy5Jmz(PnUfXXn7;(wG99qIU=QXeTVefzRLm_MOP_{L z;~eW!{1m4~jg@1`Q_YCV*OijdpE7!LFpt#apVGA30&F#31r6k9Fi%Gz-r~Sw_VY{t zYu_uzu4GPOIu|d|=?ELP&RUmUU8qMFUK}OyWPYY<(Idy&4xJ6&lr6QY*Bj4 zLOjRSoM#%&<1}fraIjJrB|a+P)}NDb@oO1eFCdO4c0ZxV>K$ww_y~F7Zy;W@4;mML zg+R$hI6tKhuEte>nqC=HA1we_bP{H9xRz>Q4$Rd#4YT&Vfl=4-7}Pf%=WXqQA2*Cp z+3tw}3yZwLF$V5AvUf1w5r>!M)dHE1Jet1rD z*Q!XNO_Dc^8~;C67rHuxg_i%J#uKgVblyd-FH7&}b~ zt4<5ym{BQI5gv$0w}u)hPjWSv5ybGTaHDIC~+K7 zmcb9XfOppg;Kku!th6x3YJ>e)6&s6xokH-`L={>XKb>4WlJQ`5B8piC)4EHV^dU5h zQXC3tNQ0k=)~sXC#JbtH;8AKd{K!V!1DVc1EftFDG3x?NCdct}V-p=o<2KR}mzT8f zeFXVe)nnVhW8A9YK%q}YFh~9=@{%W#td%G7N`f(cu?EIhOQU`p;*aan_$6u(;xzgo zW7;by?fVXgE{#WxSL1M-+h3Ts%oHnsYGJ?<6TCI5juT?$V|1?-e$nzmn*>WNQeTE` z9JfhBV;34n*x=i3>u~;ZSDbx21m9|fVvzSv94&K2{;BS0@!1EpTAi@}h7~@_pNp#& zSl|`$x!CyMbUcilOykLP3{4fldH;>W0(CK*C@7Ejg|2|giCZAYKMMJOeu0`?30SaR zm>~WRL>)hXvj4G${0Vg1wT%AwSJK5rnrz0YX_W5Uz*=1=@n-6pvCb`J|JLjD__^$Q>jjqN zxqzhx8_-T~BMPQYPVXtsQX@HzdZ`OZSoqNJjYU}XC=3^!ZNil$A^7udI_~SxLp}!s zbXqTfYCoiK;KC?`uQbEj-5frkB8#03nwafwjlmD*;N-QNaQkU@oanb61t)mn8krE> zBYPaTtUiL4t79=&GzT}DAH}@YrItMq`(5 zD4y3&z@H_Dag5aogn<|oxV-{}A6a2W{aW<3M4V?~h7~y)$Y(nf_w^g&U$q%nIa3^W zofJc{b+hnk{RAA2_yK#P#Zl_Y7~EU_7!o{1&^TQh*SL7&a{qm}b^ltdkj_UZXAe|< zU5OVf^l96p4|sguBb+d&g1UQF)2gZ@dVkWDiW5(ggu`^!+7k3{T#vSk^DdNz@SbuW zRgOZFN%ho1b}n)o^T@yXF9z(?Hz)ZUIb^6=Obt)^(0sW7jYUUVo5|%VF}3((uOQ{F zWcc8-ITp>dM}FPun4IWPRilg2Kx#chX7aq6HKX2=Aii26p{{5J?U zI|X9;@Gna{4}VS;Cw8s4&y!-?jqsAbG)I%_B6jg40LbB8h>{iTX`QPI8I%A2WRLkBkPqVsBvC|K5GflHR*D?V6c-i&Jm7=k8r*@v25pcQKqH& zf(1WO`L{m1CMd97uhiLd>0M-(W5nd$he%<~WfHP4N4vu{6kIe!8vPx(=H+jEHCvii z3-82yy%g*_%lR-IH^ku&8Q6Y197DH;V@oeL&JOc&_4EMrY(0iDCi`)~a35Mv4abm8 z(O4=Lj8AVKMb(4ZSQvg7ZFe0(k*T4mcd!JHzfQ$Hnz^{h=@k0Aq@n%dCRA%pM7F#b z1wUTEJ8IniB7PC?R;FOd_p?}dxdrXUm7?Rm(|GURX_VYlj9a3saDjUw&Jqv7hp9*L zXTmOQ=JdMR@3!E;)|L3*!%WQjy#_b^%ENq%0KCm{2Zk1IMpq3REE}hRXJ4wIh2cV6 zy_Q>t3a8=|$HiFkG6?mBJyA9-6g$qI#EfylC~Pc9nY&GJ%PNk$dr+1{9t6`xyW^DC z_7_W{BC-0NFB|SGWTGZVSdED?Zvy965b67rxySX9UNo_w6|J|8k?6ABKcQ&obbCJ}D{N^NqgHNByE64PwuV2)rH-GtxokykgJN7B*^g%iKVY(DAqoj_8hE~DEYp2~ z!5`~ThQAv9Mq)58r~u2FOEEUS8TCR7(8pv5i!R*4M(r$o%qv5UpdxJA_Zf%JXQShu zlbCBej28<#@yl-oy8eZ`Z$^LNo@-&qwdJ88gLvAxfseXQT|srJ-{|(!mbd$?D(}mV z6})rmhAc`>lt~t)u;ghGbmg=yGj5y7ypC<6@TL<~`tv%SF&Cxg1>&SuKb|68Jke)g zG%l4$!FER(Jaa$=ZIk5D-M0!q?_Gz9c@0?g)fUq#;!s&I28+Kf#f}$|C=hoRL-e_O z%qs_zwm(9@&F64r!3FefzJx*|{M7on0@Igtp;;y$P3E|QaixP8Wy()3FRRdH#YfCO zAVhrzD&%lelniS{NlxJ&HjT-~2Yb44@4i@^@V61K+o#~%SBd!L$3;~6avCd>^HIsF z9?u<0M5Wi^I6*BN#dgfX_&j&~e9HxkQ&X^K;|g54(Gb6VSc2&lin!D(02Ov5qTIzT z7$-9s!Nml_w@ydvR(s?rx}rtWUi_u{1atIOVF+}g$#@_1*Gr-`KbO#W(*rd41> z?8L&QDp}v%Bdlwt2MeCa^*2a}W}UwFY;lYdvppcf3-nvT%W;29VWkt;cy9@orKHXx z-W1c{k|2^_6iqbaFuk^Vg;6s_X~QZxa*3(grzTc7dJaDDq`}I-f4A z(<4>s8vGdc17GIe!uu!HXwUI4xOoQBZ|+_Z^|2zad^wt>ZbOS!t)$F#(o+Z$<~WarERATV%^0faHKT38YUKN795p|hPv4AZ(W$a#Ed6kR zth*nfP^k^IH0sifjho5Fc^@VDY$26Ge{x)xPK($ciZv^y<R`g z>10)vPELb)G|3{Ix`X!8PRX;>**A%PJkOwd-z$`!X+!PT9+CWxP>PtDL<$yh)Us?h zIg3S8T4fMzIBrWf7bej{1w(StbRqve)9A6me7e${OSNy@$TT{RF73Ca!_pQsjq?Mm zR9#6Qv=@_Xof3(zk>WgE?CJ2tQn{nBhcc`Iq4(UNCt;qj{%j%rA zsvwVZQ`wu{y6i~mU;5%akAk!((ccSmNhrMQ)PQo|vO8iw$7n+XRKL%0f zaR8p)e+`}W&STQNv-o(rB|d##gU93-VAz>cxQ6r6N*nr(1)7HRE9yM%c~ytDB}$Yc zBSD%)J*aq9lw7^Xll7JHH22w5l0Whax7CSK!Rn8gnK6;}omQhjODXc0B1p&l+faU- zHMM=|$6dF3P+)&I>h)Ssk>*?)Cwm$#9^S~Wu>C2C35 z)Q}FOex@sz#aNZaS9(@?ic*X((mJOf^iBQ_Y3^*N2@=f|H~T(WI`Ods!8)u=GL7O+ z&SJaow^4Dl7`rd3&)h%7QqxLx_Vhndw$WCAg&%rF(+@Z>-gh-N!%LjC2v*aS7cpdi zX(}rjvzfipuw=Ol4Va^LA8p+|MCn^*u;H&W*l5T@5;eF@A=4Tt!9j(s_&$xL&$&m@ z;>v7XNFD9ze@9xrk}P6%IsJEI2^%UNq(R@gOrlnVnZ5o--|qdUHJy`L??yFTP`j00 zP2f2AeXaCh*AkMyb(2c+H&9d9d0PDK$%Z9S;z1!cDhD|WvpAzQ;?P873@{#X=IDDaJL3p8X&^+>N~_LM(@*> z+rQ}i4PA2BT|)lqPRuy7j0(bT)18IWs4**=6n|CGL32x*5|vAV-#A`syC)6JwI}J| zFnT&Yk?u)n((rpjditV+Cf4$^z3bnR`r9!q$5x4{xrnm2eZOdS`8Ns@{7Nb_o{_WB z7PjiHDD!^LPZ>G&lxHc+5(LE9h9`!sE+K(-K58WsyFYZjZjdB{Cb7@j)@;V~dz2F> z#ip8$=lXWdWx0M=sOV1?iGLJlLi5M5U7RPJ$#!LSuVoUOa5ju;c2&^V-`6PE`zy_> zI6z{p%Ix&r59nwRNV+i|v>`T-w%6YzqYy*xb31VN?M%AU6iv#=$i6bI{k4g&HNQe z?Q6AZ&HE{&yTp(7cX^SAvjy?axzhIFK+@QzNXxpCNu;9{JA8=9|0Pz)t5NS^bDEv( zKr>FxqL~NRQuyU|a{hjlk`DdFmC_;9|7{`XKeC^m_zq!TRvEoCm`dwE`jBkbCrlC( zrfJJ0sKGUajD!0ye((q4qfn|>NBZ0N1vM^pqxj!(q^%%A{wvDy>qtE)@6E)M_F^o$ ztCYT3%dqPWh3vrF5C)Ou%v-peCT$mFi@xTO;_z(NB_zO9W7pHV{tP<7`PX@J`XH(7 zpH$2F2i}QOrX=N78tI?POgyiXNq;IUs^6sr?hizA~)(dl3QJyCAOq$3BCQ7iG<(}*e=O^UZs>-yZ z&6&lqL5fRMV9{!}tVm@o6XMCRH5K#Nq>Q^%Gc<-RemzP@o+z-d_IV#8v-K9w>2ta&J9pEJ?H=%Eont1j7bAtl=cmoW>qVJbz;pa> zxdc1^;wi1y9H8s>u93~$@w89-5S{yP8aZqYWYYE?|Moxjtc(d-rL$u*qbR*|F@ybf zyki|Su+4VGMIH$N_7Q$B>VZx3VHl+eLNB%Hd&CPvJ#bOp(_rLtDWOzS|(&J-yx^^(XJ1MMXP@B2d zd(edmCs{?>1FG7fL}C#qS>j@EW~HG@otjUnBP^V0{$0j~*9fpTF*{hSpe6H2u;$e{ zmaqdZ3OvoMVXC(cl7fn|9LvB;HQ9x-RGxb+wDz0xSVqhYJW)rqs z%#ymVoFU$_0ID)sOc!SLlTIWbtL!~PyP}GyZ2B>_-aVhbto((a%s$c$(9AE<|<3bW?(!U7_y?^ zn-|F5K#I8*jAs)DH?#SV4Or78eL6SwJ>~z*BYV{h=06(BEK>QIY582HmA!iCUV zx`qOKDH+Es^pe>N4Gm^JLxagbccv+RIt;oV()Im1WUMC1lozG5?u@<6dRy$j_xh?_ zq}=*-Onf0f^D!So$~cSe9Gt~O#27QO7GQFlIITiu9XaK?vCI9|Y(R28+q5f%RJ%mj zf(dFY^u#unS~iz1>1wghfi-m6ua494)l;=aHT^2^VJTk3Y~-T9{l?|^zwO< z+_Z`bxW%yGxJq{ab~c+5)kp(16|7=IAo+?Xu^&#|tY+^2zO$&{I@_fzS zv60b5>}7^AyV1Oel@zox*JI0=lFfZKH*GPK?OM)uUOPv(vTjjtnj_QWe0zs9YMINs zRjgf}sm>2mglT9@j<9W#aV&em5v8BITSZ4VcUV`3PiV2tIseX26zhy;vAKl_8 zC5WFF5Py|9Sqky&e=T8|Ez@|`1&i1$T_vX5-NwHEc*3?6g|hCK!n_x=`BsMcib-x>TH4=WdKcB$+JrRlV> z4&Mj=#!tv8orNs8MRrXN?8&PC#SdnygULVnf5%Zu%Is0N3)A}4&$haHFsso@_V(Ou zHr7Jq-)Hh`#r_t0x3#Pv>3TJQevwb|MMtl9qp z)A&A-m)CrmWp)1~!F?ClHXrYQ=O=j`{`ai5>=N60D}Zr670jb#4BKGP$IjdTqV%jW zY?8xnRyfv^ZCLh!waO0D1<9jqtKucLR=Sm`v?sE)>qd#axlV2^1x!fw7t@~kiJ{gN z_Sa8~>w%KUloBeKo^LgKJus2yI5F$r7$^-ovxU@gDmd6WzN5AsoB8Q zm0#-eM&+wnfA$~?GOJ>CPlqVs#>s!@GkSKj2)V7SPOy>vohte7e>&IIc;(#nuN4tt z$MBzs=f9&V+)c;?5PXd=y*8Y8awJ6%q zLMlVV;42ZD&U3P7iv}~vlI+oDDN&;mg(MT23dx9uC?%CtH%bdqw#mMg(O1bbGGgL? z?>YCrFaDq5Grr&N`+hq7-shb2?9X}bxz9Z>?>#jW&6D0I?eanv z;Sa6Ta~0wA@PsO9c6R%0mn5hpycY_&FeU^hN{RR>l{ImR0 z?@_4h+J5NP*?iPlq65jv+OTRe{jDo~-@|A}tv*`1BpKOu-+{J1G$MS%>O#QydLMK$ z-T)kQ^pI}(eh5pdK#Hd=pmAy$N^r9z_Fl_k;Py5rFc`NUsaaW|!ErB9^mm3RX=G>U zqhyLsKW_`>k84p>mJTE=NJa{ZhRCvYPjr8?C2Db|9Sk$k0Jl#0s85F+qBkyS60E+L ziAJv+Lgd4Ab1<8tM*79v9$D8*5rX5|!7m5DmU$i%j*XPdu&P8Cz7jvJ9E{u7TamRAhH+4f@Kf3wnHIF525}9hx)c4l+`w z_ZpsFa;Ki?Su@*gRxe z-vxdQSdAvR1*3xD+&f4rLkVx`tuUG0=4$n*rviT|CXJHSVY z=JliG$7txh{VAtUtd}(qTc=y=|C0F)?*;sD~R}O}{Y8B{rVkMDlxv+%5$r{n%9OeaWD)g{RMi80n z9H$4`&u2l_{4h|>4uk9g4QQ^?6|iVsAL_Rz2^8p5?=pifLRob;1`eQgtU&RDOrP^ z3Bh1Jwj&%qvJrB_sc$pm9uwZ7TeF~&`w`gJX34PNYb$`^$q;noKDhVK2ezsk7|gbX z?U#qZ;QSec{_d~#GQ0YYr|%>a*X3s9DyV9!LGb>S>acrDOSpgeHQK#18$u4VaQ}gl zjJI@^8f^b&IvKl~sbl@BSLo$YO&PvpbRd*n3j&o*<f%WAsGW@T~kI}iS zRm4Bddk4w9W>6DsU2+l(dxgR6nofAq#M4MyDHt|LLLp+$9vIhHi+cQQ0(A`wA+)45 zF217-qfWJk9+e?*^-LH9#$Q4z`t+SmHySz+nGv^X{u*j8gWfIH!m0j6MCZV&Jp>=? z-%s`)o14#7Ve80O=x%LmnVqSft`mAOMsLE$Uq6%KQgYNmyNF)vJWYhtLm7@AkLo#r zd;jup$S$P@y=Z)Z6bJc3x#3)*r)?*1NbpZaeFI++p1@REcTC8m_uhg{6!LQZ>>%&Q z2h;1;X1^=94{L+&gC_JU?de;3Uwk)N<_ph1zxO$$XwU5hy=d&a_i`n8kDN-vcSv#o z1~_6eS3GJeG$0kyF9ix6deQfZ@v>GBO_)+tsx)+hUi`2D72Z5ZeC~o$o&xo@!)$R73|UG4U+bQ1S9pROWIVky zsPD?%?x4V9ZgAzFavX0D-*O7+`_Sl!VKSWMX+%8n&7r{bt$8nhA2L3> zS^i!)o__kN2=G4>3#vzha82qG!kcBMgCDt#B=qTyeguy3_a?AuQb&AQCj?rTB@o)h z3k=D8ReJ{4jp|1Fyxg1IyRzN=a^Smm49?;pKiA7I6}sdGL-x#H;PtcCgw}ImEHrvY zLRQ+3&~IxHL?#&Gjs1;ea&-H>ZSOS0@9?3D-C({Z5ax_O47K4DZy#VGC+0F~%$Q*B1Oz3i1pC9ur?Dkwpj9Dd{pD~i=6pwppNagYU z_qCTrfuMeu-ap0-@&r50g<$c*5)>x$)3JPQXkZ2Fm*ypo{r4 zm=)teXxDe4{F!Mtz%O6{432*Yu|1zbpqV$EKS*h6$4T&&{&NU@{vZlP|2(+wLHK_9 zGEdmd-Lu5`zk)eFi{OlO1WbQP>#cWbJ-_!Oaw@wmfRHwRVB|X+zQ4r1+j{M4GJp9R zeGi++m(atD%y->Y0kIn$-fP3bQgvA_Xiuq!0Iv|}vsM{5>2luzbM0Ke31Cvafb{#F zje%v))`Md~d%`m*I|f#im4b7{4T5*Pv!1}Iw^VUlQVi+aCQ#lrDRi8_I)cpG_y!R8 z2)bZk=gKT_AU-R_(eXQ9x-G)VN z+skIw>rY-`yPFLds(&@JW+%HT@s;FR89iEjQId1;_<}sBs|;ohDGYrLzwDI#n&@yjLJu( zVLhkE?VKJT!4nmqtJTM3U~1P7TN(O)PI{F7_k#vv_KQMs?>?d3c3w zn_0E7$8pp)otvpkPT+LnXFew8b}Yb8wiu6V`J@1Aa@6I8Cvk5Qk3u|VV~;#1&mz3w zPA_hz7_a5SrC);glDL)Nf~)-x{E&YN-{sL!r!f-<2~zA_?5;M zq+JjpTNvTgv+?A4cJh-@6V~B8TWgI~iv%Hp+sv?#X&S@xO%_9GtS@MrUb`ohPS>LuvBkrsyVB;<*S-HjK3-+F1>xiAl z1^bS({fS+9f<3ux3t~r(p#PYl_o$#RL(r4X`VskQg4|SAoA{d|$VpqF?{SxrK>OTceq1IYXqb_SsjWo-!bWyQ;07-I@Uu_vX+RQ@(B$isqse4FYM@QIkl zIZ2>P!3AUiQU&@nOyic0X*@G<6xmOX;xWXIV_1lXASV~ob<7jw9mh2^o|xvt2`t1L zuON07;E8lS1U-dVST8|e5zeLSDd;W1i|Kk}Vf}Frnh#ik<_8w?1*g;e!9qS^x{l?T z&jv2vu#kWF2bzyq$WJWfD?Ul{SIlQ&KNX|i44WhH-x+~cj4>(1B#a_c$5m5a?k-Dt zOLe$9k*_eFoV@2OUgF~6?&S1Q4rp?<9xeB57&kB1r7oVXE^`)BR-p`hubh8Xt9p7Y z?-~;4TQTDaFCVA2Tx4duxN%l7 z%zNu!p)MEsMab9kV$s@)>%Li6x8me3neR*<5&oZj?~x~#&+_LD6{ahvz}eMhp8K5H z3}0XKx_Noj1{G%bpfMA;!z1ntX%Y_zLbOkWT0+F%eGZh{%f~^5ad&njPc-k115v;* zZ~EPus8k~M(5D#rbAhHhwIEaA`_MVYWew3QfuR|EQ4z2mHi%r94uaR>K9MP$M~K1j zc6Rle!(Fjre%p$OPlV!g>;U0hV}>9{ejTd6@!T)$p&ZSJt`j9*j<8Xxb6vT-zkiOP z!O7##BS;K{K)id7V8`p{ng~Dr9HCl>wWqj65xMgH&Wf`CR7+#lrqW zjBWn-=m<2|5jG@N;{NhR(i=O)DGV0BrukfT1d%W76Iz_+H?ONtsUyVeUB2IZ-a6vl zb7Hx@|6U#Orr+9}-~4$bAM)VKFL{yF4R zzK>|f*(lZ#^Yy8g&s9fg>QZ?^7@EOHMxeQlupyBWv*(SZ|Bu%ZI-F+teOZa?|NG|= z;`J`yZ$57w@$UD?a(h3$j?m@&mXJU4Izl}EP%)q@VQNSrJ&$1C`|obZ;x&JKu@QK; Xju7ifTOohMz=+p3JyjHEKOO!b!+@j< From 723daa4c658fa613f97e1549a4e5385d3722e21b Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Wed, 26 Aug 2026 12:39:49 +0000 Subject: [PATCH 5/7] refactor(sans): apply the beam center as an incident beam direction The beam center is a point on the actual beam, measured from the sample, so it defines the beam direction. Passing that direction as `incident_beam` says so directly. It replaces the shear, which mapped the actual beam onto the nominal axis by displacing every pixel's scattered beam in proportion to its distance from the sample. The shear is exact along the beam and first order elsewhere, since it is a shear rather than a rotation. For the Loki-at-Larmor detector that costs a relative error in two_theta with a median of 3.8e-4 and a maximum of 1.2e-3, well above the 1e-5 the docstring claimed. Rotating the incident beam is exact everywhere, and it puts phi, the cylindrical coordinates and two_theta on the same footing instead of relying on the shear having mapped the transverse plane closely enough. The reference results move accordingly and are regenerated. Requires the beam-aligned coordinate system to follow the incident beam rather than its projection onto the horizontal plane; see scipp/scippneutron#725, released in 26.9.1. Without it, phi and Qx/Qy would drop the vertical part of the beam center. --- packages/esssans/src/ess/sans/conversions.py | 42 ++++++------------ packages/esssans/tests/beam_center_test.py | 26 +++++++++-- packages/esssans/tests/loki/iofq_test.py | 6 ++- ...ce_IofQ_UncertaintyBroadcastMode.drop.hdf5 | Bin 15776 -> 15776 bytes ..._IofQxy_UncertaintyBroadcastMode.drop.hdf5 | Bin 73376 -> 73376 bytes 5 files changed, 41 insertions(+), 33 deletions(-) diff --git a/packages/esssans/src/ess/sans/conversions.py b/packages/esssans/src/ess/sans/conversions.py index 8d4edff17..8fed5262e 100644 --- a/packages/esssans/src/ess/sans/conversions.py +++ b/packages/esssans/src/ess/sans/conversions.py @@ -36,30 +36,23 @@ ) -def _scattered_beam_with_beam_center( - beam_center: sc.Variable, incident_beam: sc.Variable -) -> Callable[[sc.Variable, sc.Variable], sc.Variable]: +def _incident_beam_from_beam_center( + beam_center: sc.Variable, nominal_incident_beam: sc.Variable +) -> Callable[[], sc.Variable]: """ - Return a provider for ``scattered_beam`` that accounts for the beam center. + Return a provider for ``incident_beam`` that points along the actual beam. Scattering angles must be measured relative to the actual beam. The beam passes through the sample, but its direction, set by the collimation, in general deviates from the nominal beam axis defined by source and sample. The beam center is a point - on the actual beam, so together with the sample position it defines that direction. + on the actual beam, measured from the sample, so it defines that direction. - Every pixel is shifted transversely in proportion to its distance from the sample, - which maps the actual beam onto the nominal axis: by the full transverse offset at - the distance where the beam center was determined, by half of it at half that - distance. Only the ratio of the offset to that distance is used, so scaling - ``beam_center`` leaves the result unchanged. - - The shift is a shear rather than a rotation, hence exact along the beam and - approximate elsewhere, with a relative error in ``two_theta`` of the order of the - squared beam tilt, i.e., below 1e-5 for a beam center of 20 mm at 5 m. + Only the direction is taken from the beam center. The length is that of the nominal + incident beam, since ``L1`` is a property of the beamline and not of the beam + center. Scaling ``beam_center`` therefore leaves the result unchanged. """ - axis = incident_beam / sc.norm(incident_beam) - distance = sc.dot(beam_center, axis) - if distance.value <= 0.0: + axis = nominal_incident_beam / sc.norm(nominal_incident_beam) + if sc.dot(beam_center, axis).value <= 0.0: raise ValueError( f'Invalid beam center {beam_center}. The beam center is the position of ' 'the beam relative to the sample, so its component along the beam must be ' @@ -67,15 +60,8 @@ def _scattered_beam_with_beam_center( 'center was determined. A beam center given as a transverse offset alone, ' 'without that distance, cannot define a beam direction.' ) - offset = beam_center - distance * axis - - def scattered_beam( - position: sc.Variable, sample_position: sc.Variable - ) -> sc.Variable: - beam = position - sample_position - return beam - offset * (sc.dot(beam, axis) / distance) - - return scattered_beam + incident_beam = sc.norm(nominal_incident_beam) * beam_center / sc.norm(beam_center) + return lambda: incident_beam def cyl_unit_vectors(incident_beam: sc.Variable, gravity: sc.Variable): @@ -202,8 +188,8 @@ def sans_elastic( } # A zero beam center means no correction, leaving the plain beamline graph. if sc.norm(beam_center).value != 0.0: - graph['scattered_beam'] = _scattered_beam_with_beam_center( - beam_center, incident_beam=sample_position - source_position + graph['incident_beam'] = _incident_beam_from_beam_center( + beam_center, nominal_incident_beam=sample_position - source_position ) if correct_for_gravity: del graph['two_theta'] diff --git a/packages/esssans/tests/beam_center_test.py b/packages/esssans/tests/beam_center_test.py index 51dfe478c..5eef241aa 100644 --- a/packages/esssans/tests/beam_center_test.py +++ b/packages/esssans/tests/beam_center_test.py @@ -75,12 +75,32 @@ def test_beam_center_shifts_two_theta() -> None: assert with_center.value < without.value -def test_phi_is_measured_around_the_beam_center() -> None: - # Directly to the right of the beam center, i.e., phi == 0. - position = SAMPLE_POSITION + BEAM_CENTER + sc.vector([0.2, 0, 0], unit='m') +def _transverse_offset(direction: sc.Variable) -> sc.Variable: + """Offset of 20 cm along ``direction``.""" + return sc.scalar(0.2, unit='m') * direction / sc.norm(direction) + + +def test_phi_is_zero_horizontally_beside_the_beam_center() -> None: + # Perpendicular to the beam and to gravity, i.e., phi == 0. + right = sc.cross(-gravity_vector(), BEAM_CENTER) + position = SAMPLE_POSITION + BEAM_CENTER + _transverse_offset(right) assert_zero_angle(angle(position, make_graph(beam_center=BEAM_CENTER), name='phi')) +def test_phi_is_ninety_degrees_above_the_beam_center() -> None: + # Perpendicular to the beam, in the plane spanned by the beam and gravity. + right = sc.cross(-gravity_vector(), BEAM_CENTER) + position = ( + SAMPLE_POSITION + BEAM_CENTER + _transverse_offset(sc.cross(BEAM_CENTER, right)) + ) + phi = angle(position, make_graph(beam_center=BEAM_CENTER), name='phi') + assert sc.isclose( + phi, + 0.5 * sc.constants.pi.value * sc.Unit('rad'), + atol=sc.scalar(1e-9, unit='rad'), + ) + + @pytest.mark.parametrize('correct_for_gravity', [False, True]) def test_beam_center_is_applied_relative_to_sample_position( correct_for_gravity: bool, diff --git a/packages/esssans/tests/loki/iofq_test.py b/packages/esssans/tests/loki/iofq_test.py index 5dc0527e3..4d445b867 100644 --- a/packages/esssans/tests/loki/iofq_test.py +++ b/packages/esssans/tests/loki/iofq_test.py @@ -111,9 +111,11 @@ def test_pipeline_can_compute_IofQ_in_event_mode( sc.values(reference.data), sc.values(result.hist().data), # Could be 1e-11, but currently the workflow defaults to float32 data, as - # returned by ScippNexus. + # returned by ScippNexus. The background subtraction cancels most of the + # signal, so a single ulp of the unsubtracted intensity shows up here as a + # much larger deviation. rtol=sc.scalar(1e-7), - atol=sc.scalar(1e-7), + atol=sc.scalar(1e-6), ) if uncertainties == UncertaintyBroadcastMode.drop: # Could both be 1e-14 if using float64 diff --git a/packages/esssans/tests/loki/reference_IofQ_UncertaintyBroadcastMode.drop.hdf5 b/packages/esssans/tests/loki/reference_IofQ_UncertaintyBroadcastMode.drop.hdf5 index 1742644c3534b2388b0bba56ef7b42b84b22dcf1..0ca6d0e1c8c3efdf4980afc52be204806eed0bb7 100644 GIT binary patch delta 817 zcmWN_eNfYN7yxh%7V?`0IAx*{$dP9QvlYwl^TqRdeuU83*T*6F87pQ7F{I+|Qwk>SX2tkw=i=tWhF zMKli(X{bW>gP)fdC0=beF zQC*va3f}c41Al?pM;0)%XBJnkm_d*{!VOjr{!~1U@h^vwkGOHjc^5AZ4C3jXJ!sw9 zi*@UIv7@&e!^Upo>MyjdsPb>aT?038|Gq|S@U)}lMgzXuP>s&XT6{ip8MiD{U~GOZ zib>Vj8dZs7*=0Dltqi~VqZE&OD=^Y%#hWf0PG2!&z|m4H*=|93j2UyjGh*5^Gsgd% zi#G)W9w;_pf0Gfzn+@1spO0O6IoPPJ(Btd7&tPDS3AIysxZ{EjFIC0IrDh3n9lAjt zve?NJ{PjF4D2X>qWBI7BjJr?H!kxfwXpvU~brgYVX&xMOr$KAVJ`kN-;MP?Jo@oWN zheW`K7CD%H4~A2UMX)YV0)K}3fWi8l{V?TaO34$Zof+}4<-!L(SHRu9p)g+@4&}pZz`b)VJWNyqZGRgUDpfFHkJCcUTU$Z+W;f(& z)L?AZK=Du_MB6`wXZ@M*ZNf>IsxO2yt^&wSF~R|*4W5kt2pj({2c@$S(%o%vU3VP@ z9UTz)kqf^5?H(vPCqNoH1;)j`{KVr0kd-dsAABCn&)LKHh4AeUBZ^QM4@?#*(vxIOcke;oUvBET|Xth3#mwK1Ih+Gmfg8aA3{xfmUg zhp#)caeuT4*R`5ZapM45rC=jQ{hEuLhL2!zYbH)K8}OIHsL0f8dF0Atjl60?3Fi}x zyb%(3lGj|W@=@^MZ9^d3>*1015>!4o3h#Zhptmj=mZz+N>py%AW&I3%oiibPsXw$V z@P!biH^k5PfZ4S&Fo%5v)`WK~MDJp`=lYoBGWW2l8=MU8J!6AK-OMiUVo4EQEXCfz zVinJrcjt3<`_KzE=K70?;@7MuYk+MJA7<0zM%g>{2X?!DoCVK!gCV0kyiJfpMc~I^ zuU5eN4GQS_b_$#>nF8+pey~HMfr5ZQXb230&wb{=OWiy$L_|uUd=mp^&1%@y6bG^8 z@o-qS4o2=ILgc&*@bcUbveInuGnl}fkpmSWR?zYy&?lY(uP=WG|4(nh?D{`I*I5M` z<^XL$8$8W;0n@hhfzRMLbd-+6KBFfOxUAp{tEcnCRiE)s^5=4o!?XC4e+0i~ni0(# qTUYY+$#MK*>UOSZ+{kly2JhaP$IEse<#msbaKo(=zxk^VO#L6`qhmn; diff --git a/packages/esssans/tests/loki/reference_IofQxy_UncertaintyBroadcastMode.drop.hdf5 b/packages/esssans/tests/loki/reference_IofQxy_UncertaintyBroadcastMode.drop.hdf5 index c5851a6ccae27b038441fd11f06612e30b8b38f3..30b3af3d272e354189b0e00dcbb562792fed01d4 100644 GIT binary patch delta 52167 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 or|;v!Q7;@31=gd#ofuONO4+Y@`%* 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 delta 52175 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 T;rtmh5*;MeE02Be8U6nO;hLi+ From a4c3479c1c74dc1570ea21adc50e855d11f281cd Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Mon, 14 Sep 2026 07:20:41 +0000 Subject: [PATCH 6/7] refactor(sans): pass a beam center, not plane offsets, to the quadrant cost The beam-center search parametrizes the beam center by two offsets within a plane normal to the beam. That parametrization exists only because the minimizer needs floats, so confine it to the minimizer call. `_iofq_in_quadrants` and `_cost` now take a beam center directly. The user guide's walk-through of the algorithm no longer needs the private `_BeamPlane`. It builds the beam center itself, which makes the role of the distance along the beam visible to the reader instead of hiding it in a factory call. `_BeamPlane.from_beam_center` takes the unit vectors and the incident beam rather than data and a graph, so `beam_center_from_iofq` can obtain them from the `transform_coords` call it already makes for the minimizer bounds. The class docstring records the precondition that signature carries: the unit vectors must belong to the same incident beam. --- .../common/beam-center-finder.ipynb | 30 ++++--- .../src/ess/sans/beam_center_finder.py | 78 ++++++++++++------- 2 files changed, 62 insertions(+), 46 deletions(-) diff --git a/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb b/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb index 887497cdb..d51cb2d02 100644 --- a/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb +++ b/packages/esssans/docs/user-guide/common/beam-center-finder.ipynb @@ -447,29 +447,26 @@ "metadata": {}, "outputs": [], "source": [ - "from ess.sans.beam_center_finder import _BeamPlane\n", - "from ess.sans.conversions import ElasticCoordTransformGraph\n", - "\n", "workflow = workflow.copy()\n", "workflow[QBins] = q_bins\n", "workflow[ReturnEvents] = False\n", "workflow[DimsToKeep] = ()\n", "workflow[WavelengthMask] = None\n", "workflow[WavelengthBands] = None\n", - "# Offsets inside the plane normal to the beam only define a beam center together with\n", - "# the distance from the sample at which they are given. We take that distance from the\n", - "# center-of-mass estimate above.\n", - "plane = _BeamPlane.from_beam_center(\n", - " data=workflow.compute(CorrectedDetector[SampleRun, Numerator]),\n", - " graph=workflow.compute(ElasticCoordTransformGraph[SampleRun]),\n", - " beam_center=com,\n", - ")\n", + "\n", "kwargs = dict( # noqa: C408\n", " workflow=workflow,\n", " detector=detector['data'],\n", " norm=workflow.compute(CleanDirectBeam),\n", - " plane=plane,\n", - ")" + ")\n", + "\n", + "\n", + "def beam_center(x, y):\n", + " \"\"\"Beam center from transverse offsets, at the distance found by method 1.\"\"\"\n", + " # Transverse offsets define a beam direction only together with the distance from\n", + " # the sample at which they are given. The SANS2D beam runs along Z, so the plane\n", + " # normal to the beam is the XY plane, here at the Z of the center of mass.\n", + " return sc.vector([x, y, com.fields.z.value], unit='m')" ] }, { @@ -490,7 +487,7 @@ "from ess.sans.beam_center_finder import _iofq_in_quadrants\n", "\n", "results = _iofq_in_quadrants(\n", - " xy=[0, 0],\n", + " beam_center=beam_center(x=0.0, y=0.0),\n", " **kwargs,\n", ")" ] @@ -557,9 +554,8 @@ "bounds = [(x.min().value, x.max().value), (y.min().value, y.max().value)]\n", "\n", "res = minimize(\n", - " sans.beam_center_finder._cost,\n", + " lambda xy: sans.beam_center_finder._cost(beam_center(*xy), **kwargs),\n", " x0=[0, 0],\n", - " args=tuple(kwargs.values()),\n", " bounds=bounds,\n", " method='Powell',\n", " tol=0.01,\n", @@ -606,7 +602,7 @@ "outputs": [], "source": [ "results = _iofq_in_quadrants(\n", - " xy=[res.x[0], res.x[1]],\n", + " beam_center=beam_center(*res.x),\n", " **kwargs,\n", ")\n", "\n", diff --git a/packages/esssans/src/ess/sans/beam_center_finder.py b/packages/esssans/src/ess/sans/beam_center_finder.py index 746ea85d2..2ea85fb8f 100644 --- a/packages/esssans/src/ess/sans/beam_center_finder.py +++ b/packages/esssans/src/ess/sans/beam_center_finder.py @@ -303,6 +303,11 @@ class _BeamPlane: ``axis`` points from the sample to the plane, i.e., it carries the distance at which the beam center is determined. Offsets alone do not define a beam direction, so searching for a beam center means searching within such a plane. + + ``unit_x`` and ``unit_y`` must be the beam-aligned unit vectors belonging to the + same ``incident_beam``. The third axis of that frame is the normalized incident + beam, so the frame is orthonormal and ``offsets`` and ``beam_center`` are exact + inverses of each other. """ unit_x: sc.Variable @@ -311,17 +316,17 @@ class _BeamPlane: @staticmethod def from_beam_center( - data: sc.DataArray, graph: dict, beam_center: sc.Variable + *, + unit_x: sc.Variable, + unit_y: sc.Variable, + incident_beam: sc.Variable, + beam_center: sc.Variable, ) -> '_BeamPlane': - """Plane containing ``beam_center``, normal to the incident beam.""" - coords = data.transform_coords( - ['cyl_x_unit_vector', 'cyl_y_unit_vector', 'incident_beam'], graph=graph - ).coords - incident_beam = coords['incident_beam'] + """Plane containing ``beam_center``, normal to ``incident_beam``.""" direction = incident_beam / sc.norm(incident_beam) return _BeamPlane( - unit_x=coords['cyl_x_unit_vector'], - unit_y=coords['cyl_y_unit_vector'], + unit_x=unit_x, + unit_y=unit_y, axis=sc.dot(beam_center, direction) * direction, ) @@ -337,25 +342,22 @@ def beam_center(self, xy: list[float]) -> sc.Variable: def _iofq_in_quadrants( - xy: list[float], + beam_center: sc.Variable, workflow: sciline.Pipeline, detector: sc.DataArray, norm: sc.DataArray, - plane: _BeamPlane, ) -> dict[str, sc.DataArray]: """ Compute the intensity as a function of Q inside 4 quadrants in Phi. Parameters ---------- - xy: - The x,y offsets in the plane normal to the beam. + beam_center: + The beam center to use, see :py:class:`ess.sans.types.BeamCenter`. detector: The raw detector. norm: The denominator data for normalization. - plane: - The plane normal to the beam in which ``xy`` are given. Returns ------- @@ -369,7 +371,7 @@ def _iofq_in_quadrants( quadrants = ['south-west', 'south-east', 'north-east', 'north-west'] workflow = workflow.copy() - workflow[BeamCenter] = plane.beam_center(xy) + workflow[BeamCenter] = beam_center graph = workflow.compute(ElasticCoordTransformGraph[SampleRun]) calibrated = workflow.compute(CorrectedDetector[SampleRun, Numerator]) with_phi = calibrated.transform_coords( @@ -401,7 +403,12 @@ def _iofq_in_quadrants( return out -def _cost(xy: list[float], *args) -> float: +def _cost( + beam_center: sc.Variable, + workflow: sciline.Pipeline, + detector: sc.DataArray, + norm: sc.DataArray, +) -> float: """ Cost function for determining how close the :math:`I(Q)` curves are in all four quadrants. The cost is defined as @@ -421,10 +428,13 @@ def _cost(xy: list[float], *args) -> float: Parameters ---------- - xy: - The x,y offsets in the plane normal to the beam. - *args: - Arguments passed to :func:`iofq_in_quadrants`. + beam_center: + The beam center at which to evaluate the cost, see + :py:class:`ess.sans.types.BeamCenter`. + detector: + The raw detector. + norm: + The denominator data for normalization. Returns ------- @@ -451,7 +461,7 @@ def _cost(xy: list[float], *args) -> float: one. The Mantid implementation is available `here float: 'try restricting your Q range, or increasing the size of your Q bins to ' 'improve statistics in the denominator.' ) - logger.info('Beam center finder: x=%s, y=%s, cost=%s', xy[0], xy[1], out) + logger.info('Beam center finder: beam_center=%s, cost=%s', beam_center, out) return out @@ -608,14 +618,25 @@ def beam_center_from_iofq( com = beam_center_from_center_of_mass(workflow) logger.info('Initial guess for beam center: %s', com) + coords = data.transform_coords( + [ + 'cyl_x_unit_vector', + 'cyl_y_unit_vector', + 'incident_beam', + 'cylindrical_x', + 'cylindrical_y', + ], + graph=graph, + ).coords # The refinement below only varies the offsets within the plane normal to the beam. # The distance at which the beam center is determined is taken from the initial # guess and kept fixed. - plane = _BeamPlane.from_beam_center(data=data, graph=graph, beam_center=com) - - coords = data.transform_coords( - ['cylindrical_x', 'cylindrical_y'], graph=graph - ).coords + plane = _BeamPlane.from_beam_center( + unit_x=coords['cyl_x_unit_vector'], + unit_y=coords['cyl_y_unit_vector'], + incident_beam=coords['incident_beam'], + beam_center=com, + ) bounds = [ (coords['cylindrical_x'].min().value, coords['cylindrical_x'].max().value), (coords['cylindrical_y'].min().value, coords['cylindrical_y'].max().value), @@ -623,9 +644,8 @@ def beam_center_from_iofq( # Refine using Scipy optimize res = minimize( - _cost, + lambda xy: _cost(plane.beam_center(xy), workflow, detector, norm), x0=plane.offsets(com), - args=(workflow, detector, norm, plane), bounds=bounds, method=minimizer, tol=tolerance, From 13f09212041c4ce37677ebd501f42794d10a26a1 Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Mon, 14 Sep 2026 08:05:32 +0000 Subject: [PATCH 7/7] fix(sans): let beam_center_from_iofq run without a beam center set Computing the coordinate transform graph requires a BeamCenter, so the finder raised UnsatisfiedRequirement unless the caller had already set one -- for a function whose job is to determine it. beam_center_from_center_of_mass guards against this with _with_default_beam_center; apply the same guard here. Masked so far because every call site sets a zero beam center first, and the result is unchanged for those. --- packages/esssans/src/ess/sans/beam_center_finder.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/esssans/src/ess/sans/beam_center_finder.py b/packages/esssans/src/ess/sans/beam_center_finder.py index 2ea85fb8f..ba2fb4208 100644 --- a/packages/esssans/src/ess/sans/beam_center_finder.py +++ b/packages/esssans/src/ess/sans/beam_center_finder.py @@ -597,6 +597,8 @@ def beam_center_from_iofq( ElasticCoordTransformGraph[SampleRun], ) workflow = workflow.copy() + # This function determines the beam center, so it must run without one being set. + workflow = _with_default_beam_center(workflow) # Avoid reshape of detector, which would break boolean-indexing by cost function workflow[DetectorBankSizes] = {} results = workflow.compute(keys)