Skip to content

Commit 0d7641c

Browse files
committed
feat(transform-io): dispatch read and write functions
1 parent 395beb7 commit 0d7641c

File tree

17 files changed

+379
-36
lines changed

17 files changed

+379
-36
lines changed

packages/image-io/pixi.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ pyodide-py = ">=0.26.3, <0.27"
8585
pytest-pyodide = ">=0.58.3, <0.59"
8686
itk-webassemblyinterface = ">=1.0b175, <2"
8787
itkwasm = ">=1.0b179, <2"
88+
itkwasm-image-io-wasi = { path = "python/itkwasm-image-io-wasi", editable = true }
8889

8990
[feature.python.tasks.test-wasi]
9091
cmd = "pytest"

packages/mesh-io/pixi.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ pyodide-py = ">=0.26.3, <0.27"
8585
pytest-pyodide = ">=0.58.3, <0.59"
8686
itk-webassemblyinterface = ">=1.0b175, <2"
8787
itkwasm = ">=1.0b179, <2"
88+
itkwasm-mesh-io-wasi = { path = "python/itkwasm-mesh-io-wasi", editable = true }
8889

8990
[feature.python.tasks.test-wasi]
9091
cmd = "pytest"

packages/transform-io/pixi.lock

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/transform-io/pixi.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ pyodide-py = ">=0.26.4, <0.27"
8585
pytest-pyodide = ">=0.58.3, <0.59"
8686
itk-webassemblyinterface = ">=1.0b175, <2"
8787
itkwasm = ">=1.0b185, <2"
88+
itkwasm-transform-io-wasi = { path = "python/itkwasm-transform-io-wasi", editable = true }
8889

8990
[feature.python.tasks.test-wasi]
9091
cmd = "pytest"

packages/transform-io/python/itkwasm-transform-io-wasi/tests/common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
test_input_path = Path(__file__).parent / ".." / ".." / ".." / "test" / "data" / "input"
77
test_baseline_path = Path(__file__).parent / ".." / ".." / ".." / "test" / "data" / "baseline"
8-
test_output_path = Path(__file__).parent / ".." / ".." / ".." / "test" / "data" / "output" / "python"
8+
test_output_path = Path(__file__).parent / ".." / ".." / ".." / "test" / "data" / "output" / "python-wasi"
99
test_output_path.mkdir(parents=True, exist_ok=True)
1010

1111
def verify_test_linear_transform(transform_list: TransformList):
@@ -20,4 +20,4 @@ def verify_test_linear_transform(transform_list: TransformList):
2020
0.65631490118447, 0.5806583745824385, -0.4817536741017158,
2121
-0.7407986817430222, 0.37486398378429736, -0.5573995934598175,
2222
-0.14306664045479867, 0.7227121458012518, 0.676179776908723,
23-
-65.99999999999997, 69.00000000000004, 32.000000000000036]))
23+
-65.99999999999997, 69.00000000000004, 32.000000000000036]))

packages/transform-io/python/itkwasm-transform-io/itkwasm_transform_io/__init__.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
# Generated file. To retain edits, remove this comment.
2-
31
"""itkwasm-transform-io: Input and output for scientific and medical coordinate transform file formats."""
42

3+
from .read_transform_async import read_transform_async, transformread_async
4+
from .read_transform import read_transform, transformread
5+
from .write_transform_async import write_transform_async, transformwrite_async
6+
from .write_transform import write_transform, transformwrite
7+
58
from .hdf5_read_transform_async import hdf5_read_transform_async
69
from .hdf5_read_transform import hdf5_read_transform
710
from .hdf5_write_transform_async import hdf5_write_transform_async
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import os
2+
from typing import Optional, Union
3+
4+
from itkwasm import (
5+
environment_dispatch,
6+
TransformList,
7+
)
8+
9+
def read_transform(
10+
serialized_transform: os.PathLike,
11+
float_parameters: bool = False,
12+
) -> TransformList:
13+
"""Read a transform file format and convert it to the ITK-Wasm file format
14+
15+
:param serialized_transform: Input transform serialized in the file format
16+
:type serialized_transform: os.PathLike
17+
18+
:param float_parameters: Use float for the parameter value type. The default is double.
19+
:type float_parameters: bool
20+
21+
:return: Output transform
22+
:rtype: TransformList
23+
"""
24+
func = environment_dispatch("itkwasm_transform_io", "read_transform")
25+
output = func(serialized_transform, float_parameters=float_parameters)
26+
return output
27+
28+
def transformread(
29+
serialized_transform: os.PathLike,
30+
float_parameters: bool = False,
31+
) -> TransformList:
32+
return read_transform(serialized_transform, float_parameters=float_parameters)
33+
34+
transformread.__doc__ = f"""{read_transform.__doc__}
35+
Alias for read_transform.
36+
"""
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import os
2+
from typing import Optional, Union
3+
4+
from itkwasm import (
5+
environment_dispatch,
6+
TransformList,
7+
)
8+
9+
async def read_transform_async(
10+
serialized_transform: os.PathLike,
11+
float_parameters: bool = False,
12+
) -> TransformList:
13+
"""Read an transform file format and convert it to the ITK-Wasm file format.
14+
15+
:param serialized_transform: Input transform serialized in the file format
16+
:type serialized_transform: os.PathLike
17+
18+
:param float_parameters: Use float for the parameter value type. The default is double.
19+
:type float_parameters: bool
20+
21+
:return: Output transform
22+
:rtype: TransformList
23+
"""
24+
func = environment_dispatch("itkwasm_transform_io", "read_transform_async")
25+
output = await func(serialized_transform, float_parameters=float_parameters)
26+
return output
27+
28+
async def transformread_async(
29+
serialized_transform: os.PathLike,
30+
float_parameters: bool = False,
31+
) -> TransformList:
32+
return await read_transform_async(serialized_transform, float_parameters=float_parameters)
33+
34+
transformread_async.__doc__ = f"""{read_transform_async.__doc__}
35+
Alias for read_transform.
36+
"""
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import os
2+
from typing import Dict, Tuple, Optional, List, Any
3+
4+
from itkwasm import (
5+
environment_dispatch,
6+
TransformList,
7+
)
8+
9+
def write_transform(
10+
transform: TransformList,
11+
serialized_transform: str,
12+
float_parameters: bool = False,
13+
use_compression: bool = False,
14+
) -> None:
15+
"""Write an ITK-Wasm file format converted to a transform file format
16+
17+
:param transform: Input transform
18+
:type transform: TransformList
19+
20+
:param serialized_transform: Output transform serialized in the file format.
21+
:type serialized_transform: str
22+
23+
:param float_parameters: Use float for the parameter value type. The default is double.
24+
:type float_parameters: bool
25+
26+
:param use_compression: Use compression in the written file
27+
:type use_compression: bool
28+
"""
29+
func = environment_dispatch("itkwasm_transform_io", "write_transform")
30+
func(transform, serialized_transform, float_parameters=float_parameters, use_compression=use_compression)
31+
return
32+
33+
def transformwrite(
34+
transform: TransformList,
35+
serialized_transform: os.PathLike,
36+
float_parameters: bool = False,
37+
use_compression: bool = False,
38+
) -> None:
39+
return write_transform(transform, serialized_transform, float_parameters=float_parameters, use_compression=use_compression)
40+
41+
transformwrite.__doc__ = f"""{write_transform.__doc__}
42+
Alias for write_transform.
43+
"""
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import os
2+
from typing import Dict, Tuple, Optional, List, Any
3+
4+
from itkwasm import (
5+
environment_dispatch,
6+
TransformList,
7+
)
8+
9+
async def write_transform_async(
10+
transform: TransformList,
11+
serialized_transform: str,
12+
float_parameters: bool = False,
13+
use_compression: bool = False,
14+
) -> None:
15+
"""Write an ITK-Wasm file format converted to a transform file format.
16+
17+
:param transform: Input transform
18+
:type transform: TransformList
19+
20+
:param serialized_transform: Output transform serialized in the file format.
21+
:type serialized_transform: str
22+
23+
:param float_parameters: Only write transform metadata -- do not write pixel data.
24+
:type float_parameters: bool
25+
26+
:param use_compression: Use compression in the written file
27+
:type use_compression: bool
28+
"""
29+
func = environment_dispatch("itkwasm_transform_io", "write_transform_async")
30+
await func(transform, serialized_transform, float_parameters=float_parameters, use_compression=use_compression)
31+
return
32+
33+
async def transformwrite_async(
34+
transform: TransformList,
35+
serialized_transform: os.PathLike,
36+
float_parameters: bool = False,
37+
use_compression: bool = False,
38+
) -> None:
39+
return await write_transform_async(transform, serialized_transform, float_parameters=float_parameters, use_compression=use_compression)
40+
41+
transformwrite_async.__doc__ = f"""{write_transform_async.__doc__}
42+
Alias for write_transform.
43+
"""

0 commit comments

Comments
 (0)