From a6a067be82a4e0f1e0eaa7e4620fade3f4d40a73 Mon Sep 17 00:00:00 2001 From: David Keitel <david.keitel@ligo.org> Date: Fri, 14 Jul 2017 11:02:56 +0100 Subject: [PATCH] add SFT-vs-output timestamp check to gridsearch, and fix bug in _get_list_of_matching_sfts -ported check from MCMC search -bug: for single-str SFT path, glob list comprehension was trying every single character --- pyfstat/core.py | 5 ++++- pyfstat/grid_based_searches.py | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pyfstat/core.py b/pyfstat/core.py index 7ee28da..0809f68 100755 --- a/pyfstat/core.py +++ b/pyfstat/core.py @@ -165,7 +165,10 @@ class BaseSearchClass(object): return thetas def _get_list_of_matching_sfts(self): - matches = [glob.glob(p) for p in self.sftfilepath] + # first make sure we have a list of paths, to avoid + # list comprehension trying to glob each single character + sftfilepathlist = np.atleast_1d(self.sftfilepath) + matches = [glob.glob(p) for p in sftfilepathlist] matches = [item for sublist in matches for item in sublist] if len(matches) > 0: return matches diff --git a/pyfstat/grid_based_searches.py b/pyfstat/grid_based_searches.py index 000d8ad..f33f720 100644 --- a/pyfstat/grid_based_searches.py +++ b/pyfstat/grid_based_searches.py @@ -106,6 +106,13 @@ class GridSearch(BaseSearchClass): if os.path.isfile(self.out_file) is False: logging.info('No old data found, continuing with grid search') return False + if self.sftfilepath is not None: + oldest_sft = min([os.path.getmtime(f) for f in + self._get_list_of_matching_sfts()]) + if os.path.getmtime(self.out_file) < oldest_sft: + logging.info('Search output data outdates sft files,' + + ' continuing with grid search') + return False data = np.atleast_2d(np.genfromtxt(self.out_file, delimiter=' ')) if np.all(data[:, 0:-1] == self.input_data): logging.info( -- GitLab