Skip to content
Snippets Groups Projects
Commit ff022e64 authored by Andrey Aristov's avatar Andrey Aristov
Browse files

add reader and writer

parent 39898d19
No related branches found
No related tags found
No related merge requests found
Pipeline #82259 passed
import nd2
import dask.array as da
import json
import os
def napari_get_reader(path):
if path.endswith('.nd2'):
return read_nd2
if path.endswith('.zarr/'):
return read_zarr
def read_zarr(path):
print(f"reading {path}")
try:
attrs = json.load(open(os.path.join(path, ".zattrs")))
info = attrs["multiscales"]["multiscales"][0]
channel_axis = info["channel_axis"]
print(f"found channel axis {channel_axis}")
dataset_paths = [
os.path.join(path, d["path"]) for d in info["datasets"]
]
datasets = [da.from_zarr(p) for p in dataset_paths]
except Exception as e:
raise e
try:
contrast_limits = info["lut"]
except KeyError:
contrast_limits = None
try:
colormap = info["colormap"]
except KeyError:
colormap = None
try:
name = info["name"]
except KeyError:
print("name not found")
name = [os.path.basename(path)] * datasets[0].shape[channel_axis]
except Exception as e:
print("name exception", e.args)
name = os.path.basename(path)
return [
(
datasets,
{
"channel_axis": channel_axis,
"colormap": colormap,
"contrast_limits": contrast_limits,
"name": name,
},
"image",
)
]
def read_nd2(path):
data = nd2.ND2File(path)
sizes = data.sizes
try:
ch = list(sizes.keys()).index('C')
except IndexError:
ch = None
return [
data.to_dask(),
{"channel_axis": ch},
'image'
]
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment