From b0df3cee6e2eb38fe511617eb97c312df653d1ef Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Wed, 4 Feb 2026 15:54:13 +0100 Subject: [PATCH 1/5] update notebook and add new table to data registry --- .../odin/odin-make-tof-lookup-table.ipynb | 13 ++++++------ packages/essimaging/src/ess/odin/data.py | 20 ++++++++++++++++--- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb b/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb index 6478cfa9..9ff89d1b 100644 --- a/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb +++ b/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb @@ -45,10 +45,10 @@ "wf[time_of_flight.NumberOfSimulatedNeutrons] = 200_000 # Increase this number for more reliable results\n", "wf[time_of_flight.SimulationSeed] = 1234\n", "wf[time_of_flight.PulseStride] = 2\n", - "wf[time_of_flight.LtotalRange] = sc.scalar(55.0, unit=\"m\"), sc.scalar(65.0, unit=\"m\")\n", + "wf[time_of_flight.LtotalRange] = sc.scalar(5.0, unit=\"m\"), sc.scalar(65.0, unit=\"m\")\n", "wf[time_of_flight.DistanceResolution] = sc.scalar(0.1, unit=\"m\")\n", "wf[time_of_flight.TimeResolution] = sc.scalar(250.0, unit='us')\n", - "wf[time_of_flight.LookupTableRelativeErrorThreshold] = 0.02" + "wf[time_of_flight.LookupTableRelativeErrorThreshold] = 1.0" ] }, { @@ -67,7 +67,7 @@ "outputs": [], "source": [ "table = wf.compute(time_of_flight.TimeOfFlightLookupTable)\n", - "table" + "table.array" ] }, { @@ -95,10 +95,8 @@ "metadata": {}, "outputs": [], "source": [ - "# Save chopper metadata\n", - "table.choppers = sc.DataGroup(disk_choppers)\n", "# Write to file\n", - "table.save_hdf5('ODIN-tof-lookup-table.h5')" + "table.save_hdf5('ODIN-tof-lookup-table-5m-65m.h5')" ] } ], @@ -117,7 +115,8 @@ "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" + "pygments_lexer": "ipython3", + "version": "3.12.7" } }, "nbformat": 4, diff --git a/packages/essimaging/src/ess/odin/data.py b/packages/essimaging/src/ess/odin/data.py index ac173699..31ab32ab 100644 --- a/packages/essimaging/src/ess/odin/data.py +++ b/packages/essimaging/src/ess/odin/data.py @@ -15,6 +15,7 @@ "iron_simulation_sample_large.nxs": "md5:c162b6abeccb51984880d8d5002bae95", "iron_simulation_sample_small.nxs": "md5:dda6fb30aa88780c5a3d4cef6ea05278", "ODIN-tof-lookup-table.h5": "md5:e657021f4508f167b2a2eb550853b06b", + "ODIN-tof-lookup-table-5m-65m.h5": "md5:7b8b3afac20512935d9e6b44d740d06c", }, ) @@ -59,13 +60,26 @@ def iron_simulation_ob_large() -> pathlib.Path: return _registry.get_path("iron_simulation_ob_large.nxs") -def odin_tof_lookup_table() -> pathlib.Path: +def odin_tof_lookup_table(full_beamline: bool = False) -> pathlib.Path: """ Odin TOF lookup table. This file is used to convert the time-of-flight to wavelength. + Use the ``full_beamline`` argument to get the lookup table for the full beamline, + which covers the range 5-65m. + The fulle range should be prefered, and the shorter range is kept for + retro-compatibility. - This table was computed using `Create a time-of-flight lookup table for ODIN + These tables were computed using `Create a time-of-flight lookup table for ODIN <../../odin/odin-make-tof-lookup-table.rst>`_ with ``NumberOfSimulatedNeutrons = 5_000_000``. + + Parameters + ---------- + full_beamline: + Whether to return the lookup table for the full beamline (5-65m) or for the + range 55-65m. """ - return _registry.get_path("ODIN-tof-lookup-table.h5") + if full_beamline: + return _registry.get_path("ODIN-tof-lookup-table-5m-65m.h5") + else: + return _registry.get_path("ODIN-tof-lookup-table.h5") From cc38cd965184d5a72731aa4fe608ffd146bf92f9 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Wed, 4 Feb 2026 15:54:56 +0100 Subject: [PATCH 2/5] bump essreduce requirement --- packages/essimaging/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/essimaging/pyproject.toml b/packages/essimaging/pyproject.toml index c38d3a56..f140ad48 100644 --- a/packages/essimaging/pyproject.toml +++ b/packages/essimaging/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "scippneutron>=24.12.0", "scippnexus>=23.11.1", "tifffile>=2024.7.2", - "essreduce>=25.11.2", + "essreduce>=26.2.0", "scitiff>=25.7", ] From d4f834545934fd13c5edc948179549c005e2118e Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Wed, 4 Feb 2026 16:07:39 +0100 Subject: [PATCH 3/5] spelling --- packages/essimaging/src/ess/odin/data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/essimaging/src/ess/odin/data.py b/packages/essimaging/src/ess/odin/data.py index 31ab32ab..49ebee28 100644 --- a/packages/essimaging/src/ess/odin/data.py +++ b/packages/essimaging/src/ess/odin/data.py @@ -66,7 +66,7 @@ def odin_tof_lookup_table(full_beamline: bool = False) -> pathlib.Path: This file is used to convert the time-of-flight to wavelength. Use the ``full_beamline`` argument to get the lookup table for the full beamline, which covers the range 5-65m. - The fulle range should be prefered, and the shorter range is kept for + The full range should be preferred, and the shorter range is kept for retro-compatibility. These tables were computed using `Create a time-of-flight lookup table for ODIN From 730f22d89529e1c666df36932e038c287c90df22 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Thu, 12 Feb 2026 13:36:36 +0100 Subject: [PATCH 4/5] update odin and tbl lookup tables and notebooks --- .../odin/odin-make-tof-lookup-table.ipynb | 5 ++-- .../docs/tbl/tbl-make-tof-lookup-table.ipynb | 13 +++++------ packages/essimaging/src/ess/odin/data.py | 23 ++++--------------- packages/essimaging/src/ess/tbl/data.py | 5 ++-- 4 files changed, 16 insertions(+), 30 deletions(-) diff --git a/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb b/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb index 9ff89d1b..a494ad57 100644 --- a/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb +++ b/packages/essimaging/docs/odin/odin-make-tof-lookup-table.ipynb @@ -47,8 +47,7 @@ "wf[time_of_flight.PulseStride] = 2\n", "wf[time_of_flight.LtotalRange] = sc.scalar(5.0, unit=\"m\"), sc.scalar(65.0, unit=\"m\")\n", "wf[time_of_flight.DistanceResolution] = sc.scalar(0.1, unit=\"m\")\n", - "wf[time_of_flight.TimeResolution] = sc.scalar(250.0, unit='us')\n", - "wf[time_of_flight.LookupTableRelativeErrorThreshold] = 1.0" + "wf[time_of_flight.TimeResolution] = sc.scalar(250.0, unit='us')" ] }, { @@ -116,7 +115,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12.12" } }, "nbformat": 4, diff --git a/packages/essimaging/docs/tbl/tbl-make-tof-lookup-table.ipynb b/packages/essimaging/docs/tbl/tbl-make-tof-lookup-table.ipynb index cbb8e744..870c7579 100644 --- a/packages/essimaging/docs/tbl/tbl-make-tof-lookup-table.ipynb +++ b/packages/essimaging/docs/tbl/tbl-make-tof-lookup-table.ipynb @@ -43,10 +43,9 @@ "wf[time_of_flight.NumberOfSimulatedNeutrons] = 200_000 # Increase this number for more reliable results\n", "wf[time_of_flight.SimulationSeed] = 1234\n", "wf[time_of_flight.PulseStride] = 1\n", - "wf[time_of_flight.LtotalRange] = sc.scalar(25.0, unit=\"m\"), sc.scalar(35.0, unit=\"m\")\n", + "wf[time_of_flight.LtotalRange] = sc.scalar(5.0, unit=\"m\"), sc.scalar(35.0, unit=\"m\")\n", "wf[time_of_flight.DistanceResolution] = sc.scalar(0.1, unit=\"m\")\n", - "wf[time_of_flight.TimeResolution] = sc.scalar(250.0, unit='us')\n", - "wf[time_of_flight.LookupTableRelativeErrorThreshold] = 1.0" + "wf[time_of_flight.TimeResolution] = sc.scalar(250.0, unit='us')" ] }, { @@ -65,7 +64,7 @@ "outputs": [], "source": [ "table = wf.compute(time_of_flight.TimeOfFlightLookupTable)\n", - "table" + "table.array" ] }, { @@ -75,7 +74,7 @@ "metadata": {}, "outputs": [], "source": [ - "table.plot()" + "table.plot(title=\"Predicted time-of-flight\") + sc.stddevs(table.array).plot(title=\"Standard deviation\")" ] }, { @@ -95,7 +94,7 @@ "source": [ "# Save chopper metadata\n", "# Write to file\n", - "table.save_hdf5('TBL-tof-lookup-table-no-choppers.h5')" + "table.save_hdf5('TBL-tof-lookup-table-no-choppers-5m-35m.h5')" ] } ], @@ -115,7 +114,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12.12" } }, "nbformat": 4, diff --git a/packages/essimaging/src/ess/odin/data.py b/packages/essimaging/src/ess/odin/data.py index 49ebee28..dcd7f953 100644 --- a/packages/essimaging/src/ess/odin/data.py +++ b/packages/essimaging/src/ess/odin/data.py @@ -15,7 +15,7 @@ "iron_simulation_sample_large.nxs": "md5:c162b6abeccb51984880d8d5002bae95", "iron_simulation_sample_small.nxs": "md5:dda6fb30aa88780c5a3d4cef6ea05278", "ODIN-tof-lookup-table.h5": "md5:e657021f4508f167b2a2eb550853b06b", - "ODIN-tof-lookup-table-5m-65m.h5": "md5:7b8b3afac20512935d9e6b44d740d06c", + "ODIN-tof-lookup-table-5m-65m.h5": "md5:c815eed6835a98d0b8d5252ffe250964", }, ) @@ -60,26 +60,13 @@ def iron_simulation_ob_large() -> pathlib.Path: return _registry.get_path("iron_simulation_ob_large.nxs") -def odin_tof_lookup_table(full_beamline: bool = False) -> pathlib.Path: +def odin_tof_lookup_table() -> pathlib.Path: """ Odin TOF lookup table. - This file is used to convert the time-of-flight to wavelength. - Use the ``full_beamline`` argument to get the lookup table for the full beamline, - which covers the range 5-65m. - The full range should be preferred, and the shorter range is kept for - retro-compatibility. + This file is used to convert the raw ``event_time_offset`` to time-of-flight. - These tables were computed using `Create a time-of-flight lookup table for ODIN + This table was computed using `Create a time-of-flight lookup table for ODIN <../../odin/odin-make-tof-lookup-table.rst>`_ with ``NumberOfSimulatedNeutrons = 5_000_000``. - - Parameters - ---------- - full_beamline: - Whether to return the lookup table for the full beamline (5-65m) or for the - range 55-65m. """ - if full_beamline: - return _registry.get_path("ODIN-tof-lookup-table-5m-65m.h5") - else: - return _registry.get_path("ODIN-tof-lookup-table.h5") + return _registry.get_path("ODIN-tof-lookup-table-5m-65m.h5") diff --git a/packages/essimaging/src/ess/tbl/data.py b/packages/essimaging/src/ess/tbl/data.py index d01c58db..10200bee 100644 --- a/packages/essimaging/src/ess/tbl/data.py +++ b/packages/essimaging/src/ess/tbl/data.py @@ -12,6 +12,7 @@ files={ "tbl_sample_data_2025-03.hdf": "md5:12db6bc06721278b3abe47992eac3e77", "TBL-tof-lookup-table-no-choppers.h5": "md5:8bc98fac0ee64fc8f5decf509c75bafe", + "TBL-tof-lookup-table-no-choppers-5m-35m.h5": "md5:be7e73f32d395abd3c28b95f75934d61", # noqa: E501 'tbl-orca-focussing.hdf.zip': Entry( alg='md5', chk='f365acd9ea45dd205c0b9398d163cfa4', unzip=True ), @@ -34,9 +35,9 @@ def tbl_tof_lookup_table_no_choppers() -> pathlib.Path: This table was computed using `Create a time-of-flight lookup table for TBL <../../tbl/tbl-make-tof-lookup-table.rst>`_ - with ``NumberOfSimulatedNeutrons = 2_000_000``. + with ``NumberOfSimulatedNeutrons = 5_000_000``. """ - return _registry.get_path("TBL-tof-lookup-table-no-choppers.h5") + return _registry.get_path("TBL-tof-lookup-table-no-choppers-5m-35m.h5") def tbl_orca_focussing_data() -> pathlib.Path: From 4fddf8d0c45ac47329167b2f693fa301d97b3c2c Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Thu, 12 Feb 2026 14:17:06 +0100 Subject: [PATCH 5/5] bump essreduce version --- packages/essimaging/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/essimaging/pyproject.toml b/packages/essimaging/pyproject.toml index f140ad48..9fbed8e9 100644 --- a/packages/essimaging/pyproject.toml +++ b/packages/essimaging/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "scippneutron>=24.12.0", "scippnexus>=23.11.1", "tifffile>=2024.7.2", - "essreduce>=26.2.0", + "essreduce>=26.2.1", "scitiff>=25.7", ]