@@ -523,9 +523,13 @@ def compute_fold_average(self, folder, data=None, class_optimal={}, metrics=[],
523523 classes = class_names
524524 optimal_tag = 'All' if condition == 'All' else 'True Positive'
525525 for c in classes :
526- optimal_values = class_optimal [c ][optimal_tag ]
527- self .compute_fold_average_inner (folder , data = data , class_name = c , best_threshold = optimal_values [1 ],
528- best_overlap = optimal_values [0 ], metrics = metrics , suffix = suffix , condition = condition )
526+ try :
527+ optimal_values = class_optimal [c ][optimal_tag ]
528+ self .compute_fold_average_inner (folder , data = data , class_name = c , best_threshold = optimal_values [1 ],
529+ best_overlap = optimal_values [0 ], metrics = metrics , suffix = suffix , condition = condition )
530+ except Exception as e :
531+ logging .error (f"Fold average for class { c } failed with: { e } \n { traceback .format_exc ()} " )
532+ continue
529533
530534 def compute_fold_average_inner (self , folder , class_name , data = None , best_threshold = 0.5 , best_overlap = 0.0 , metrics = [],
531535 suffix = '' , condition = 'All' ):
@@ -756,21 +760,25 @@ def compute_and_plot_metric_over_metric_cascading_categories(self, class_name: s
756760 data_per_complete_selection = new_data_per_complete_selection
757761
758762 for sel in list (data_per_complete_selection .keys ()):
759- combined_df = data_per_complete_selection [sel ]
760- if len (combined_df ) != 0 :
761- # self.__compute_results_metric_over_metric(data=combined_df, class_name=class_name, metric1='PiW Dice',
762- # metric2='GT volume (ml)', category=category,
763- # study_name='Cascaded_Selection/' + sel, suffix='_' + sel)
764- dest_folder = os .path .join (self .output_folder , 'Cascaded_Selection' , sel )
765- os .makedirs (dest_folder , exist_ok = True )
766- self .compute_fold_average (folder = dest_folder ,
767- data = combined_df ,
768- class_optimal = self .classes_optimal , metrics = self .metric_names ,
769- suffix = '_' + sel ,
770- class_names = SharedResources .getInstance ().studies_class_names ,
771- condition = category
772- )
773- export_segmentation_df_to_latex_paper (folder = dest_folder , class_name = class_name , study = sel ,
774- input_csv_filename = os .path .join (dest_folder , class_name + '_overall_metrics_average_' + category + '_' + sel + '.csv' ))
775- else :
776- print ("No results for the following combination: {}. Skipping..." .format (sel ))
763+ try :
764+ combined_df = data_per_complete_selection [sel ]
765+ if len (combined_df ) != 0 :
766+ # self.__compute_results_metric_over_metric(data=combined_df, class_name=class_name, metric1='PiW Dice',
767+ # metric2='GT volume (ml)', category=category,
768+ # study_name='Cascaded_Selection/' + sel, suffix='_' + sel)
769+ dest_folder = os .path .join (self .output_folder , 'Cascaded_Selection' , sel )
770+ os .makedirs (dest_folder , exist_ok = True )
771+ self .compute_fold_average (folder = dest_folder ,
772+ data = combined_df ,
773+ class_optimal = self .classes_optimal , metrics = self .metric_names ,
774+ suffix = '_' + sel ,
775+ class_names = SharedResources .getInstance ().studies_class_names ,
776+ condition = category
777+ )
778+ export_segmentation_df_to_latex_paper (folder = dest_folder , class_name = class_name , study = sel ,
779+ input_csv_filename = os .path .join (dest_folder , class_name + '_overall_metrics_average_' + category + '_' + sel + '.csv' ))
780+ else :
781+ print ("No results for the following combination: {}. Skipping..." .format (sel ))
782+ except Exception as e :
783+ logging .error (f"Computing and exporting for the metrics combination { sel } failed with { e } \n { traceback .format_exc ()} " )
784+ continue
0 commit comments