From cd952c85be8897795e6f57f4d6f84664458dc1e8 Mon Sep 17 00:00:00 2001
From: Christian Kento Rasmussen <christian.kento@gmail.com>
Date: Tue, 28 May 2024 14:28:19 +0200
Subject: [PATCH] created load function for dask

---
 qim3d/io/loading.py | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/qim3d/io/loading.py b/qim3d/io/loading.py
index 1b986b7a..2b33aef5 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)
-- 
GitLab