DMSC Integration Testing

Last updated: May 27, 2026 07:22:11

Test: nexusfiles-scipp|bifrost|can_compute_wavelength|monitor_frame_3

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00004620.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:270: in load_nexus_data
nexus.load_data(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:555: in load_data
component = instrument[component_name]
^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00004475.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1678, ]
Coordinates:
* event_time_zero datetime64 ...event: 15871356),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1678).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00004331.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2355, ]
Coordinates:
* event_time_zero datetime64 ...event: 22300000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2355).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00004187.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2356, ]
Coordinates:
* event_time_zero datetime64 ...event: 22300000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2356).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00004043.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1482, ]
Coordinates:
* event_time_zero datetime64 ...event: 13959354),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1482).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00003908.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:233: in load_nexus_component
nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
yield _unique_child_group(parent, nx_class, group_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
child = group[name]
^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00003764.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:270: in load_nexus_data
nexus.load_data(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:555: in load_data
component = instrument[component_name]
^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00003629.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:270: in load_nexus_data
nexus.load_data(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:555: in load_data
component = instrument[component_name]
^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00003494.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:233: in load_nexus_component
nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
yield _unique_child_group(parent, nx_class, group_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
child = group[name]
^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00003359.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:233: in load_nexus_component
nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
yield _unique_child_group(parent, nx_class, group_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
child = group[name]
^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00003224.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:233: in load_nexus_component
nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
yield _unique_child_group(parent, nx_class, group_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
child = group[name]
^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00003080.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:233: in load_nexus_component
nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
yield _unique_child_group(parent, nx_class, group_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
child = group[name]
^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00002945.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:270: in load_nexus_data
nexus.load_data(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:555: in load_data
component = instrument[component_name]
^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00002801.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:270: in load_nexus_data
nexus.load_data(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:555: in load_data
component = instrument[component_name]
^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00002553.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:233: in load_nexus_component
nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
yield _unique_child_group(parent, nx_class, group_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
child = group[name]
^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = '110_frame_3'

def __getitem__(self, sel):
"""
Get a child group or child dataset, a selection of child groups, or load and
return the current group.

Three cases are supported:

- String name: The child group or child dataset of that name is returned.
- Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
classes. ``Field`` selects all child fields, i.e., all datasets but not
groups.
- Scipp-style index: Load the specified slice of the current group, returning
a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.

Parameters
----------
sel:
Child name, class, or index.

Returns
-------
:
Field, group, dict of fields, or loaded data.
"""
if isinstance(sel, str):
# We cannot get the child directly from the HDF5 group, since we need to
# create the parent group, to ensure that fields get the correct properties
# such as sizes and dtype.
if '/' in sel:
sel_path = PurePosixPath(sel)
if sel_path.is_absolute():
return self.file[sel_path.relative_to('/').as_posix()]
# If the path is a single name, we can directly access the child
elif len(sel_path.parts) == 1:
return self[sel_path.as_posix()]
else:
grp = sel_path.parts[0]
return self[grp][sel_path.relative_to(grp).as_posix()]
elif sel == '..':
return self.parent
> child = self._children[sel]
^^^^^^^^^^^^^^^^^^^
E KeyError: '110_frame_3'

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00002387.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2622, ]
Coordinates:
* event_time_zero datetime64 ...event: 24707508),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2622).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00002270.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1421, ]
Coordinates:
* event_time_zero datetime64 ...event: 13380000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1421).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00002153.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2078, ]
Coordinates:
* event_time_zero datetime64 ...event: 19487970),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2078).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00002036.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:949, ]
Coordinates:
* event_time_zero datetime64 ...(event: 8920000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 949).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001919.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1213, ]
Coordinates:
* event_time_zero datetime64 ...event: 11434548),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1213).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001802.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1039, ]
Coordinates:
* event_time_zero datetime64 ...(event: 9804864),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1039).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001676.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1592, ]
Coordinates:
* event_time_zero datetime64 ...event: 14971774),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1592).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001568.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2334, ]
Coordinates:
* event_time_zero datetime64 ...event: 22108220),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2334).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001442.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1958, ]
Coordinates:
* event_time_zero datetime64 ...event: 18508554),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1958).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001325.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1890, ]
Coordinates:
* event_time_zero datetime64 ...event: 17840000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1890).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001208.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2360, ]
Coordinates:
* event_time_zero datetime64 ...event: 22300000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2360).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00001091.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:1617, ]
Coordinates:
* event_time_zero datetime64 ...event: 15274162),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 1617).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000974.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2362, ]
Coordinates:
* event_time_zero datetime64 ...event: 22300000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2362).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000857.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2364, ]
Coordinates:
* event_time_zero datetime64 ...event: 22300000),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2364).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000740.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:64: in get
results[t] = reporter.call_provider_with_reporting(graph[t], results)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/reporter.py:398: in call_provider_with_reporting
return provider.call(values)
^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:144: in call
return self._func(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/spectroscopy/indirect/time_of_flight.py:88: in monitor_wavelength_data
monitor_data=monitor_data.rename(t='tof'),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:145: in _rename_data_array
out = da.rename_dims(renaming_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
Dimensions: Sizes[event_time_zero:2432, ]
Coordinates:
* event_time_zero datetime64 ...event: 23017168),
data=float32[counts],
coords={'event_time_offset':int32[ns], 'event_id':int32})


