DMSC Integration Testing

Last updated: September 25, 2026 08:02:48

Test: nexusfiles-scipp|bifrost|bifrost_read_detector_geometry|all_detectors

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f399bb1bce0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00022378.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f399d4a5800>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:38: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f39995d2fc0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fb637749640>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00022248.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7fb638b31800>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:38: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7fb634cbdfd0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fc9b8294110>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00022118.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7fc9c5a518a0>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7fc9c3c3f1a0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7efee02176e0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00021978.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7efee60e9440>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7efee45216d0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f64a018b860>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00021834.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f64a571d300>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f6498260dd0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f0b9c9af5f0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00021704.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f0b9e3f9300>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f0b9caf0b00>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fa47393c230>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00021554.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7fa475725440>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7fa4734301a0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f5a98209f10>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00021414.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f5aa5d85440>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f5aa3f10890>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f40683d9190>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00021274.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f40776ad300>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f40759529f0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f077b22c950>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00021124.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f077bead300>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f077a525bb0>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f3712d990d0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00020984.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f3715069440>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f36f80fa750>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7faf14074e60>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00020704.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7faf229413a0>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7faf16f1c950>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f6b9c2efb30>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00020564.hdf')
check_detector_positions_events = <function _check_detector_positions_events at 0x7f6ba2fc5260>

    def test_bifrost_read_detector_geometry__all_detectors(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        check_detector_positions_events: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
>       detectors = sciline.compute_mapped(workflow, EmptyDetector[SampleRun])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/bifrost/bifrost_load_nexus_test.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:466: in compute_mapped
    results = pipeline.compute(key_series)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.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:119: in compute
    results = self._scheduler.get(self._graph, list(targets), reporter=reporter)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: 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)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

group = <scippnexus.base.Group object at 0x7f6b7d1a9f10>
nx_class = <class 'scippnexus.nexus_classes.NXmoderator'>, name = None

    def _unique_child_group(
        group: snx.Group, nx_class: type[snx.NXobject], name: str | None
    ) -> snx.Group:
        if name is not None:
            child = group[name]
            if isinstance(child, snx.Field):
                raise ValueError(
                    f"Expected a NeXus group as item '{name}' but got a field."
                )
            if child.nx_class != nx_class:
                raise ValueError(
                    f"The NeXus group '{name}' was expected to be a "
                    f'{nx_class} but is a {child.nx_class}.'
                )
            return child
    
        children = group[nx_class]
        if len(children) != 1:
>           raise ValueError(
                f"Expected exactly one {nx_class.__name__} group '{group.name}', "
                f"got {len(children)}"
            )
E           ValueError: Expected exactly one NXmoderator group '/entry/instrument', got 0
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[scippnexus.nexus_classes.NXsource],
E           ) -> ess.reduce.nexus.types.NeXusComponent[scippnexus.nexus_classes.NXsource, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report