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