@@ -229,6 +229,13 @@ def __init__(
229229 self .pickle_cache .merge_and_load (output_dict = self .results )
230230 # Load the background trials. Will override the existing one.
231231 self .pickle_cache_bg .merge_and_load (output_dict = self .results )
232+ if not self .results :
233+ logger .warning ("No data was found by ResultsHandler object! \n " )
234+ logger .warning (
235+ "Tried root directory: \n {0} \n " .format (self .pickle_output_dir )
236+ )
237+ sys .exit ()
238+
232239 except FileNotFoundError :
233240 logger .warning (f"No files found at { self .pickle_output_dir } " )
234241
@@ -415,79 +422,6 @@ def load_injection_values(self):
415422
416423 return inj_values
417424
418- def merge_and_load_pickle_data (self ):
419- # NOTE:
420- # self.pickle_output_path
421- # self.merged_dir = self.pickle_output_path / "merged"
422-
423- # Loop over all subdirectories, one for each injection scale, containing one pickle per trial.
424- all_sub_dirs = [
425- x for x in os .listdir (self .path ) if x [0 ] != "." and x != "merged"
426- ]
427- # Create a "merged" directory, that will contain a single pickle with many trials per injection scale.
428- try :
429- os .makedirs (self .merged_dir )
430- except OSError :
431- pass
432-
433- for sub_dir_name in all_sub_dirs :
434- sub_dir = os .path .join (self .path , sub_dir_name )
435-
436- files = os .listdir (sub_dir )
437-
438- # Map one dir to one pickle
439- merged_path = os .path .join (self .merged_dir , sub_dir_name + ".pkl" )
440- # Load previously merged data, if it exists.
441- if os .path .isfile (merged_path ):
442- logger .debug (f"loading merged data from { merged_path } " )
443- with open (merged_path , "rb" ) as mp :
444- merged_data = Pickle .load (mp )
445- else :
446- merged_data = {}
447-
448- for filename in files :
449- pending_file = os .path .join (sub_dir , filename )
450-
451- try :
452- with open (pending_file , "rb" ) as f :
453- data = Pickle .load (f )
454- except (EOFError , IsADirectoryError ):
455- logger .warning ("Failed loading: {0}" .format (pending_file ))
456- continue
457- # This can be "dangerous" because if the program crashes or gets terminated, we will have removed files before writing the merged data.
458- os .remove (pending_file )
459-
460- if merged_data == {}:
461- merged_data = data
462- else :
463- for key , info in data .items ():
464- if isinstance (info , list ):
465- merged_data [key ] += info
466- else :
467- for param_name , params in info .items ():
468- try :
469- merged_data [key ][param_name ] += params
470- except KeyError as m :
471- logger .warning (
472- f"Keys [{ key } ][{ param_name } ] not found in \n { merged_data } "
473- )
474- raise KeyError (m )
475-
476- # Save merged data.
477- with open (merged_path , "wb" ) as mp :
478- Pickle .dump (merged_data , mp )
479-
480- # Load merged data in results.
481- if merged_data :
482- self .results [scale_shortener (float (sub_dir_name ))] = merged_data
483-
484- if not self .results :
485- logger .warning ("No data was found by ResultsHandler object! \n " )
486- logger .warning (
487- "Tried root directory: \n {0} \n " .format (self .pickle_output_dir )
488- )
489- sys .exit ()
490-
491425 def find_ns_scale (self ):
492426 """Find the number of neutrinos corresponding to flux"""
493427 try :
0 commit comments