diff --git a/pyproject.toml b/pyproject.toml index 67a3a5c7777a88a741c3b7904db462bcb587d5ba..8e80d5a1cd354e0ad209349a93e470faa5da5d28 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 0000000000000000000000000000000000000000..f4598071b51e743970b5c10bbee279441c5e6c8a --- /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