From 3a973431553db2b50f43fbaeb054176969b37866 Mon Sep 17 00:00:00 2001 From: Simon Heybrock Date: Mon, 4 Nov 2024 09:00:13 +0100 Subject: [PATCH 1/2] Use group axes for multi-dim NXdetector with event data --- src/scippnexus/nxdata.py | 6 ++++++ tests/nxdetector_test.py | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/scippnexus/nxdata.py b/src/scippnexus/nxdata.py index 3aac9948..ee2f8c66 100644 --- a/src/scippnexus/nxdata.py +++ b/src/scippnexus/nxdata.py @@ -211,6 +211,12 @@ def _init_group_dims( if self._signal is None: self._valid = False elif isinstance(self._signal, EventField): + # EventField uses dims of detector_number *the grouping) plus dims of event + # data. The former may be defined by the group dims. + if group_dims is not None: + self._signal._grouping.sizes = dict( + zip(group_dims, self._signal.shape, strict=False) + ) group_dims = self._signal.dims else: if group_dims is not None: diff --git a/tests/nxdetector_test.py b/tests/nxdetector_test.py index cd4e64d8..8a35b85b 100644 --- a/tests/nxdetector_test.py +++ b/tests/nxdetector_test.py @@ -271,6 +271,20 @@ def test_loads_event_data_with_2d_detector_numbers(nxroot): ) +def test_loads_event_data_with_2d_detector_numbers_and_explicit_axes(h5root): + detector = snx.create_class(h5root, 'detector0', NXdetector) + detector = make_group(detector) + detector.create_field('detector_number', detector_numbers_xx_yy_1234()) + h5root['detector0'].attrs['axes'] = ['y', 'x'] + create_event_data_ids_1234(detector.create_class('events', snx.NXevent_data)) + assert detector.sizes == {'y': 2, 'x': 2, 'event_time_zero': 4} + da = detector[...]['events'] + assert sc.identical( + da.bins.size().data, + sc.array(dims=['y', 'x'], unit=None, dtype='int64', values=[[2, 3], [0, 1]]), + ) + + def test_selecting_pixels_works_with_event_signal(nxroot): detector = nxroot.create_class('detector0', NXdetector) detector.create_field('detector_number', detector_numbers_xx_yy_1234()) From b4e31ce3ab6425a28102e8d0d61406685789cc93 Mon Sep 17 00:00:00 2001 From: Simon Heybrock <12912489+SimonHeybrock@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:34:21 +0100 Subject: [PATCH 2/2] Update src/scippnexus/nxdata.py Co-authored-by: Mridul Seth --- src/scippnexus/nxdata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scippnexus/nxdata.py b/src/scippnexus/nxdata.py index ee2f8c66..37352483 100644 --- a/src/scippnexus/nxdata.py +++ b/src/scippnexus/nxdata.py @@ -211,7 +211,7 @@ def _init_group_dims( if self._signal is None: self._valid = False elif isinstance(self._signal, EventField): - # EventField uses dims of detector_number *the grouping) plus dims of event + # EventField uses dims of detector_number (the grouping) plus dims of event # data. The former may be defined by the group dims. if group_dims is not None: self._signal._grouping.sizes = dict(