Skip to content

Commit e45ad2b

Browse files
author
anna-grim
committed
refactor: added swc run length to results csv
1 parent c667865 commit e45ad2b

File tree

3 files changed

+37
-36
lines changed

3 files changed

+37
-36
lines changed

demo/demo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def main():
2020
"""
2121
# Initializations
2222
pred_labels = TiffReader(pred_labels_path, swap_axes=False)
23-
skeleton_metric = evaluate(
23+
evaluate(
2424
groundtruth_pointer,
2525
pred_labels,
2626
output_dir,

demo/results.csv

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Splits,# Merges,% Split Edges,% Omit Edges,% Merged Edges,ERL,Normalized ERL,Edge Accuracy,Split Rate,Merge Rate
2-
0.0,,0.0,0.0,0.0,84.08,1.0,100.0,,
3-
0.0,,0.0,0.0,0.0,163.37,1.0,100.0,,
4-
1.0,,0.9803921568627451,0.9803921568627451,0.0,40.27,0.1873,98.04,62.82,
5-
1.0,,0.8264462809917356,5.785123966942149,0.0,146.36,0.5744,93.39,224.52,
6-
3.0,,2.830188679245283,0.0,0.0,45.66,0.1984,97.17,51.2,
7-
1.0,,1.9230769230769231,1.9230769230769231,0.0,30.3,0.286,96.15,51.19,
8-
0.0,,0.0,0.0,0.0,106.57,1.0,100.0,,
9-
5.0,,1.3651877133105803,2.3890784982935154,0.0,293.17,0.4627,96.25,103.53,
10-
14.0,,1.3123359580052494,0.7874015748031497,0.0,217.71,0.1407,97.9,92.8,
11-
2.0,,0.9009009009009009,4.504504504504505,0.0,116.9,0.5144,94.59,105.19,
12-
0.0,,0.0,0.0,0.0,80.18,1.0,100.0,,
1+
,SWC Run Length,# Splits,# Merges,% Split Edges,% Omit Edges,% Merged Edges,ERL,Normalized ERL,Edge Accuracy,Split Rate,Merge Rate
2+
SNT_Data-002,84.0837616185713,0.0,,0.0,0.0,0.0,84.08,1.0,100.0,,
3+
SNT_Data-035,163.37074041968341,0.0,,0.0,0.0,0.0,163.37,1.0,100.0,,
4+
SNT_Data-037,214.98055903143316,1.0,,0.9803921568627451,0.9803921568627451,0.0,40.27,0.1873,98.04,62.82,
5+
SNT_Data-038,254.78664303157612,1.0,,0.8264462809917356,5.785123966942149,0.0,146.36,0.5744,93.39,224.52,
6+
SNT_Data-041,230.16780853555437,3.0,,2.830188679245283,0.0,0.0,45.66,0.1984,97.17,51.2,
7+
SNT_Data-043,105.95635789438495,1.0,,1.9230769230769231,1.9230769230769231,0.0,30.3,0.286,96.15,51.19,
8+
SNT_Data-051,106.56843799568803,0.0,,0.0,0.0,0.0,106.57,1.0,100.0,,
9+
SNT_Data-052,633.5729425811579,5.0,,1.3651877133105803,2.3890784982935154,0.0,293.17,0.4627,96.25,103.53,
10+
SNT_Data-053,1547.4466172913558,14.0,,1.3123359580052494,0.7874015748031497,0.0,217.71,0.1407,97.9,92.8,
11+
SNT_Data-062,227.24329460444093,2.0,,0.9009009009009009,4.504504504504505,0.0,116.9,0.5144,94.59,105.19,
12+
SNT_Data-074,80.17991450259146,0.0,,0.0,0.0,0.0,80.18,1.0,100.0,,

src/segmentation_skeleton_metrics/evaluate.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -80,26 +80,24 @@ def evaluate(
8080
fragment_graphs = dataloader.load_fragments(fragments_pointer, gt_graphs)
8181

8282
# Run evaluation
83-
evaluator = Evaluator(output_dir, save_merges, save_fragments, verbose)
83+
evaluator = Evaluator(output_dir, results_filename, verbose)
8484
evaluator.run(gt_graphs, fragment_graphs)
8585

86+
# Optional saves
87+
if save_merges:
88+
evaluator.save_merge_results()
89+
90+
if save_fragments and fragment_graphs:
91+
evaluator.save_fragments(gt_graphs, fragment_graphs)
92+
8693

8794
# --- Evaluator ---
8895
class Evaluator:
8996

90-
def __init__(
91-
self,
92-
output_dir,
93-
results_filename,
94-
save_merges,
95-
save_fragments,
96-
verbose=True
97-
):
97+
def __init__(self, output_dir, results_filename, verbose=True):
9898
# Instance attributes
9999
self.output_dir = output_dir
100100
self.results_filename = results_filename
101-
self.save_merges = save_merges
102-
self.save_fragments = save_fragments
103101
self.verbose = verbose
104102

105103
# Set core metrics
@@ -131,9 +129,9 @@ def run(self, gt_graphs, fragment_graphs=None):
131129
for name, metric in self.metrics.items():
132130
if name == "# Merges" and fragment_graphs:
133131
results[name] = metric.compute(gt_graphs, fragment_graphs)
132+
print(results[name])
134133
elif name != "# Merges":
135134
results.update(metric.compute(gt_graphs))
136-
print(results["# Merges"])
137135

138136
# Compute derived metrics
139137
for name, metric in self.derived_metrics.items():
@@ -144,27 +142,30 @@ def run(self, gt_graphs, fragment_graphs=None):
144142

145143
# Save report
146144
path = f"{self.output_dir}/{self.results_filename}.csv"
147-
results.to_csv(path, index=False)
145+
results.to_csv(path, index=True)
148146
self.report_summary(results)
149147

150-
# Optional saves
151-
if self.save_merges:
152-
self.save_merge_results()
153-
154-
if self.save_fragments and fragment_graphs:
155-
self.save_intersecting_fragments(gt_graphs, fragment_graphs)
156-
157148
def init_results(self, gt_graphs):
158-
cols = list(self.metrics.keys()) + list(self.derived_metrics.keys())
149+
# Create dataframe
150+
cols = (
151+
["SWC Run Length"] +
152+
list(self.metrics.keys()) +
153+
list(self.derived_metrics.keys())
154+
)
159155
index = list(gt_graphs.keys())
160156
index.sort()
161-
return pd.DataFrame(np.nan, index=index, columns=cols)
157+
results = pd.DataFrame(np.nan, index=index, columns=cols)
158+
159+
# Populate SWC Run Length column
160+
for key, graph in gt_graphs.items():
161+
results.loc[key, "SWC Run Length"] = graph.run_length
162+
return results
162163

163164
def report_summary(self, results):
164165
pass
165166

166167
# --- Writers ---
167-
def save_intersecting_fragments(self):
168+
def save_fragments(self):
168169
pass
169170

170171
def save_merge_results(self, gt_graphs, fragment_graphs, output_dir):

0 commit comments

Comments
 (0)