diff --git a/omf/fileio/geoh5.py b/omf/fileio/geoh5.py index cedd2bb..82d49fb 100644 --- a/omf/fileio/geoh5.py +++ b/omf/fileio/geoh5.py @@ -1167,20 +1167,17 @@ def collect_omf_attributes(cls, element: VolumeElement, **kwargs) -> dict: f"{VolumeGridGeometry} with 3D rotation axes." ) - offsets = [] for key, alias in cls._attribute_map.items(): tensor = getattr(element.geometry, f"tensor_{key}") - axis = getattr(element.geometry, f"axis_{key}") - offsets.append(axis * tensor[0] / 2.0) cell_delimiter = np.r_[0, np.cumsum(tensor)] kwargs.update({f"{alias}_cell_delimiters": cell_delimiter}) - offsets = np.c_[offsets].sum(axis=1) + kwargs["z_cell_delimiters"] *= element.geometry.axis_w[-1] rotation = np.rad2deg( np.arctan2(element.geometry.axis_u[1], element.geometry.axis_u[0]) ) kwargs.update({"rotation": rotation}) - kwargs.update({"origin": np.r_[element.geometry.origin] - offsets}) + kwargs.update({"origin": np.r_[element.geometry.origin]}) return kwargs @@ -1203,20 +1200,11 @@ def collect_h5_attributes( geometry["axis_v"] = rot.dot(np.c_[0.0, axis[1], 0.0].T).flatten() geometry["axis_w"] = np.r_[0, 0, axis[2]] - offsets = [] - for key in cls._attribute_map: - offsets.append( - geometry[f"axis_{key}"] * geometry[f"tensor_{key}"][0] / 2.0 - ) - - offsets = np.c_[offsets].sum(axis=1) if hasattr(entity, "origin"): geometry.update( { "origin": np.r_[ - entity.origin["x"] + offsets[0], - entity.origin["y"] + offsets[1], - entity.origin["z"] + offsets[2], + entity.origin["x"], entity.origin["y"], entity.origin["z"] ] } ) diff --git a/tests/convert_volume_test.py b/tests/convert_volume_test.py index 840b433..3a58b38 100644 --- a/tests/convert_volume_test.py +++ b/tests/convert_volume_test.py @@ -20,7 +20,8 @@ import omf from omf import Project -from omf.fileio.geoh5 import block_model_reordering +from omf.fileio import OMFWriter +from omf.fileio.geoh5 import GeoH5Reader, block_model_reordering def test_volume_to_geoh5(tmp_path: Path): @@ -115,6 +116,9 @@ def test_volume_to_geoh5(tmp_path: Path): omf.fileio.utils.compare_elements(omf_vol, vol) + reader = GeoH5Reader(file) + OMFWriter(reader(), str(tmp_path / f"{__name__}.omf")) + def test_volume_flip_origin_z(tmp_path): dims = [10, 15, 20] @@ -136,10 +140,7 @@ def test_volume_flip_origin_z(tmp_path): block_model = workspace.get_entity("vol")[0] assert block_model.z_cell_delimiters[-1] < 0 - assert ( - block_model.origin["z"] - == vol.geometry.origin[2] + vol.geometry.tensor_w[0] / 2 - ) + assert block_model.origin["z"] == vol.geometry.origin[2] with Workspace(file) as workspace: rotation = np.random.normal(-180, 180, 1)