From 9249b510dbd20cb24e949703624126bb41e557bd Mon Sep 17 00:00:00 2001 From: fspreck <f.spreckelsen@indiscale.com> Date: Tue, 6 Jun 2023 16:10:21 +0200 Subject: [PATCH] WIP: Begin dataset converter class --- src/caoscrawler/hdf5_converter.py | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/caoscrawler/hdf5_converter.py b/src/caoscrawler/hdf5_converter.py index 58243010..4a548dd3 100644 --- a/src/caoscrawler/hdf5_converter.py +++ b/src/caoscrawler/hdf5_converter.py @@ -87,3 +87,52 @@ class H5FileConverter(SimpleFileConverter): children.extend(__convert_attributes(ff)) return children + + +class H5GroupConverter(DictElementConverter): + + def typecheck(self, element: StructureElement): + + return isinstance(element, H5GroupElement) + + def create_children(self, generalStore: GeneralStore, element: StructureElement): + + if not isinstance(element.value, h5py.Group): + + raise ValueError("create_children should have been called with a HDF5 Group object.") + + children = [] + + for name, value in element.value.items(): + + children.append(__convert_h5_elements(value, name)) + + children.append(self._create_children_from_dict(element.value.attrs)) + + return children + + +class H5DatasetConverter(DictElementConverter): + + def typecheck(self, element: StructureElement): + + return isinstance(element, H5DatasetElement) + + def create_children(self, generalStore: GeneralStore, element: StructureElement): + + if not isinstance(element.value, h5py.Dataset): + + raise ValueError("create_children should have been called with a HDF5 Dataset object") + + return self._create_children_from_dict(element.value.attrs) + + def create_records(self, values: GeneralStore, records: RecordStore, element: StructureElement): + + keys_modified = [] + + # TODO: Create the Dataset Record that holds the reference to the HDF5 + # file and its internal path to the dataset. + + keys_modified.append(super().create_records(values, records, element)) + + return keys_modified -- GitLab