DMSC Integration Testing

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

Test: nexusfiles-scipp|tbl|tbl_validate_exposure_time|orca

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00004627.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00004473.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00004329.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00004185.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00004050.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00003906.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00003771.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00003627.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00003492.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00003366.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00003222.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00003078.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00002943.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00002799.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00002551.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00002397.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00002268.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00002151.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00002034.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001917.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001800.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001683.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001566.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001440.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001323.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001206.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00001089.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000972.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000864.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000738.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000612.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000468.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000333.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000189.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00000045.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00027430.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00027295.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00027151.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00027007.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00026872.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00026728.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00026572.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00026300.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00026300.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00026156.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00026012.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00025876.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00025585.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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

View job log here


coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_tbl_999999_00025585.hdf')

def test_tbl_validate_exposure_time__orca(coda_nexus_file_path: FilePath) -> None:
"""Test that the exposure_time dataset in the ORCA detector is valid.

We need `exposure_time` of each image frame to normalize the histogram data.
It is not part of `GenericWorkflow` so we test it manually here.
Assuming `exposure_time` is not changed during a measurement,
it should be a single value dataset.
"""
# This is a temporary path until we know where it will be placed in the NeXus file.
exposure_time_path = "/entry/instrument/orca_detector/exposure_time"
# We are using `ess.reduce.nexus.open_nexus_file` here
# due to file locking issue.
# See https://github.com/scipp/essreduce/issues/287.
with open_nexus_file(coda_nexus_file_path) as f:
> exposure_time_data: sc.Variable = f[exposure_time_path][()]
^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/tbl/tbl_load_nexus_test.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:361: in __getitem__
return self.file[sel_path.relative_to('/').as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-tbl/lib/python3.12/site-packages/scippnexus/base.py:367: in __getitem__
return self[grp][sel_path.relative_to(grp).as_posix()]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = , sel = 'exposure_time'

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

Three cases are supported:

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

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

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

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