Skip to content

Commit 2ca3648

Browse files
Add button to save the lineage in the tracking annotator
1 parent 55f02a0 commit 2ca3648

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

micro_sam/sam_annotator/annotator_tracking.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import json
12
import warnings
3+
from pathlib import Path
24
from typing import Optional, Tuple
35

46
import napari
@@ -24,6 +26,9 @@
2426
STATE_COLOR_CYCLE = ["#00FFFF", "#FF00FF", ]
2527
"""@private"""
2628

29+
COMMITTED_LINEAGES = []
30+
"""@private"""
31+
2732

2833
#
2934
# util functionality
@@ -336,6 +341,8 @@ def _reset_tracking_state():
336341

337342
@magicgui(call_button="Commit [C]", layer={"choices": ["current_track"]})
338343
def _commit_tracking_widget(v: Viewer, layer: str = "current_track") -> None:
344+
global COMMITTED_LINEAGES
345+
339346
seg = v.layers[layer].data
340347

341348
id_offset = int(v.layers["committed_tracks"].data.max())
@@ -348,6 +355,11 @@ def _commit_tracking_widget(v: Viewer, layer: str = "current_track") -> None:
348355
v.layers[layer].data = np.zeros(shape, dtype="uint32")
349356
v.layers[layer].refresh()
350357

358+
updated_lineage = {
359+
parent + id_offset: [child + id_offset for child in children] for parent, children in LINEAGE.items()
360+
}
361+
COMMITTED_LINEAGES.append(updated_lineage)
362+
351363
_reset_tracking_state()
352364
vutil.clear_annotations(v, clear_segmentations=False)
353365

@@ -358,6 +370,13 @@ def _clear_widget_tracking(v: Viewer) -> None:
358370
vutil.clear_annotations(v)
359371

360372

373+
@magicgui(call_button="Save Lineage")
374+
def _save_lineage_widget(v: Viewer, path: Path) -> None:
375+
path = path.with_suffix(".json")
376+
with open(path, "w") as f:
377+
json.dump(COMMITTED_LINEAGES, f)
378+
379+
361380
def annotator_tracking(
362381
raw: np.ndarray,
363382
embedding_path: Optional[str] = None,
@@ -486,6 +505,7 @@ def annotator_tracking(
486505
v.window.add_dock_widget(_segment_frame_wigdet)
487506
v.window.add_dock_widget(_track_objet_widget)
488507
v.window.add_dock_widget(_commit_tracking_widget)
508+
v.window.add_dock_widget(_save_lineage_widget)
489509
v.window.add_dock_widget(_clear_widget_tracking)
490510

491511
#

0 commit comments

Comments
 (0)