From 5c5fd6982dec2b748969494751da12717f43cc1c Mon Sep 17 00:00:00 2001 From: Han Zhu Date: Wed, 8 May 2024 14:34:03 -0400 Subject: [PATCH] fix issue for empty map --- CryoREAD/data_processing/Resize_Map.py | 4 ++++ CryoREAD/main.py | 2 ++ main.py | 14 +++++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CryoREAD/data_processing/Resize_Map.py b/CryoREAD/data_processing/Resize_Map.py index 8d21bcc..d68a45a 100644 --- a/CryoREAD/data_processing/Resize_Map.py +++ b/CryoREAD/data_processing/Resize_Map.py @@ -9,6 +9,10 @@ def my_reform_1a(input_mrc, output_mrc, use_gpu=False): with torch.no_grad() and torch.cuda.amp.autocast(enabled=use_gpu): with mrcfile.open(input_mrc, permissive=True) as orig_map: + + if np.allclose(orig_map.data, 0.0): + print("Input map is all zeros, exiting") + exit() orig_voxel_size = np.array([orig_map.voxel_size.x, orig_map.voxel_size.y, orig_map.voxel_size.z]) diff --git a/CryoREAD/main.py b/CryoREAD/main.py index 70492fd..bc6d87a 100644 --- a/CryoREAD/main.py +++ b/CryoREAD/main.py @@ -60,9 +60,11 @@ def init_save_path(origin_map_path): os.chdir(running_dir) from data_processing.Unify_Map import Unify_Map + print("Unifying map", cur_map_path, "to", os.path.join(save_path, map_name + "_unified.mrc")) cur_map_path = Unify_Map(cur_map_path, os.path.join(save_path, map_name + "_unified.mrc")) from data_processing.Resize_Map import Resize_Map + print("Resizing map", cur_map_path, "to", os.path.join(save_path, map_name + ".mrc")) cur_map_path = Resize_Map(cur_map_path, os.path.join(save_path, map_name + ".mrc")) if params["contour"] < 0: # change contour level to 0 and increase all the density diff --git a/main.py b/main.py index 53d43f9..d5e9376 100644 --- a/main.py +++ b/main.py @@ -71,9 +71,17 @@ break if err: logger.error(err.strip()) # Log stderr - - real_space_cc = calc_map_ccc(seg_map_path, prot_prob_path)[0] - x, fsc, cutoff_05, cutoff_0143 = calculate_fsc(seg_map_path, prot_prob_path) + try: + real_space_cc = calc_map_ccc(seg_map_path, prot_prob_path)[0] + except: + logger.warning("Failed to calculate real space CC, maybe the map is empty") + real_space_cc = 0.0 + + try: + x, fsc, cutoff_05, cutoff_0143 = calculate_fsc(seg_map_path, prot_prob_path) + except: + logger.warning("Failed to calculate FSC, maybe the map is empty") + cutoff_05 = 0.0 map_list.append([mrc_file, real_space_cc, cutoff_05]) map_list.sort(key=lambda x: x[1], reverse=True)