diff --git a/qim3d/io/loading.py b/qim3d/io/loading.py index 1b986b7a3a9a943be8a28b4fa8cbcc9d4f464dc8..2b33aef5bca2e6ec8b967ca4d90c66be6c366520 100644 --- a/qim3d/io/loading.py +++ b/qim3d/io/loading.py @@ -602,6 +602,27 @@ class DataLoader: return vol, dicom_list else: return vol + + + def load_zarr(self, path: str): + """ Loads a Zarr array from disk. + + Args: + path (str): The path to the Zarr array on disk. + + Returns: + dask.array | numpy.ndarray: The dask array loaded from disk. + if 'self.virtual_stack' is True, returns a dask array object, else returns a numpy.ndarray object. + """ + + # Opens the Zarr array + vol = da.from_zarr(path) + + # If virtual stack is disabled, return the computed array (np.ndarray) + if not self.virtual_stack: + vol = vol.compute() + + return vol def check_file_size(self, filename: str): """ @@ -674,6 +695,8 @@ class DataLoader: return self.load_vol(path) elif path.endswith((".dcm", ".DCM")): return self.load_dicom(path) + elif path.endswith(".zarr"): + return self.load_zarr(path) else: try: return self.load_pil(path)