From f4413cb0c835ed9d25b7be16e61958d3cd817bfd Mon Sep 17 00:00:00 2001 From: Jan-Lukas Wynen Date: Tue, 3 Mar 2026 16:22:18 +0100 Subject: [PATCH 1/3] Add measurement metadata to CIF --- src/ess/dream/io/cif.py | 7 +++++++ src/ess/powder/types.py | 3 +++ 2 files changed, 10 insertions(+) diff --git a/src/ess/dream/io/cif.py b/src/ess/dream/io/cif.py index 050735a6..2bc4ebd0 100644 --- a/src/ess/dream/io/cif.py +++ b/src/ess/dream/io/cif.py @@ -12,6 +12,7 @@ CIFAuthors, EmptyCanSubtractedIntensityTof, IntensityTof, + Measurement, ReducedEmptyCanSubtractedTofCIF, ReducedTofCIF, ReducerSoftware, @@ -26,6 +27,7 @@ def prepare_reduced_tof_cif( authors: CIFAuthors, beamline: Beamline[SampleRun], source: Source[SampleRun], + measurement: Measurement[SampleRun], reducers: ReducerSoftware, calibration: OutputCalibrationData, ) -> ReducedTofCIF: @@ -61,6 +63,7 @@ def prepare_reduced_tof_cif( authors=authors, beamline=beamline, source=source, + measurement=measurement, reducers=reducers, calibration=calibration, ) @@ -72,6 +75,7 @@ def prepare_reduced_empty_can_subtracted_tof_cif( authors: CIFAuthors, beamline: Beamline[SampleRun], source: Source[SampleRun], + measurement: Measurement[SampleRun], reducers: ReducerSoftware, calibration: OutputCalibrationData, ) -> ReducedEmptyCanSubtractedTofCIF: @@ -107,6 +111,7 @@ def prepare_reduced_empty_can_subtracted_tof_cif( authors=authors, beamline=beamline, source=source, + measurement=measurement, reducers=reducers, calibration=calibration, ) @@ -118,12 +123,14 @@ def _prepare_reduced_tof_cif_impl( authors: CIFAuthors, beamline: Beamline[SampleRun], source: Source[SampleRun], + measurement: Measurement[SampleRun], reducers: ReducerSoftware, calibration: OutputCalibrationData, ) -> ReducedTofCIF: to_save = _prepare_data(da) return ReducedTofCIF( cif.CIF('reduced_tof') + .with_measurement(measurement) .with_reducers(*(reducer.compact_repr for reducer in reducers)) .with_authors(*authors) .with_beamline(beamline, source) diff --git a/src/ess/powder/types.py b/src/ess/powder/types.py index 5d34ffdd..aeace7df 100644 --- a/src/ess/powder/types.py +++ b/src/ess/powder/types.py @@ -215,6 +215,9 @@ class RawDataAndMetadata(sciline.Scope[RunType, sc.DataGroup], sc.DataGroup): Beamline = reduce_t.Beamline """Beamline metadata.""" +Measurement = reduce_t.Measurement +"""Measurement metadata.""" + ReducerSoftware = NewType('ReducerSoftware', list[Software]) """Pieces of software used to reduce the data.""" From 6e289cc1d315b2d685e1b7674bb9b945f61a59e5 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Wynen Date: Wed, 4 Mar 2026 10:06:36 +0100 Subject: [PATCH 2/3] Set Measurement metadata in geant4 pipeline --- src/ess/dream/workflows.py | 5 +++++ tests/dream/io/cif_test.py | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ess/dream/workflows.py b/src/ess/dream/workflows.py index 9c8d9ce6..dc1596fd 100644 --- a/src/ess/dream/workflows.py +++ b/src/ess/dream/workflows.py @@ -19,6 +19,7 @@ EmptyCanRun, KeepEvents, LookupTableRelativeErrorThreshold, + Measurement, PixelMaskFilename, Position, ReducerSoftware, @@ -227,6 +228,10 @@ def DreamGeant4Workflow(*, run_norm: RunNormalization, **kwargs) -> sciline.Pipe "monitor_bunker": float("inf"), "monitor_cave": float("inf"), }, + # The GEANT4 files do not encode measurement information + Measurement[SampleRun]: Measurement[SampleRun](title=None), + Measurement[VanadiumRun]: Measurement[VanadiumRun](title=None), + Measurement[EmptyCanRun]: Measurement[EmptyCanRun](title=None), } for key, value in additional_parameters.items(): wf[key] = value diff --git a/tests/dream/io/cif_test.py b/tests/dream/io/cif_test.py index 2a58b923..69420668 100644 --- a/tests/dream/io/cif_test.py +++ b/tests/dream/io/cif_test.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2023 Scipp contributors (https://github.com/scipp) - +import datetime import io import pytest @@ -14,6 +14,7 @@ Beamline, CIFAuthors, IntensityTof, + Measurement, ReducerSoftware, Software, ) @@ -60,6 +61,10 @@ def test_save_reduced_tof(ioftof: IntensityTof, cal: OutputCalibrationData) -> N site="ESS", ), source=ESS_SOURCE, + measurement=Measurement( + title="Test measurement", + start_time=datetime.datetime(2026, 1, 2, 14, 58, 2, tzinfo=datetime.UTC), + ), reducers=ReducerSoftware( [ Software.from_package_metadata('ess.diffraction'), @@ -78,6 +83,8 @@ def test_save_reduced_tof(ioftof: IntensityTof, cal: OutputCalibrationData) -> N assert f"ess.dream {__version__}" in result assert f"ess.powder {__version__}" in result assert '_diffrn_source.beamline DREAM' in result + assert "_sc_meas.title 'Test measurement'" in result + assert "_pd_meas.datetime_initiated 2026-01-02T14:58:02" in result assert 'ZERO 0 0.2' in result assert 'DIFC 1 1.2' in result assert 'DIFA 2 -1.4' in result From db0ef2a0140b9dc2f90459e47f85c96ab885db30 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Wynen Date: Mon, 9 Mar 2026 17:54:44 +0100 Subject: [PATCH 3/3] Require scippneutron>=26.3.0 --- pyproject.toml | 2 +- requirements/base.in | 2 +- requirements/base.txt | 6 +++--- requirements/nightly.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4fe63c6a..70018b3f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ dependencies = [ "pythreejs>=2.4.1", "sciline>=25.04.1", "scipp>=25.11.0", - "scippneutron>=25.02.0", + "scippneutron>=26.3.0", "scippnexus>=23.12.0", "tof>=25.12.0", "ncrystal[cif]>=4.1.0", diff --git a/requirements/base.in b/requirements/base.in index 84fc939a..4bb09572 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -10,7 +10,7 @@ plopp>=26.2.0 pythreejs>=2.4.1 sciline>=25.04.1 scipp>=25.11.0 -scippneutron>=25.02.0 +scippneutron>=26.3.0 scippnexus>=23.12.0 tof>=25.12.0 ncrystal[cif]>=4.1.0 diff --git a/requirements/base.txt b/requirements/base.txt index 21873ecb..2c895c98 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:13277aa03c7beef37838e768fb3e12ce43df7827 +# SHA1:81c10bea2bf8b09c721c1bb7b501d35596a04095 # # This file was generated by pip-compile-multi. # To update, run: @@ -39,7 +39,7 @@ essreduce==26.3.1 # via -r base.in executing==2.2.1 # via stack-data -fonttools==4.61.1 +fonttools==4.62.0 # via matplotlib fsspec==2026.2.0 # via dask @@ -171,7 +171,7 @@ scipp==26.3.0 # scippneutron # scippnexus # tof -scippneutron==26.2.0 +scippneutron==26.3.0 # via # -r base.in # essreduce diff --git a/requirements/nightly.txt b/requirements/nightly.txt index da032417..c8cc0026 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -42,7 +42,7 @@ essreduce @ git+https://github.com/scipp/essreduce@main # via -r nightly.in executing==2.2.1 # via stack-data -fonttools==4.61.1 +fonttools==4.62.0 # via matplotlib fsspec==2026.2.0 # via dask