1111from spatialdata import SpatialData
1212from xarray import DataArray
1313
14- from spatialdata_io import image
14+ from spatialdata_io import image # type: ignore[attr-defined]
1515
1616# =============================================================================
1717# CONFIGURATION - Edit these paths to match your setup
@@ -73,13 +73,29 @@ def _convert_image(
7373 # sanity check
7474 if scale_factors is None :
7575 assert isinstance (sdata ["image" ], DataArray )
76+ if chunks is not None :
77+ assert (
78+ sdata ["image" ].chunksizes ["x" ][0 ] == chunks [0 ]
79+ or sdata ["image" ].chunksizes ["x" ][0 ] == sdata ["image" ].shape [2 ]
80+ )
81+ assert (
82+ sdata ["image" ].chunksizes ["y" ][0 ] == chunks [1 ]
83+ or sdata ["image" ].chunksizes ["y" ][0 ] == sdata ["image" ].shape [1 ]
84+ )
7685 else :
77- assert len (sdata ["image" ].keys ()) == len (scale_factors )
86+ assert len (sdata ["image" ].keys ()) == len (scale_factors ) + 1
87+ if chunks is not None :
88+ assert (
89+ sdata ["image" ]["scale0" ]["image" ].chunksizes ["x" ][0 ] == chunks [0 ]
90+ or sdata ["image" ]["scale0" ]["image" ].chunksizes ["x" ][0 ]
91+ == sdata ["image" ]["scale0" ]["image" ].shape [2 ]
92+ )
93+ assert (
94+ sdata ["image" ]["scale0" ]["image" ].chunksizes ["y" ][0 ] == chunks [1 ]
95+ or sdata ["image" ]["scale0" ]["image" ].chunksizes ["y" ][0 ]
96+ == sdata ["image" ]["scale0" ]["image" ].shape [1 ]
97+ )
7898
79- if chunks is not None :
80- # TODO: bug here!
81- assert sdata ["image" ].chunksizes ["x" ] == chunks [0 ]
82- assert sdata ["image" ].chunksizes ["y" ] == chunks [1 ]
8399 return sdata
84100
85101 def time_io (self , scale_factors : list [int ] | None , use_tiff_memmap : bool , chunks : tuple [int , int ]) -> None :
@@ -96,5 +112,27 @@ def peakmem_io(self, scale_factors: list[int] | None, use_tiff_memmap: bool, chu
96112if __name__ == "__main__" :
97113 # Run a single test case for quick verification
98114 bench = IOBenchmarkImage ()
99- bench .setup (None , True , (1000 , 1000 ))
100- bench .time_io (None , True , (1000 , 1000 ))
115+
116+ # bench.setup()
117+ # bench.time_io(None, True, (5000, 5000))
118+
119+ # bench.setup()
120+ # bench.time_io(None, True, (1000, 1000))
121+
122+ # bench.setup()
123+ # bench.time_io(None, False, (5000, 5000))
124+
125+ # bench.setup()
126+ # bench.time_io(None, False, (1000, 1000))
127+
128+ # bench.setup()
129+ # bench.time_io([2, 2, 2], True, (5000, 5000))
130+
131+ # bench.setup()
132+ # bench.time_io([2, 2, 2], True, (1000, 1000))
133+
134+ bench .setup ()
135+ bench .time_io ([2 , 2 , 2 ], False , (5000 , 5000 ))
136+
137+ # bench.setup()
138+ # bench.time_io([2, 2, 2], False, (1000, 1000))
0 commit comments