From f1aaf509321c34dbc6ea8af86fcf0153b07e2f0e Mon Sep 17 00:00:00 2001 From: swittl <simon.wittl@th-deg.de> Date: Mon, 24 Mar 2025 10:27:04 +0100 Subject: [PATCH] added extract projection geometry --- pyproject.toml | 2 +- .../load_utilities/projection_geometry.py | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/h5schemas/load_utilities/projection_geometry.py diff --git a/pyproject.toml b/pyproject.toml index 67a3a5c..8e80d5a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "h5schemas" -version = "0.1.18" +version = "0.1.19" description = "Add your description here" readme = "README.md" authors = [ diff --git a/src/h5schemas/load_utilities/projection_geometry.py b/src/h5schemas/load_utilities/projection_geometry.py new file mode 100644 index 0000000..f459807 --- /dev/null +++ b/src/h5schemas/load_utilities/projection_geometry.py @@ -0,0 +1,37 @@ +from h5schemas.load_utilities.vectors import CommonVectors, extract_vector +from h5py import Group +import numpy as np +from typing import NamedTuple + + +class ProjectionGeometry(NamedTuple): + detector_center_position_mm: np.ndarray + detector_center_orientation_quat: np.ndarray + focal_spot_position_mm: np.ndarray + focal_spot_orientation_quat: np.ndarray + + uuid: np.ndarray + timestamp: np.ndarray + + + +def extract_projection_geometry(h5_group: Group, indices: slice) -> ProjectionGeometry: + detector_center_position_mm = extract_vector(h5_group['detector_center_position_mm'], indices, CommonVectors.XYZ) + detector_center_orientation_quat = extract_vector(h5_group['detector_center_orientation_quat'], indices, CommonVectors.QUAT) + focal_spot_position_mm = extract_vector(h5_group['focal_spot_position_mm'], indices, CommonVectors.XYZ) + focal_spot_orientation_quat = extract_vector(h5_group['focal_spot_orientation_quat'], indices, CommonVectors.QUAT) + + uuid = h5_group['header']['uuid'][indices] + timestamp = h5_group['header']['timestamp'][indices] + + return ProjectionGeometry(detector_center_position_mm, detector_center_orientation_quat, focal_spot_position_mm, focal_spot_orientation_quat, uuid, timestamp) + + +if __name__ == '__main__': + from h5py import File + + + test_file = File("./examples/projection_geometry.h5", "r") + + proj_geom = extract_projection_geometry(test_file, slice(2)) + print(proj_geom) \ No newline at end of file -- GitLab