diff --git a/examples/header.h5 b/examples/header.h5 index 82daee09f5d9bab4d4ef6cf1c24d6067e7457f8a..ccb68dce024d304dd03651a1779a648511df20db 100644 Binary files a/examples/header.h5 and b/examples/header.h5 differ diff --git a/pyproject.toml b/pyproject.toml index c4ca58adbcd04e957a22435b9222e812ef00f9f7..38f999c52026044fcdcba4204a10e98f550477f9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "h5schemas" -version = "0.1.20" +version = "0.1.21" description = "Add your description here" readme = "README.md" authors = [ diff --git a/src/h5schemas/h5_types/base_dataset.py b/src/h5schemas/h5_types/base_dataset.py index 4ab919b5cb8237397d081a77ff9779e65593c6e3..df8b869c0539511a392a48d7af79b16130276adc 100644 --- a/src/h5schemas/h5_types/base_dataset.py +++ b/src/h5schemas/h5_types/base_dataset.py @@ -9,12 +9,24 @@ class BaseDataset: maximum: int | float | None = None dtype: str | np.float64 | np.float32 | np.uint16 | None = None + _group: str | None = None + def __init__(self, definition: GroupDefinition): self.path = definition.path self.dataset_name = definition.path.rsplit("/")[-1] self.group = definition.path[1 : -len(self.dataset_name)] self.description = definition.description + @property + def group(self) -> str | None: + return self._group + + @group.setter + def group(self, group_value: str | None): + if len(group_value) == 0: + group_value = '/' + self._group = group_value + @classmethod def with_file(cls, definition: GroupDefinition, h5_file: h5py.File): instance = cls(definition) diff --git a/src/h5schemas/h5_types/image.py b/src/h5schemas/h5_types/image.py index ccdb79b33d91604ede8d77f14ef52d0166a75b91..8a844fc34bb5a0108562f47bc1f57441a73c743c 100644 --- a/src/h5schemas/h5_types/image.py +++ b/src/h5schemas/h5_types/image.py @@ -11,8 +11,6 @@ class ImageDataset(BaseDataset): super().__init__(definition) def add_to_file(self, h5_file: h5py.File): - if len(self.group) == 0: - self.group = '/' group = h5_file.require_group(self.group) self.dataset = group.create_dataset( name=self.dataset_name, diff --git a/src/h5schemas/header/add_header.py b/src/h5schemas/header/add_header.py index 892043a47283c9f90820f832e1ecc30357785bb0..4c1605d3b372b7bc39ff9bd3d9cd73ca77833006 100644 --- a/src/h5schemas/header/add_header.py +++ b/src/h5schemas/header/add_header.py @@ -3,6 +3,7 @@ from thd_json import header from h5schemas.scan_schema import open_schema from h5schemas.initialize_dataset import initialize_dataset from datetime import datetime +import numpy as np def init_header( @@ -28,17 +29,22 @@ def check_uuid_time_stamp(uuid: str | None = None, timestamp: int | None = None) def add_header_sample( - h5_file: File | Group, uuid: str | None, timestamp: float | None = None + h5_file: File | Group, uuid: str | np.ndarray | None, timestamp: float | np.ndarray | None = None ): uuid, timestamp = check_uuid_time_stamp(uuid, timestamp) + if isinstance(uuid, np.ndarray): + uuid_shape = uuid.shape[0] + else: + uuid_shape = 1 + dst = h5_file["uuid"] - dst.resize((dst.shape[0] + 1,)) - dst[-1,] = uuid + dst.resize((dst.shape[0] + uuid_shape,)) + dst[-uuid_shape,] = uuid dst = h5_file["timestamp"] - dst.resize((dst.shape[0] + 1,)) - dst[-1,] = timestamp + dst.resize((dst.shape[0] + uuid_shape,)) + dst[-uuid_shape,] = timestamp def uuid_time_from_json_header(json_header_obj: header.JsonHeader) -> tuple[str, float]: @@ -49,7 +55,7 @@ def uuid_time_from_json_header(json_header_obj: header.JsonHeader) -> tuple[str, if __name__ == "__main__": from h5schemas.header.overwrite_header import overwrite_header_at_index - test_file = File("./examples/header.h5", "a") + test_file = File("./examples/header.h5", "w") init_header(test_file) add_header_sample(test_file, None)