Skip to content

Commit e6971f5

Browse files
committed
fiexed morphology widgets
1 parent 2da1d37 commit e6971f5

File tree

5 files changed

+97
-213
lines changed

5 files changed

+97
-213
lines changed

synaptic_reconstruction/napari.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ contributions:
1616
- id: synaptic_reconstruction.morphology
1717
python_name: synaptic_reconstruction.tools.morphology_widget:MorphologyWidget
1818
title: Morphology Analysis
19+
- id: synaptic_reconstruction.vesicle_pooling
20+
python_name: synaptic_reconstruction.tools.vesicle_pool_widget:VesiclePoolWidget
21+
title: Vesicle Pooling
1922

2023
readers:
2124
- command: synaptic_reconstruction.file_reader
@@ -32,3 +35,5 @@ contributions:
3235
display_name: Distance Measurement
3336
- command: synaptic_reconstruction.morphology
3437
display_name: Morphology Analysis
38+
- command: synaptic_reconstruction.vesicle_pooling
39+
display_name: Vesicle Pooling

synaptic_reconstruction/tools/base_widget.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ def _create_layer_selector(self, selector_name, layer_type="Image"):
3131
layer_filter = napari.layers.Image
3232
elif layer_type == "Labels":
3333
layer_filter = napari.layers.Labels
34+
elif layer_type == "Shapes":
35+
layer_filter = napari.layers.Shapes
3436
else:
3537
raise ValueError("layer_type must be either 'Image' or 'Labels'.")
3638

synaptic_reconstruction/tools/distance_measure_widget.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ def _add_lines_and_table(self, lines, properties, table_data, name):
8787
blending="additive",
8888
properties=properties,
8989
)
90-
line_layer.properties["distances"] = table_data
90+
if line_layer.metadata is None:
91+
line_layer.metadata = table_data
92+
else:
93+
line_layer.metadata["distances"] = table_data
9194

9295
if add_table is not None:
9396
add_table(line_layer, self.viewer)

synaptic_reconstruction/tools/morphology_widget.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,11 @@ def _add_table(self, coords, radii, props, name="Shapes Layer"):
157157

158158
# Add the shapes layer
159159
layer = self._create_shapes_layer(table_data, name)
160-
160+
161161
# Add properties to segmentation layer
162162
segmentation_layer = self._get_layer_selector_layer(self.image_selector_name1)
163-
if not segmentation_layer.properties:
164-
segmentation_layer.properties = table_data
165-
else:
166-
segmentation_layer.properties["morphology"] = table_data
163+
164+
segmentation_layer.metadata["morphology"] = table_data
167165

168166
if add_table is not None:
169167
add_table(layer, self.viewer)
@@ -186,7 +184,7 @@ def on_measure_vesicle_morphology(self):
186184
return
187185

188186
# get metadata from layer if available
189-
metadata = self._get_layer_selector_data(self.image_selector_name1, return_metadata=True)
187+
metadata = self._get_layer_selector_data(self.image_selector_name, return_metadata=True)
190188
resolution = metadata.get("voxel_size", None)
191189
if resolution is not None:
192190
resolution = [v for v in resolution.values()]
@@ -212,7 +210,7 @@ def on_measure_structure_morphology(self):
212210
show_info("INFO: Please choose a segmentation.")
213211
return
214212
# get metadata from layer if available
215-
metadata = self._get_layer_selector_data(self.image_selector_name1, return_metadata=True)
213+
metadata = self._get_layer_selector_data(self.image_selector_name, return_metadata=True)
216214
resolution = metadata.get("voxel_size", None)
217215
if resolution is not None:
218216
resolution = [v for v in resolution.values()]
@@ -226,10 +224,10 @@ def on_measure_structure_morphology(self):
226224
def _add_table_structure(self, morphology):
227225
segmentation_layer = self._get_layer_selector_layer(self.image_selector_name1)
228226
table_data = self._to_table_data_structure(morphology)
229-
if not segmentation_layer.properties:
230-
segmentation_layer.properties = table_data
231-
else:
232-
segmentation_layer.properties["morphology"] = table_data
227+
228+
segmentation_layer.metadata["morphology"] = table_data
229+
segmentation_layer.properties = table_data
230+
print("segmentation layer metadata:\n", segmentation_layer.metadata)
233231

234232
# Add a table layer to the Napari viewer
235233
if add_table is not None:
@@ -244,11 +242,14 @@ def _add_table_structure(self, morphology):
244242

245243
def _to_table_data_structure(self, morphology):
246244
# Create table data
247-
table_data = {
248-
"Name": morphology["perimeter [pixel]"],
249-
"area [pixel^2]": morphology["area [pixel^2]"],
250-
"perimeter [pixel]": morphology["perimeter [pixel]"],
251-
}
245+
return morphology
246+
# for k, v in morphology.items():
247+
# table_data = {k: v}
248+
# table_data = {
249+
# "Name": morphology["perimeter [pixel]"],
250+
# "area [pixel^2]": morphology["area [pixel^2]"],
251+
# "perimeter [pixel]": morphology["perimeter [pixel]"],
252+
# }
252253
return pd.DataFrame(table_data)
253254

254255
def _create_settings_widget(self):

0 commit comments

Comments
 (0)