From b2fa4120f3f056c3bf1f306a80b058b310adc6ce Mon Sep 17 00:00:00 2001 From: Christian Kento Rasmussen <christian.kento@gmail.com> Date: Tue, 28 May 2024 13:58:59 +0200 Subject: [PATCH] created function to save to zarr --- qim3d/io/saving.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/qim3d/io/saving.py b/qim3d/io/saving.py index 64a6a1ca..b163c312 100644 --- a/qim3d/io/saving.py +++ b/qim3d/io/saving.py @@ -24,12 +24,14 @@ Example: import datetime import os +import dask.array as da import h5py import nibabel as nib import numpy as np import PIL import pydicom import tifffile +import zarr from pydicom.dataset import FileDataset, FileMetaDataset from pydicom.uid import UID @@ -234,6 +236,21 @@ class DataSaver: ds.PixelData = data_bytes ds.save_as(path) + + def save_to_zarr(self, path, data): + """ Saves a Dask array to a Zarr array on disk. + + Args: + path (str): The path to the Zarr array on disk. + data (dask.array): The Dask array to be saved to disk. + + Returns: + zarr.core.Array: The Zarr array saved on disk. + """ + assert isinstance(data, da.Array), 'data must be a dask array' + + # forces compute when saving to zarr + da.to_zarr(data, path, compute=True, overwrite=self.replace, compressor=zarr.Blosc(cname='zstd', clevel=3, shuffle=2)) def save_PIL(self, path, data): @@ -330,6 +347,8 @@ class DataSaver: return self.save_vol(path, data) elif path.endswith((".dcm",".DCM")): return self.save_dicom(path, data) + elif path.endswith((".zarr")): + return self.save_to_zarr(path, data) elif path.endswith((".jpeg",".jpg", ".png")): return self.save_PIL(path, data) else: -- GitLab