From 27d4959c1064871e5a58ddbf5542ade43f235e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <henrik@trineo.org> Date: Wed, 21 Jul 2021 07:29:04 +0200 Subject: [PATCH] MAINT: allow default root_name --- integrationtests/example_hdf5cfood.py | 4 +++- integrationtests/insert_model.py | 4 ++-- src/caosadvancedtools/cfoods/h5.py | 18 ++++++++++-------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/integrationtests/example_hdf5cfood.py b/integrationtests/example_hdf5cfood.py index f369f852..5485402d 100644 --- a/integrationtests/example_hdf5cfood.py +++ b/integrationtests/example_hdf5cfood.py @@ -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(): diff --git a/integrationtests/insert_model.py b/integrationtests/insert_model.py index f57ea440..ae3dd770 100755 --- a/integrationtests/insert_model.py +++ b/integrationtests/insert_model.py @@ -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) diff --git a/src/caosadvancedtools/cfoods/h5.py b/src/caosadvancedtools/cfoods/h5.py index 0e56da71..543ac327 100644 --- a/src/caosadvancedtools/cfoods/h5.py +++ b/src/caosadvancedtools/cfoods/h5.py @@ -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. @@ -206,7 +204,11 @@ class H5CFood(AbstractFileCFood): Parameters ---------- h5obj : h5py.File - a hdf5-file object + 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 ------- @@ -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] -- GitLab