Skip to content

Commit 58fe511

Browse files
Refactor toggle label
1 parent 379e661 commit 58fe511

File tree

6 files changed

+36
-44
lines changed

6 files changed

+36
-44
lines changed

examples/image_series_annotator_app.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from magicgui import magicgui
1313
from micro_sam.segment_from_prompts import segment_from_points
14-
from micro_sam.sam_annotator.util import create_prompt_menu, prompt_layer_to_points
14+
from micro_sam.sam_annotator.util import create_prompt_menu, prompt_layer_to_points, toggle_label
1515
from napari import Viewer
1616

1717

@@ -64,15 +64,8 @@ def image_series_annotator(image_paths, embedding_save_path, output_folder):
6464

6565
# toggle the points between positive / negative
6666
@v.bind_key("t")
67-
def toggle_label(event=None):
68-
# get the currently selected label
69-
current_properties = prompts.current_properties
70-
current_label = current_properties["label"][0]
71-
new_label = "negative" if current_label == "positive" else "positive"
72-
current_properties["label"] = np.array([new_label])
73-
prompts.current_properties = current_properties
74-
prompts.refresh()
75-
prompts.refresh_colors()
67+
def _toggle_label(event=None):
68+
toggle_label(prompts)
7669

7770
# bind the segmentation to a key 's'
7871
@v.bind_key("s")

examples/sam_annotator_2d.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ def livecell_annotator():
1313

1414
def main():
1515
# 2d annotator for livecell data
16-
# livecell_annotator()
16+
livecell_annotator()
1717

18+
# TODO
1819
# 2d annotator for cell tracking challenge hela data
19-
hela_2d_annotator()
20+
# hela_2d_annotator()
2021

2122

2223
if __name__ == "__main__":

micro_sam/sam_annotator/annotator_2d.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
from ..visualization import project_embeddings_for_visualization
99
from ..segment_instances import segment_from_embeddings
1010
from ..segment_from_prompts import segment_from_points
11-
from .util import commit_segmentation_widget, create_prompt_menu, prompt_layer_to_points, LABEL_COLOR_CYCLE
11+
from .util import (
12+
commit_segmentation_widget, create_prompt_menu, prompt_layer_to_points, toggle_label, LABEL_COLOR_CYCLE
13+
)
1214

1315

1416
@magicgui(call_button="Segment Object [S]")
@@ -96,15 +98,8 @@ def _commit(v):
9698
commit_segmentation_widget(v)
9799

98100
@v.bind_key("t")
99-
def toggle_label(event=None):
100-
# get the currently selected label
101-
current_properties = prompts.current_properties
102-
current_label = current_properties["label"][0]
103-
new_label = "negative" if current_label == "positive" else "positive"
104-
current_properties["label"] = np.array([new_label])
105-
prompts.current_properties = current_properties
106-
prompts.refresh()
107-
prompts.refresh_colors()
101+
def _toggle_label(event=None):
102+
toggle_label(prompts)
108103

109104
@v.bind_key("Shift-C")
110105
def clear_prompts(v):

micro_sam/sam_annotator/annotator_3d.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
from ..visualization import project_embeddings_for_visualization
1111
from .util import (
1212
commit_segmentation_widget, create_prompt_menu,
13-
prompt_layer_to_points, segment_slices_with_prompts, LABEL_COLOR_CYCLE
13+
prompt_layer_to_points, segment_slices_with_prompts,
14+
toggle_label, LABEL_COLOR_CYCLE
1415
)
1516

1617

@@ -228,15 +229,8 @@ def _commit(v):
228229
commit_segmentation_widget(v)
229230

230231
@v.bind_key("t")
231-
def toggle_label(event=None):
232-
# get the currently selected label
233-
current_properties = prompts.current_properties
234-
current_label = current_properties["label"][0]
235-
new_label = "negative" if current_label == "positive" else "positive"
236-
current_properties["label"] = np.array([new_label])
237-
prompts.current_properties = current_properties
238-
prompts.refresh()
239-
prompts.refresh_colors()
232+
def _toggle_label(event=None):
233+
toggle_label(prompts)
240234

241235
@v.bind_key("Shift-C")
242236
def clear_prompts(v):

micro_sam/sam_annotator/annotator_tracking.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
from .. import util
1313
from ..segment_from_prompts import segment_from_mask, segment_from_points
1414
from .util import (
15-
create_prompt_menu, prompt_layer_to_points, prompt_layer_to_state, segment_slices_with_prompts, LABEL_COLOR_CYCLE
15+
create_prompt_menu, prompt_layer_to_points, prompt_layer_to_state,
16+
segment_slices_with_prompts, toggle_label, LABEL_COLOR_CYCLE
1617
)
1718
from ..visualization import project_embeddings_for_visualization
1819

@@ -58,7 +59,7 @@ def _shift_object(mask, motion_model):
5859
return mask_shifted
5960

6061

61-
# TODO handle divison annotations + division classifier
62+
# TODO division classifier
6263
def _track_from_prompts(
6364
prompt_layer, seg, predictor, slices, image_embeddings,
6465
stop_upper, threshold, projection,
@@ -223,7 +224,11 @@ def annotator_tracking(raw, embedding_path=None, show_embeddings=False):
223224
prompts = v.add_points(
224225
data=[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], # FIXME workaround
225226
name="prompts",
226-
properties={"label": labels, "state": state_labels},
227+
properties={
228+
"label": labels,
229+
"state": state_labels,
230+
# "track_id": [1, 1],
231+
},
227232
edge_color="label",
228233
edge_color_cycle=LABEL_COLOR_CYCLE,
229234
symbol="o",
@@ -264,15 +269,8 @@ def _track_object(v):
264269
track_objet_widget(v)
265270

266271
@v.bind_key("t")
267-
def toggle_label(event=None):
268-
# get the currently selected label
269-
current_properties = prompts.current_properties
270-
current_label = current_properties["label"][0]
271-
new_label = "negative" if current_label == "positive" else "positive"
272-
current_properties["label"] = np.array([new_label])
273-
prompts.current_properties = current_properties
274-
prompts.refresh()
275-
prompts.refresh_colors()
272+
def _toggle_label(event=None):
273+
toggle_label(prompts)
276274

277275
@v.bind_key("Shift-C")
278276
def clear_prompts(v):

micro_sam/sam_annotator/util.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,14 @@ def _update_progress():
139139
_update_progress()
140140

141141
return seg, slices, stop_lower, stop_upper
142+
143+
144+
def toggle_label(prompts):
145+
# get the currently selected label
146+
current_properties = prompts.current_properties
147+
current_label = current_properties["label"][0]
148+
new_label = "negative" if current_label == "positive" else "positive"
149+
current_properties["label"] = np.array([new_label])
150+
prompts.current_properties = current_properties
151+
prompts.refresh()
152+
prompts.refresh_colors()

0 commit comments

Comments
 (0)