Skip to content

Commit a91de7e

Browse files
committed
do not load NXdata or NXlog when loading empty detector, instead read the shape and make an EmptyField
1 parent b1b5051 commit a91de7e

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

src/ess/reduce/nexus/workflow.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,19 @@ def _drop(
509509
}
510510

511511

512+
class _EmptyField:
513+
"""Empty field that can replace a missing detector_number in NXdetector."""
514+
515+
def __init__(self, sizes: dict[str, int]):
516+
self.attrs = {}
517+
self.sizes = sizes.copy()
518+
self.dims = tuple(sizes.keys())
519+
self.shape = tuple(sizes.values())
520+
521+
def __getitem__(self, key: Any) -> sc.Variable:
522+
return sc.empty(dims=self.dims, shape=self.shape, unit=None)
523+
524+
512525
class _StrippedDetector(snx.NXdetector):
513526
"""Detector definition without large geometry or event data for ScippNexus.
514527
@@ -518,11 +531,22 @@ class _StrippedDetector(snx.NXdetector):
518531
def __init__(
519532
self, attrs: dict[str, Any], children: dict[str, snx.Field | snx.Group]
520533
):
521-
children = _drop(children, (snx.NXoff_geometry, snx.NXevent_data))
522-
# Histogram mode detectors may not have a detector_number, as it is not needed
523-
# for grouping data by detector id.
534+
# We get the 'data' sizes before the NXdata is dropped
535+
field_sizes = None
536+
if ('detector_number' not in children) and ('data' in children):
537+
if 'value' in children['data']:
538+
field_sizes = children['data']['value'].sizes.copy()
539+
540+
children = _drop(
541+
children, (snx.NXoff_geometry, snx.NXevent_data, snx.NXdata, snx.NXlog)
542+
)
543+
524544
if 'detector_number' in children:
525545
children['data'] = children['detector_number']
546+
elif field_sizes is not None:
547+
field_sizes.pop('time', None)
548+
children['data'] = _EmptyField(sizes=field_sizes)
549+
526550
super().__init__(attrs=attrs, children=children)
527551

528552

0 commit comments

Comments
 (0)