Test passed, nothing to report
Test: nexusfiles-scipp|odin|odin_read_component_position|source_position
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f368c257ce0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00021901.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f368e739440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f368c2526c0>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f3c61620fb0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00021701.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f3c6376d300>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f3c61719130>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f6643bb3770>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00021561.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f6645c1d300>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f6643945250>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f05917c9d90>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00021511.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f0593c41440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f059174e750>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f4365163740>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00021411.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f43673a5440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f4364f00680>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f0812e427e0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00021271.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f0815a11440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f0812fb1370>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f31c47f75f0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00021131.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f31c6899440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f31c470a630>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f69fdcae270>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020911.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f69ffe19440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f69fdc4e3f0>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7efcdf140d40>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020911.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7efce14d9440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7efcdf1c1580>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f0f33466cc0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020561.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f0f3584b6a0>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f0f331a5910>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f83a1bf6c30>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020415.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f83a411b560>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f83a1e7b5c0>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f4fc31e2b10>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020275.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f4fc3d29580>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f4fc2e0f710>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fd1942b3080>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020202.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7fd197e29440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7fd1946c18b0>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fecda10aa80>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020202.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7fecddc6d440>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7fecda216210>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f70fa811ee0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020202.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f70fb61d580>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f70fa7086e0>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f9879d6b470>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020202.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f987ab2d4e0>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f9879bdfaa0>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
ValueError: Expected exactly one NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f7202054500>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_odin_999999_00020202.hdf')
component = 'source_position'
check_component_positions = <function _check_component_positions at 0x7f7202e214e0>
@pytest.mark.parametrize("component", ["sample_position", "source_position"])
def test_odin_read_component_position(
workflow: sciline.Pipeline,
coda_nexus_file_path: Path,
component: str,
check_component_positions: Callable,
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
mapping = {"sample_position": NXsample, "source_position": NXsource}
> result = workflow.compute(Position[mapping[component], SampleRun])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/odin/odin_load_nexus_test.py:105:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-odin/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-odin/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-odin/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 0x7f7201f33770>
nx_class = <class 'scippnexus.nexus_classes.NXsource'>, 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 NXsource group '/entry/instrument', got 2
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-odin/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:384: ValueError