Converting to our file format
Our preferred file format is .zarr
which is accessed in DEXP through ZDataset
class from dexp.datasets
submodule.
As long as you can load your dataset as a numpy array you can convert your data into a ZDataset
as below:
import numpy as np
from tqdm import tqdm
from dexp.datasets import ZDataset
SHAPE = (512, 1024, 1024)
def load_time_point(time_point: int, channel: str) -> np.ndarray:
"""Dummy function to simulate data loading from another file format."""
# IMPORTANT: here you should read your data
return np.random.randint(0, 1500, size=SHAPE, dtype=np.uint16)
if __name__ == "__main__":
ds = ZDataset("new_dataset.zarr", mode="w-")
# shape and datatype should be know when creating the dataset
gfp_shape = (25,) + SHAPE # (25, 512, 1024, 1024)
ds.add_channel(name="GFP", shape=gfp_shape, dtype=np.uint16)
for tp in tqdm(range(ds.nb_timepoints("GFP")), "Converting GFP channel"):
stack = load_time_point(tp, "GFP") # loading the data
ds.write_stack("GFP", tp, stack) # saving to our format
# the channels can have different shapes
rfp_shape = (10,) + SHAPE
ds.add_channel(name="RFP", shape=gfp_shape, dtype=np.uint16)
for tp in tqdm(range(ds.nb_timepoints("RFP")), "Converting RFP channel"):
stack = load_time_point(tp, "RFP")
ds.write_stack("RFP", tp, stack)
# done
ds.close()
The next guide shows how to visualize your data.