99
1010from elf .evaluation import matching , symmetric_best_dice_score
1111
12+ from elf .io .files import open_file
13+
1214
1315def evaluate (labels , vesicles ):
1416 assert labels .shape == vesicles .shape
@@ -35,6 +37,8 @@ def evaluate_file(labels_path, seg_path, model_name, segment_key, anno_key, mask
3537 labels , seg = None , None
3638 if ".tif" in labels_path :
3739 labels = imread (labels_path )
40+ elif anno_key is not None :
41+ labels = open_file (labels_path , "r" )[anno_key ][:]
3842 if ".tif" in seg_path :
3943 seg = imread (seg_path )
4044 if labels is None or seg is None :
@@ -69,11 +73,14 @@ def evaluate_file(labels_path, seg_path, model_name, segment_key, anno_key, mask
6973 summarize_eval (results )
7074
7175
72- def evaluate_folder (labels_path , segmentation_path , model_name , segment_key , anno_key , mask_key , output_folder ):
76+ def evaluate_folder (labels_path , segmentation_path , model_name , segment_key , anno_key ,
77+ anno_ext , mask_key , output_folder ):
7378 print (f"Evaluating folder { segmentation_path } " )
7479 print (f"Using labels stored in { labels_path } " )
75-
76- label_paths = get_file_paths (labels_path , ext = ".tif" )
80+ if labels_path is not None :
81+ label_paths = get_file_paths (labels_path , ext = anno_ext )
82+ else :
83+ label_paths = _get_default_label_paths ()
7784 seg_paths = get_file_paths (segmentation_path , ext = ".tif" )
7885 if label_paths is None or seg_paths is None :
7986 print ("Could not find label file or segmentation file" )
@@ -108,29 +115,42 @@ def find_label_file(given_path: str, label_paths: list) -> str:
108115 str: The path to the matching label file, or None if no match is found.
109116 """
110117 raw_base = os .path .splitext (os .path .basename (given_path ))[0 ] # Remove extension
111-
118+ raw_base = raw_base .replace ("prediction" , "" ).replace ("pred" , "" )
119+ raw_base = raw_base .replace ("segmentation" , "" ).replace ("seg" , "" )
120+ raw_base = raw_base .rstrip ("_" )
112121 for label_path in label_paths :
113122 label_base = os .path .splitext (os .path .basename (label_path ))[0 ] # Remove extension
114- if raw_base in label_base : # Ensure raw name is contained in label name
123+ if raw_base . strip (). lower () in label_base . strip (). lower () : # Ensure raw name is contained in label name
115124 return label_path
116125
117126 return None # No match found
118127
119128
129+ def _get_default_label_paths ():
130+ return ['/scratch-grete/projects/nim00007/data/mitochondria/wichmann/refined_mitos/M2_eb10_model.h5' ,
131+ '/scratch-grete/projects/nim00007/data/mitochondria/wichmann/refined_mitos/WT21_eb3_model2.h5' ,
132+ '/scratch-grete/projects/nim00007/data/mitochondria/wichmann/refined_mitos/M10_eb9_model.h5' ,
133+ '/scratch-grete/projects/nim00007/data/mitochondria/wichmann/refined_mitos/KO9_eb4_model.h5' ,
134+ '/scratch-grete/projects/nim00007/data/mitochondria/wichmann/refined_mitos/M7_eb11_model.h5' ,
135+ '/scratch-grete/projects/nim00007/data/mitochondria/cooper/fidi_down_s2/36859_J1_66K_TS_CA3_PS_25_rec_2Kb1dawbp_crop_downscaled.h5'
136+ ]
137+
138+
120139def main ():
121140 parser = argparse .ArgumentParser ()
122141 parser .add_argument ("-sp" , "--segmentation_path" , required = True )
123- parser .add_argument ("-gp" , "--groundtruth_path" , required = True )
142+ parser .add_argument ("-gp" , "--groundtruth_path" , default = None )
124143 parser .add_argument ("-n" , "--model_name" , required = True )
125144 parser .add_argument ("-sk" , "--segmentation_key" , default = None )
126145 parser .add_argument ("-gk" , "--groundtruth_key" , default = None )
146+ parser .add_argument ("-ae" , "--annotation_extension" , default = None )
127147 parser .add_argument ("-m" , "--mask_key" , default = None )
128148 parser .add_argument ("-o" , "--output_folder" , required = True )
129149 args = parser .parse_args ()
130150
131151 if os .path .isdir (args .segmentation_path ):
132152 evaluate_folder (args .groundtruth_path , args .segmentation_path , args .model_name , args .segmentation_key ,
133- args .groundtruth_key ,
153+ args .groundtruth_key , args . annotation_extension ,
134154 args .mask_key , args .output_folder )
135155 else :
136156 evaluate_file (args .groundtruth_path , args .segmentation_path , args .model_name , args .segmentation_key ,
0 commit comments