From 1eaa7318a305930e7d10578d80b3eda7a902ab7e Mon Sep 17 00:00:00 2001 From: Noe Brucy Date: Tue, 14 Dec 2021 15:37:20 +0100 Subject: [PATCH] [study] fix stellar parsing --- studyprocessor.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/studyprocessor.py b/studyprocessor.py index 96ebc63..c86de6c 100644 --- a/studyprocessor.py +++ b/studyprocessor.py @@ -283,6 +283,9 @@ class StudyProcessor(Aggregator, HDF5Container): for j in range(nb_stellar[i]): line_stellar = logfile.readline().split() current_line += 1 + while line_stellar[0] == "random": # random number outputs are ... random + line_stellar = logfile.readline().split() + current_line += 1 mass = float(line_stellar[3]) time = float(line_stellar[4]) lifetime = float(line_stellar[5]) @@ -300,7 +303,6 @@ class StudyProcessor(Aggregator, HDF5Container): ), "WARNING", ) - raise logfile.close() return stellar_objects @@ -399,7 +401,7 @@ class StudyProcessor(Aggregator, HDF5Container): logs = glob.glob(glob_str) return logs - def _from_log(self, keys, extractor): + def _from_log(self, keys, extractor, unique=False): # Initialize series series = {} @@ -416,7 +418,15 @@ class StudyProcessor(Aggregator, HDF5Container): # Parse files for log_filename in log_files: + size = len(series["time"][run]) series = extractor(series, log_filename, run) + if unique: + # Always prefer data from last log, assuming they come in the right order + time = series["time"][run] + time_new = time[size] + ind_overlap = np.searchsorted(time[:size], time_new, side='right') + for key in series: + del series[key][run][ind_overlap:size] # Numpify the lists for key in series: