Skip to content

Commit d903308

Browse files
committed
fix(py): set initial buffered region with py constructed data
1 parent 0287b76 commit d903308

File tree

6 files changed

+1304
-1547
lines changed

6 files changed

+1304
-1547
lines changed

packages/core/python/itkwasm/itkwasm/image.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,15 @@ class ImageRegion:
3434
@dataclass
3535
class Image:
3636
imageType: Union[ImageType, Dict] = field(default_factory=ImageType)
37+
3738
name: str = "Image"
39+
3840
origin: Sequence[float] = field(default_factory=list)
3941
spacing: Sequence[float] = field(default_factory=list)
4042
direction: ArrayLike = field(default_factory=_default_direction)
43+
4144
size: Sequence[int] = field(default_factory=list)
45+
4246
metadata: Dict = field(default_factory=dict)
4347
data: Optional[ArrayLike] = None
4448
bufferedRegion: Optional[ImageRegion] = None
@@ -67,10 +71,18 @@ def __post_init__(self):
6771
] * dimension
6872

6973
if self.bufferedRegion is None:
70-
self.bufferedRegion = ImageRegion(
71-
index=[
72-
0,
73-
]
74-
* dimension,
75-
size=self.size,
76-
)
74+
if self.data is not None:
75+
self.bufferedRegion = ImageRegion(
76+
index=(0,) * dimension,
77+
size=self.data.shape[:dimension][::-1],
78+
)
79+
else:
80+
self.bufferedRegion = ImageRegion(
81+
index=[
82+
0,
83+
]
84+
* dimension,
85+
size=self.size,
86+
)
87+
elif isinstance(self.bufferedRegion, dict):
88+
self.bufferedRegion = ImageRegion(**self.bufferedRegion)

packages/core/python/itkwasm/itkwasm/image_from_array.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
except ImportError:
66
from numpy import ndarray as ArrayLike
77

8-
from .image import Image, ImageType
8+
from .image import Image, ImageType, ImageRegion
99
from .to_numpy_array import _dtype_to_component_type
1010

1111
from .pixel_types import PixelTypes
@@ -42,5 +42,9 @@ def image_from_array(arr, is_vector: bool = False, image_type: Optional[ImageTyp
4242
image = Image(imageType=image_type)
4343
image.size = arr.shape[:dimension][::-1]
4444
image.data = arr
45+
image.bufferedRegion = ImageRegion(
46+
index=(0,) * dimension,
47+
size=image.size,
48+
)
4549

4650
return image

0 commit comments

Comments
 (0)