Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 3 additions & 15 deletions omf/fileio/geoh5.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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"]
]
}
)
Expand Down
11 changes: 6 additions & 5 deletions tests/convert_volume_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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]
Expand All @@ -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)
Expand Down
Loading