Skip to content

Commit 874f95c

Browse files
anna-grimanna-grim
andauthored
Refactor optimize merge (#125)
* refactor: optimized merge detection * bug: removed subroutine * removed test tqdm * bug: close zip writer * refactor: metrics in pandas df * refactor: detect all sites * bug: empty merge list * bug: rescaling swcs * bug: removed break * updates * minor updates * updated stats --------- Co-authored-by: anna-grim <[email protected]>
1 parent 6faa1d3 commit 874f95c

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

src/segmentation_skeleton_metrics/skeleton_metric.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -456,14 +456,18 @@ def detect_splits(self):
456456

457457
# Store results
458458
for process in as_completed(processes):
459-
key, graph, split_percent = process.result()
460-
n_edges = graph.number_of_edges()
461-
n_gt_edges = graph.graph["n_edges"]
459+
key, graph, n_split_edges = process.result()
460+
n_before = graph.graph["n_edges"]
461+
n_after = graph.number_of_edges()
462+
463+
n_missing = n_before - n_after
464+
p_omit = 100 * (n_missing + n_split_edges) / n_before
465+
p_split = 100 * n_split_edges / n_before
462466

463467
self.graphs[key] = graph
464-
self.metrics.at[key, "% Omit"] = 1 - n_edges / n_gt_edges
468+
self.metrics.at[key, "% Omit"] = p_omit
465469
self.metrics.at[key, "# Splits"] = gutil.count_splits(graph)
466-
self.metrics.loc[key, "% Split"] = split_percent
470+
self.metrics.loc[key, "% Split"] = p_split
467471
self.metrics.loc[key, "GT Run Length"] = graph.run_length
468472
pbar.update(1)
469473

@@ -765,7 +769,7 @@ def compute_edge_accuracy(self):
765769
for key in self.graphs:
766770
p_omit = self.metrics.loc[key, "% Omit"]
767771
p_merged = self.metrics.loc[key, "% Merged"]
768-
self.metrics.loc[key, "Edge Accuracy"] = 1 - p_omit - p_merged
772+
self.metrics.loc[key, "Edge Accuracy"] = 100 - p_omit - p_merged
769773

770774
def compute_erl(self):
771775
"""

src/segmentation_skeleton_metrics/split_detection.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def run(process_id, graph):
3030
3131
"""
3232
# Initializations
33-
split_cnt = 0
33+
n_split_edges = 0
3434
source = get_leaf(graph)
3535
dfs_edges = deque(list(nx.dfs_edges(graph, source=source)))
3636
visited_edges = set()
@@ -47,15 +47,14 @@ def run(process_id, graph):
4747
label_j = int(graph.labels[j])
4848
if is_split(label_i, label_j):
4949
graph.remove_edge(i, j)
50-
split_cnt += 1
50+
n_split_edges += 1
5151
elif label_j == 0:
5252
check_misalignment(graph, visited_edges, i, j)
5353
visited_edges.add(frozenset({i, j}))
5454

5555
# Finish
56-
split_percent = split_cnt / graph.graph["n_edges"]
5756
graph.remove_nodes_with_label(0)
58-
return process_id, graph, split_percent
57+
return process_id, graph, n_split_edges
5958

6059

6160
def check_misalignment(graph, visited_edges, nb, root):

0 commit comments

Comments
 (0)