Skip to content

Commit 8a4d26d

Browse files
Update vesicle pool widget (#77)
* Update vesicle pool widget WIP * Finish vesicle pool widget
1 parent 9b94807 commit 8a4d26d

File tree

5 files changed

+152
-104
lines changed

5 files changed

+152
-104
lines changed

synapse_net/napari.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ contributions:
99
# Commands for widgets.
1010
- id: synapse_net.segment
1111
python_name: synapse_net.tools.segmentation_widget:SegmentationWidget
12-
title: Segment
12+
title: Segmentation
1313
- id: synapse_net.distance_measure
1414
python_name: synapse_net.tools.distance_measure_widget:DistanceMeasureWidget
1515
title: Distance Measurement
@@ -21,7 +21,7 @@ contributions:
2121
title: Morphology Analysis
2222
- id: synapse_net.vesicle_pooling
2323
python_name: synapse_net.tools.vesicle_pool_widget:VesiclePoolWidget
24-
title: Vesicle Pooling
24+
title: Pool Assignment
2525

2626
# Commands for sample data.
2727
- id: synapse_net.sample_data_tem_2d
@@ -47,7 +47,7 @@ contributions:
4747
- command: synapse_net.morphology
4848
display_name: Morphology Analysis
4949
- command: synapse_net.vesicle_pooling
50-
display_name: Vesicle Pooling
50+
display_name: Pool Assignment
5151

5252
sample_data:
5353
- command: synapse_net.sample_data_tem_2d

synapse_net/tools/base_widget.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import sys
23
from pathlib import Path
34

45
import napari
@@ -11,9 +12,19 @@
1112
from superqt import QCollapsible
1213

1314
try:
14-
from napari_skimage_regionprops import add_table
15+
from napari_skimage_regionprops import add_table, get_table
1516
except ImportError:
16-
add_table = None
17+
add_table, get_table = None, None
18+
19+
20+
class _SilencePrint:
21+
def __enter__(self):
22+
self._original_stdout = sys.stdout
23+
sys.stdout = open(os.devnull, "w")
24+
25+
def __exit__(self, exc_type, exc_val, exc_tb):
26+
sys.stdout.close()
27+
sys.stdout = self._original_stdout
1728

1829

1930
class BaseWidget(QWidget):
@@ -316,12 +327,21 @@ def _save_table(self, save_path, data):
316327
return file_path
317328

318329
def _add_properties_and_table(self, layer, table_data, save_path=""):
319-
if layer.properties:
320-
layer.properties = layer.properties.update(table_data)
321-
else:
322-
layer.properties = table_data
330+
layer.properties = table_data
331+
323332
if add_table is not None:
324-
add_table(layer, self.viewer)
333+
table = get_table(layer, self.viewer)
334+
if table is None:
335+
with _SilencePrint():
336+
add_table(layer, self.viewer)
337+
else:
338+
# FIXME updating the table does not yet work
339+
with _SilencePrint():
340+
table.update_content()
341+
# table_dict = table_data.to_dict()
342+
# table_dict["index"] = table_dict["label"]
343+
# table.set_content(table_dict)
344+
325345
# Save table to file if save path is provided.
326346
if save_path != "":
327347
file_path = self._save_table(self.save_path.text(), table_data)

synapse_net/tools/distance_measure_widget.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ def __init__(self):
4545
def _to_table_data(self, distances, seg_ids, endpoints1=None, endpoints2=None):
4646
assert len(distances) == len(seg_ids), f"{distances.shape}, {seg_ids.shape}"
4747
if seg_ids.ndim == 2:
48-
table_data = {"label_id1": seg_ids[:, 0], "label_id2": seg_ids[:, 1], "distance": distances}
48+
table_data = {"label1": seg_ids[:, 0], "label2": seg_ids[:, 1], "distance": distances}
4949
else:
50-
table_data = {"label_id": seg_ids, "distance": distances}
50+
table_data = {"label": seg_ids, "distance": distances}
5151
if endpoints1 is not None:
5252
axis_names = "zyx" if endpoints1.shape[1] == 3 else "yx"
5353
table_data.update({f"begin-{ax}": endpoints1[:, i] for i, ax in enumerate(axis_names)})

synapse_net/tools/morphology_widget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def _to_table_data(self, coords, radii, props):
121121
# Define columns based on dimension (2D or 3D)
122122
col_names = ["x", "y"] if coords.shape[1] == 2 else ["x", "y", "z"]
123123
table_data = {
124-
"label_id": [prop.label for prop in props],
124+
"label": [prop.label for prop in props],
125125
**{col: coords[:, i] for i, col in enumerate(col_names)},
126126
"radius": radii,
127127
"intensity_max": [prop.intensity_max for prop in props],

0 commit comments

Comments
 (0)