Load ome.zarr Image with labels from a public S3 repository, analyze using StarDist and compare results

public public 1yr ago Version: Version 1 0 bookmarks

The image is referenced in the paper "NesSys: a novel method for accurate nuclear segmentation in 3D" published August 2019 in PLOS Biology: https://doi.org/10.1371/journal.pbio.3000388 and can be viewed online in the Image Data Resource . This original image was converted into the Zarr format. The analysis results produced by the authors of the paper were converted into labels and linked to the Zarr file which was placed into a public S3 repository. In this notebook, the Zarr file is then loaded together with the labels from the S3 storage and analyzed using StarDist . The StarDist analysis produces a segmentation, which is then viewed side-by-side with the original segmentations produced by the authors of the paper obtained via the loaded labels. Launch This notebook uses the environment_stardist.yml file. See Setup .

Code Snippets

2
3
4
5
# Package to access data on S3
%pip install aiohttp==3.8.4 zarr==2.14.2

%pip install stardist==0.8.2
 9
10
11
12
13
14
15
16
import dask
import dask.array as da

import matplotlib.pyplot as plt
%matplotlib inline
from dask.diagnostics import ProgressBar
import numpy
import zarr
20
image_id = 6001247
24
ENDPOINT_URL = 'https://uk1s3.embassy.ebi.ac.uk/'
28
29
30
31
def load_binary_from_s3(name, resolution='0'):
    root = '%s/%s/' % (name, resolution)
    with ProgressBar():
        return numpy.asarray(da.from_zarr(ENDPOINT_URL + root))
35
36
37
name = 'idr/zarr/v0.1/%s.zarr' % image_id
data = load_binary_from_s3(name)
print(data.shape)
41
42
43
name = 'idr/zarr/v0.1/%s.zarr/labels' % image_id
labels = load_binary_from_s3(name)
print(labels.shape)
47
48
from stardist.models import StarDist2D
model_versatile = StarDist2D.from_pretrained('2D_demo')
52
53
54
55
56
57
58
59
60
from csbdeep.utils import normalize
axis_norm = (0,1)
img = normalize(data[0, 1, :, :, :], 1,99.8, axis=axis_norm)
results = []
for im in img:
    new_labels, details = model_versatile.predict_instances(im)
    results.append(new_labels)

label_slices = numpy.array(results)
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from ipywidgets import *

def update(z=0):
    fig = plt.figure(figsize=(10, 10))
    plt.subplot(121)
    c = 1
    plt.imshow(data[0, c, z, :, :], cmap='gray')
    try:
        plt.imshow(labels[0, c, z, :, :], cmap='jet', alpha=0.5)
    except Exception:
        print(z)
    plt.subplot(122)
    plt.imshow(data[0, c, z, :, :], cmap='gray')
    plt.imshow(label_slices[z, :, :], cmap='jet', alpha=0.5)
    plt.tight_layout()
    fig.canvas.flush_events()

interact(update, z= widgets.IntSlider(value=0, min=0, max=data.shape[2]-1, step=1, description="Select Z", continuous_update=False))
ShowHide 8 more snippets with no or duplicated tags.

Login to post a comment if you would like to share your experience with this workflow.

Do you know this workflow well? If so, you can request seller status , and start supporting this workflow.

Free

Created: 1yr ago
Updated: 1yr ago
Maitainers: public
URL: https://github.com/ome/EMBL-EBI-imaging-course-05-2023/blob/main/Day_5/stardist.ipynb
Name: load-ome-zarr-image-with-labels-from-a-public-s3-r
Version: Version 1
Badge:
workflow icon

Insert copied code into your website to add a link to this workflow.

Downloaded: 0
Copyright: Public Domain
License: BSD 2-Clause "Simplified" License
  • Future updates

Related Workflows

cellranger-snakemake-gke
snakemake workflow to run cellranger on a given bucket using gke.
A Snakemake workflow for running cellranger on a given bucket using Google Kubernetes Engine. The usage of this workflow ...