From 5e9350bfb3b42ddcff8bbb1d626d082ff508ae05 Mon Sep 17 00:00:00 2001 From: swittl <simon.wittl@th-deg.de> Date: Mon, 24 Mar 2025 10:12:55 +0100 Subject: [PATCH] added slice utility --- pyproject.toml | 2 +- src/h5schemas/load_utilities/__init__.py | 0 src/h5schemas/load_utilities/vectors.py | 37 +++++++++++++++++++ .../projection/overwrite_projection.py | 2 +- 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/h5schemas/load_utilities/__init__.py create mode 100644 src/h5schemas/load_utilities/vectors.py diff --git a/pyproject.toml b/pyproject.toml index 17de555..67a3a5c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "h5schemas" -version = "0.1.17" +version = "0.1.18" description = "Add your description here" readme = "README.md" authors = [ diff --git a/src/h5schemas/load_utilities/__init__.py b/src/h5schemas/load_utilities/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/h5schemas/load_utilities/vectors.py b/src/h5schemas/load_utilities/vectors.py new file mode 100644 index 0000000..637c809 --- /dev/null +++ b/src/h5schemas/load_utilities/vectors.py @@ -0,0 +1,37 @@ +import numpy as np +from h5py import Group +from dataclasses import dataclass +from typing import ClassVar, Literal + + + +@dataclass +class CommonVectors: + UV: ClassVar[list[str]] = ['u', 'v'] + XYZ: ClassVar[list[str]] = ['x', 'y', 'z'] + QUAT: ClassVar[list[str]] = ['x', 'y', 'z', 'w'] + + +UVElement = Literal['u', 'v'] +XYZElement = Literal['x', 'y', 'z'] +QUATElement = Literal['x', 'y', 'z', 'w'] +VectorElement = Literal[UVElement, XYZElement, QUATElement] + + +def extract_vector(h5_group: Group, indices: slice, dataset_list: list[VectorElement]): + extracted_data = np.stack( + [h5_group[element][indices] for element in dataset_list], + axis=-1 + ) + return extracted_data + + + +if __name__ == '__main__': + from h5py import File + + + test_file = File("./examples/projection_geometry.h5", "r") + + detector_center_position_mm = extract_vector(test_file['detector_center_position_mm'], slice(2), CommonVectors.XYZ) + print(detector_center_position_mm) \ No newline at end of file diff --git a/src/h5schemas/projection/overwrite_projection.py b/src/h5schemas/projection/overwrite_projection.py index ab34498..2b04353 100644 --- a/src/h5schemas/projection/overwrite_projection.py +++ b/src/h5schemas/projection/overwrite_projection.py @@ -8,7 +8,6 @@ from h5schemas.projection_geometry.overwrite_projection_geometry import overwrit from h5schemas.source.overwrite_source import overwrite_source_at_index - def overwrite_projection_at_index( h5_file: File, index: int, @@ -25,6 +24,7 @@ def overwrite_projection_at_index( uuid, timestamp = check_uuid_time_stamp(uuid, timestamp) overwrite_image_at_index(h5_file["/image"], index, image, uuid, timestamp) + overwrite_projection_geometry_at_index( h5_file["/projection_geometry"], index, -- GitLab