diff --git a/qim3d/io/convert.py b/qim3d/io/convert.py new file mode 100644 index 0000000000000000000000000000000000000000..e08629d8c9988fbc4498d2f0e4cc4a1904c17145 --- /dev/null +++ b/qim3d/io/convert.py @@ -0,0 +1,51 @@ +import numpy as np +import tifffile as tiff +import zarr + + +def convert_tif_to_zarr(tif_path, zarr_path, chunks=(64, 64, 64)): + """ Convert a tiff file to a zarr file + + Args: + tif_path (str): path to the tiff file + zarr_path (str): path to the zarr file + chunks (tuple, optional): chunk size for the zarr file. Defaults to (64, 64, 64). + + Returns: + zarr.core.Array: zarr array containing the data from the tiff file + """ + vol = tiff.memmap(tif_path) + z = zarr.open(zarr_path, mode='w', shape=vol.shape, chunks=chunks, dtype=vol.dtype) + z[:] = vol[:] + + return z + +def convert_npy_to_zarr(npy_path, zarr_path, shape, dtype=np.float32, chunks=(64, 64, 64)): + """ Convert a numpy file to a zarr file + + Args: + npy_path (str): path to the numpy file + zarr_path (str): path to the zarr file + chunks (tuple, optional): chunk size for the zarr file. Defaults to (64, 64, 64). + + Returns: + zarr.core.Array: zarr array containing the data from the numpy file + """ + vol = np.memmap(npy_path, dtype=dtype, mode='r', shape=shape) + z = zarr.open(zarr_path, mode='w', shape=vol.shape, chunks=chunks, dtype=vol.dtype) + z[:] = vol[:] + + return z + +def convert_zarr_to_tif(zarr_path, tif_path): + """ Convert a zarr file to a tiff file + + Args: + zarr_path (str): path to the zarr file + tif_path (str): path to the tiff file + + returns: + None + """ + z = zarr.open(zarr_path) + tiff.imwrite(tif_path, z) \ No newline at end of file