Skip to content
Snippets Groups Projects
Commit 27d4959c authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

MAINT: allow default root_name

parent bbbe0fd8
No related branches found
No related tags found
1 merge request!22Release 0.3
Pipeline #10661 passed
......@@ -34,7 +34,9 @@ from caosadvancedtools.scifolder.generic_pattern import readme_pattern
class ExampleH5CFood(H5CFood):
root_name = "ExampleH5"
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.root_name = "ExampleH5"
@staticmethod
def get_re():
......
......@@ -15,8 +15,8 @@ if len(db.execute_query("FIND Property alias")) == 0:
h5model = db.Container()
h5file = h5py.File('extroot/ExperimentalData/2010_TestProject/2019-02-03/hdf5_dummy_file.hdf5', 'r')
H5CFood.create_structure(h5file, create_recordTypes=True, collection=h5model)
h5model[0].name = "ExampleH5"
H5CFood.create_structure(h5file, create_recordTypes=True, collection=h5model,
root_name="ExampleH5")
print(h5model)
h5model = DataModel(h5model)
h5model.sync_data_model(noquestion=True)
......@@ -112,20 +112,17 @@ class H5CFood(AbstractFileCFood):
Attributes
----------
root_name : str, default "root"
Type of the root Record (the Record corresponding to the root node in
the HDF5 file)
h5file : h5py.File, default None
Name of the hdf5-file to read
"""
# to be overwritten by subclasses
root_name = "root"
def __init__(self, *args, **kwargs):
"""CFood which consumes HDF5 files."""
super().__init__(*args, **kwargs)
self.h5file = None
self.root_name = "root"
self.hdf5Container = db.Container()
self.em = EntityMapping()
......@@ -152,7 +149,8 @@ class H5CFood(AbstractFileCFood):
"""
# manually create the identifiable root element: self.identifiable_root
self.structure = self.create_structure(self.h5file,
special_treatment=self.special_treatment)
special_treatment=self.special_treatment,
root_name=self.root_name)
def update_identifiables(self):
"""Check if the identifiables need to be updated.
......@@ -198,7 +196,7 @@ class H5CFood(AbstractFileCFood):
@classmethod
def create_structure(cls, h5obj, create_recordTypes=False, collection=None,
special_treatment=None):
special_treatment=None, root_name="root"):
"""Create Records and Record types from a given hdf5-object for all
items in the tree. Attributes are added as properties, the
values only if the dimension < 2.
......@@ -208,6 +206,10 @@ class H5CFood(AbstractFileCFood):
h5obj : h5py.File
a hdf5-file object
root_name : name that is used instead of '/'
Type of the root Record (the Record corresponding to
the root node in the HDF5 file)
Returns
-------
rec : db.Container
......@@ -223,7 +225,7 @@ class H5CFood(AbstractFileCFood):
def special_treatment(x, y, z): return x, y, z
if h5obj.name == "/":
name_without_path = cls.root_name
name_without_path = root_name
else:
name_without_path = h5obj.name.split("/")[-1]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment