Skip to content

Commit 29445be

Browse files
committed
feat(python): add Transform interface type
1 parent d47a921 commit 29445be

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

packages/core/python/itkwasm/itkwasm/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from .image import Image, ImageType, ImageRegion
77
from .pointset import PointSet, PointSetType
88
from .mesh import Mesh, MeshType
9+
from .transform import Transform, TransformType, TransformParameterizations
910
from .polydata import PolyData, PolyDataType
1011
from .binary_file import BinaryFile
1112
from .binary_stream import BinaryStream
@@ -42,6 +43,9 @@
4243
"MeshType",
4344
"PolyData",
4445
"PolyDataType",
46+
"Transform",
47+
"TransformType",
48+
"TransformParameterizations",
4549
"BinaryFile",
4650
"BinaryStream",
4751
"TextFile",
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
from dataclasses import dataclass, field
2+
from enum import Enum
3+
from typing import Sequence, Union, Dict, Optional
4+
5+
try:
6+
from numpy.typing import ArrayLike
7+
except ImportError:
8+
from numpy import ndarray as ArrayLike
9+
import numpy as np
10+
11+
class TransformParameterizations(str, Enum):
12+
Composite = "Composite"
13+
Identity = "Identity"
14+
Translation = "Translation"
15+
Euler2D = "Euler2D"
16+
Euler3D = "Euler3D"
17+
Rigid2D = "Rigid2D"
18+
Rigid3D = "Rigid3D"
19+
Rigid3DPerspective = "Rigid3DPerspective"
20+
Versor = "Versor"
21+
VersorRigid3D = "VersorRigid3D"
22+
Scale = "Scale"
23+
ScaleLogarithmic = "ScaleLogarithmic"
24+
ScaleSkewVersor3D = "ScaleSkewVersor3D"
25+
Similarity2D = "Similarity2D"
26+
Similarity3D = "Similarity3D"
27+
QuaternionRigid = "QuaternionRigid"
28+
Affine = "Affine"
29+
ScalableAffine = "ScalableAffine"
30+
AzimuthElevationToCartesian = "AzimuthElevationToCartesian"
31+
BSpline = "BSpline"
32+
BSplineSmoothingOnUpdateDisplacementField = "BSplineSmoothingOnUpdateDisplacementField"
33+
ConstantVelocityField = "ConstantVelocityField"
34+
DisplacementField = "DisplacementField"
35+
GaussianSmoothingOnUpdateDisplacementField = "GaussianSmoothingOnUpdateDisplacementField"
36+
GaussianExponentialDiffeomorphic = "GaussianExponentialDiffeomorphic"
37+
VelocityField = "VelocityField"
38+
TimeVaryingVelocityField = "TimeVaryingVelocityField"
39+
GaussianSmoothingOnUpdateTimeVaryingVelocityField = "GaussianSmoothingOnUpdateTimeVaryingVelocityField"
40+
41+
@dataclass
42+
class TransformType:
43+
inputDimension: int = 3
44+
outputDimension: int = 3
45+
transformParameterization: TransformParameterizations = TransformParameterizations.Identity
46+
47+
@dataclass
48+
class Transform:
49+
transformType: Union[TransformType, Dict] = field(default_factory=TransformType)
50+
numberOfFixedParameters: int = 0
51+
numberOfParameters: int = 0
52+
53+
name: str = "Transform"
54+
55+
inputSpaceName: str = ""
56+
outputSpaceName: str = ""
57+
58+
fixedParameters: Optional[ArrayLike] = None
59+
parameters: Optional[ArrayLike] = None
60+
61+
metadata: dict = field(default_factory=dict)
62+
63+
def __post_init__(self):
64+
if isinstance(self.transformType, dict):
65+
self.transformType = TransformType(**self.transformType)

packages/core/python/itkwasm/itkwasm/transform_parameterizations.py

Whitespace-only changes.

0 commit comments

Comments
 (0)