def _run_single_scan(self, idx): test_mask = ScanWrapper(self._in_data_folder.get_file_path(idx)) effective_mask = ScanWrapper( self._effective_mask_folder_obj.get_file_path(idx)) dice_val = get_dice_with_effective_mask(self._gt_mask.get_data(), test_mask.get_data(), effective_mask.get_data()) result = {'Scan': test_mask.get_file_name(), 'Dice': dice_val} return result
def _run_single_scan(self, idx): test_mask = ScanWrapper(self._in_data_folder.get_file_path(idx)) effective_mask = ScanWrapper(self._effective_mask_folder_obj.get_file_path(idx)) effective_data = effective_mask.get_data() test_data = test_mask.get_data() gt_data = self._gt_mask.get_data() edt_test, surf_test = self._get_edt_full(test_data) edt_gt, surf_gt = self._get_edt_full(gt_data) effective_surf_test = surf_test * effective_data effective_surf_gt = surf_gt * effective_data # For debug the effective surface. # effective_surf_combine_output_path = test_mask.get_path() + '_effsur.nii.gz' # combine_effective = effective_surf_test # np.copyto(combine_effective, 2 * effective_surf_gt, where=effective_surf_gt > 0.5) # test_mask.save_scan_same_space(effective_surf_combine_output_path, combine_effective) surf_dist_map_gt2test = effective_surf_gt * edt_test surf_dist_map_test2gt = effective_surf_test * edt_gt num_surface_test = effective_surf_test.sum() num_surface_gt = effective_surf_gt.sum() msd_sym = (surf_dist_map_gt2test.sum() / num_surface_gt) + \ (surf_dist_map_test2gt.sum() / num_surface_test) msd_sym /= 2 hd_sym = np.amax(surf_dist_map_gt2test) + np.amax(surf_dist_map_test2gt) hd_sym /= 2 result = { 'Scan': test_mask.get_file_name(), 'MSD': msd_sym, 'HD': hd_sym, 'effective surface points (test)': effective_surf_test.sum(), 'effective ratio (test)': effective_surf_test.sum() / surf_test.sum(), 'effective surface points (gt)': effective_surf_gt.sum(), 'effective ratio (gt)': effective_surf_gt.sum() / surf_gt.sum() } return result