Repository navigation
feat(h5): import multidimensional data, legacy NeXus scans and compressed data - #23
Merged
Merged
Conversation
…ssed data Datasets and NeXus signals of three dimensions or more are imported through a view, one signal or image per frame: the HDF5 browser shows a view selector (displayed axes, frame range along another axis, fixed indices), previews the first frame, and imports the frames once enabled. The default view follows the NeXus interpretation of the signal. Legacy NeXus axes are read from the axis and primary attributes of axis datasets, and the other signals of a group (auxiliary_signals attribute, or legacy signal attributes as all the counters and detectors of a scan) are shown as nodes of their own, with the axes that fit their dimensions. The browser selects the default NXdata group of a file, the origin of imported objects records the title and times of the entry, and mapping axes may describe the first dimensions only. Compressed detector data is read with hdf5plugin, now a dependency, and data compressed with an unavailable filter is reported instead of failing. Assisted-by: Claude Opus 5.5
User guide, release notes and French translations of the view selector. Assisted-by: Claude Opus 5.5
The default view of a multidimensional signal follows its interpretation attribute, written on the signal dataset or, by some writers, on its group. Assisted-by: Claude Opus 5.5
The filters of generic dataset nodes are queried once and cached, instead of at each support check and text preview while the browser tree is built. Assisted-by: Claude Opus 5.5
With PyQt6, check states are enums that are not equal to integers: the browser returned unchecked items as checked nodes, and checking whether an item was checked raised a TypeError. Assisted-by: Claude Opus 5.5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Import of multidimensional data, legacy NeXus scans (SOLEIL) and compressed detector data in the HDF5 layer and browser.
Multidimensional data
sigimax.h5.views,NDView,default_view).interpretationattribute (spectrum,rgba-image), read on the signal dataset or on its group.experimental_sourcegive the frame indices (view) and positions (positions).expand_viewsreplaces a node by its frame nodes;H5TreeWidget.get_nodesapplies it, so DataLab's import loop is unchanged.NeXus conventions
@axes, theaxisattribute (dimension number, from 1) of axis datasets gives the axis of each dimension, preferring the lowestprimary. An axis applies only to the dimensions whose size fits.axis=0, used by SOLEIL for time stamps, is ignored.@auxiliary_signals, and the other datasets with a legacysignalattribute, as all the counters and detectors of a SOLEIL scan) are shown as nodes of their own (AuxiliarySignalNode), with the axes that fit their dimensions.NXdatagroup (@defaultchain,default_nxdata_path).NXentrygroup are recorded inexperimental_source(details.entry_title,timestamps).axesmay describe the first dimensions only, so that one pattern applies to the counters, spectra and images of a scan.Compressed data
hdf5pluginbecomes a dependency, imported bysigimax.h5, so that bitshuffle/LZ4, Blosc, Zstandard... are read.unavailable_filters) instead of failing, including when the tree is built.hdf5pluginhook of pyinstaller-hooks-contrib collects the filters, and a frozen program reads bitshuffle/LZ4 data.Validation
test_h5_views.py(views, legacy axes, auxiliary signals, frames, entry information,@default, filters, mapping axes),test_h5browser_views.py(view selector GUI). Full suite: 324 passed. Ruff clean, Pylint 10/10 with the project options.Documentation
User guide (
hdf5_workspace.rst), release notes 1.1.0, French translations of the view selector.Related