diff --git a/sources/zarr/large_image_source_zarr/__init__.py b/sources/zarr/large_image_source_zarr/__init__.py index 05a9fa6a9..38a3a1415 100644 --- a/sources/zarr/large_image_source_zarr/__init__.py +++ b/sources/zarr/large_image_source_zarr/__init__.py @@ -629,7 +629,7 @@ def getTile(self, x, y, z, pilImageAllowed=False, numpyAllowed=False, **kwargs): def _validateNewTile(self, tile, mask, placement, axes): if not isinstance(tile, np.ndarray) or axes is None: - axes = 'yxs' + axes = self._axes if hasattr(self, '_axes') else 'yxs' tile, mode = _imageToNumpy(tile) elif not isinstance(axes, str) and not isinstance(axes, list): err = 'Invalid type for axes. Must be str or list[str].' diff --git a/test/test_sink.py b/test/test_sink.py index 10e1f964f..c10656b22 100644 --- a/test/test_sink.py +++ b/test/test_sink.py @@ -117,6 +117,14 @@ def testXYAxis(): assert metadata['IndexStride']['IndexXY'] == 1 +def testMultiFrameAxes(): + sink = large_image_source_zarr.new() + sink.addTile(np.random.random((256, 256)), 0, 0, q=1) + assert sink.metadata.get('IndexRange') == dict(IndexQ=2) + sink.addTile(np.random.random((256, 256)), 0, 0, r=1) + assert sink.metadata.get('IndexRange') == dict(IndexQ=2, IndexR=2) + + @pytest.mark.parametrize('file_type', FILE_TYPES) def testCrop(file_type, tmp_path): output_file = tmp_path / f'test.{file_type}'