dims_dict = {'t': 'tof'}, names = {}

def _rename_dims(
self: _T, dims_dict: IntoStrDict[str] | None = None, /, **names: str
) -> _T:
"""Rename dimensions.

The renaming can be defined:

- using a dict mapping the old to new names, e.g.
``rename_dims({'x': 'a', 'y': 'b'})``
- using keyword arguments, e.g. ``rename_dims(x='a', y='b')``

In both cases, x is renamed to a and y to b.

Dimensions not specified in either input are unchanged.

This function only renames dimensions.
See the ``rename`` method to also rename coordinates and attributes.

Parameters
----------
dims_dict:
Dictionary or items iterator mapping old to new names.
names:
Mapping of old to new names as keyword arguments.

Returns
-------
:
A new object with renamed dimensions.

Examples
--------

>>> import scipp as sc
>>> var = sc.array(dims=['x', 'y'], values=[[1, 2], [3, 4]])
>>> var.rename_dims({'x': 'row', 'y': 'col'}).sizes
{'row': 2, 'col': 2}

Using keyword arguments:

>>> var.rename_dims(x='a', y='b').dims
('a', 'b')

Only specified dimensions are renamed:

>>> var.rename_dims(x='i').dims
('i', 'y')
"""
> return self._rename_dims(combine_dict_args(dims_dict, names))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E scipp._scipp.core.DimensionError: Cannot rename dimension t since it is not contained in the input dimensions (event_time_zero: 2432).

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scipp/core/dimensions.py:63: DimensionError

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000614.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000470.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000326.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000191.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00000047.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00027432.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00027297.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00027153.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00027009.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00026865.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00026730.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00026573.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00026301.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00026301.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00026157.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00026013.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00025877.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00025586.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement

View job log here


workflow =
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00025586.hdf')
monitor_type = ess.reduce.nexus.types.FrameMonitor3

@pytest.mark.parametrize(
"monitor_type",
[FrameMonitor1, FrameMonitor2, FrameMonitor3],
ids=["frame_1", "frame_2", "frame_3"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:48:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
keys = ess.reduce.unwrap.types.WavelengthMonitor[ess.reduce.nexus.types.SampleRun, ess.reduce.nexus.types.FrameMonitor3]

def get(
self,
keys: type | Iterable[type] | "UnionType" | str, # noqa: UP037 (needed by Sphinx)
*,
scheduler: Scheduler | None = None,
handler: ErrorHandler | None = None,
max_depth: int = 4,
) -> TaskGraph:
"""
Return a TaskGraph for the given keys.

Parameters
----------
keys:
Type to compute the result for.
Can be a single type or an iterable of types.
scheduler:
Optional scheduler to use for computing the result. If not given, a
:py:class:`NaiveScheduler` is used if `dask` is not installed,
otherwise dask's threaded scheduler is used.
handler:
Handler for unsatisfied requirements. If not provided,
:py:class:`HandleAsBuildTimeException` is used, which raises an exception.
During development and debugging it can be helpful to use a handler that
raises an exception only when the graph is computed. This can be achieved
by passing :py:class:`HandleAsComputeTimeException` as the handler.
max_depth:
Maximum depth to show in the dependency tree when reporting errors.
"""
if multi := _is_multiple_keys(keys):
targets = tuple(keys) # type: ignore[arg-type]
else:
targets = (keys,)
try:
graph = to_task_graph(self, targets=targets, handler=handler) # type: ignore[arg-type]
except UnsatisfiedRequirement as e:
missing = e.args[1]
nx_graph = self.underlying_graph
if missing in nx_graph:
paths = _find_paths_to_targets(nx_graph, missing, targets)
info = _format_paths_msg(nx_graph, paths)
else:
nodes = ", ".join(map(key_name, nx_graph.nodes))
info = f'{e} Requested node not in graph. Did you mean one of: {nodes}?'
# Not raising `from e` because that includes noisy traceback of internals,
# which are not relevant to the user.
> raise type(e)(f'{info}\n\n') from None
E sciline.handler.UnsatisfiedRequirement: Missing input node 'LookupTableRelativeErrorThreshold'. Affects requested targets (via providers given in parentheses):
E 1. LookupTableRelativeErrorThreshold → (ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut_monitor) → ErrorLimitedLookupTable[FrameMonitor3] → (ess.spectroscopy.indirect.time_of_flight.monitor_wavelength_data) → WavelengthMonitor[SampleRun, FrameMonitor3]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:281: UnsatisfiedRequirement