Skip to content

Commit f0e4db1

Browse files
authored
Add normalization settings to RunCellpose
* updated runcellpose.py * update runcellpose
1 parent 11b46ee commit f0e4db1

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

active_plugins/runcellpose.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,11 @@
8383
8484
"""
8585

86+
"Select Cellpose Docker Image"
8687
CELLPOSE_DOCKER_NO_PRETRAINED = "cellprofiler/runcellpose_no_pretrained:0.1"
8788
CELLPOSE_DOCKER_IMAGE_WITH_PRETRAINED = "cellprofiler/runcellpose_with_pretrained:0.1"
8889

90+
"Detection mode"
8991
MODEL_NAMES = ['cyto','nuclei','tissuenet','livecell', 'cyto2', 'general',
9092
'CP', 'CPx', 'TN1', 'TN2', 'TN3', 'LC1', 'LC2', 'LC3', 'LC4', 'custom']
9193

@@ -95,7 +97,7 @@ class RunCellpose(ImageSegmentation):
9597

9698
module_name = "RunCellpose"
9799

98-
variable_revision_number = 4
100+
variable_revision_number = 5
99101

100102
doi = {
101103
"Please cite the following when using RunCellPose:": "https://doi.org/10.1038/s41592-020-01018-x",
@@ -105,6 +107,16 @@ class RunCellpose(ImageSegmentation):
105107
def create_settings(self):
106108
super(RunCellpose, self).create_settings()
107109

110+
self.rescale = Binary(
111+
text="Rescale images before running Cellpose",
112+
value=True,
113+
doc="""\
114+
Reminds the user that the normalization step will be performed to ensure suimilar segmentation behaviour inthe RunCellpose
115+
modul and the Cellpose app.
116+
"""
117+
)
118+
119+
108120
self.docker_or_python = Choice(
109121
text="Run CellPose in docker or local python environment",
110122
choices=["Docker", "Python"],
@@ -340,6 +352,7 @@ def set_directory_fn(path):
340352
def settings(self):
341353
return [
342354
self.x_name,
355+
self.rescale,
343356
self.docker_or_python,
344357
self.docker_image,
345358
self.expected_diameter,
@@ -365,7 +378,8 @@ def settings(self):
365378
]
366379

367380
def visible_settings(self):
368-
vis_settings = [self.docker_or_python]
381+
vis_settings = [self.rescale, self.docker_or_python]
382+
369383

370384
if self.docker_or_python.value == "Docker":
371385
vis_settings += [self.docker_image]
@@ -440,6 +454,13 @@ def run(self, workspace):
440454
x = images.get_image(x_name)
441455
dimensions = x.dimensions
442456
x_data = x.pixel_data
457+
458+
if self.rescale.value:
459+
rescale_x = x_data.copy()
460+
x01 = numpy.percentile(rescale_x, 1)
461+
x99 = numpy.percentile(rescale_x, 99)
462+
x_data = numpy.clip((rescale_x - x01) / (x99 - x01), a_min=0, a_max=1)
463+
443464
anisotropy = 0.0
444465
if self.do_3D.value:
445466
anisotropy = x.spacing[0] / x.spacing[1]
@@ -699,4 +720,9 @@ def upgrade_settings(self, setting_values, variable_revision_number, module_name
699720
if variable_revision_number == 3:
700721
setting_values = [setting_values[0]] + ["Python",CELLPOSE_DOCKER_IMAGE_WITH_PRETRAINED] + setting_values[1:]
701722
variable_revision_number = 4
723+
if variable_revision_number == 4:
724+
setting_values = [setting_values[0]] + ['No'] + [setting_values[1:]]
725+
variable_revision_number = 5
702726
return setting_values, variable_revision_number
727+
728+

0 commit comments

Comments
 (0)