diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py index 0842f98c745b18352a99f85e35ed40451b10eafd..ce42ef77a0af3009c7555b888f93097c78fdbf4a 100644 --- a/modules/aeolus/aeolus_amv.py +++ b/modules/aeolus/aeolus_amv.py @@ -28,7 +28,8 @@ class AMVFiles: self.flist = glob.glob(files_path + pattern) self.band = band self.ftimes = [] - for pname in self.flist: # TODO: make better with regular expressions (someday) + self.span_seconds = datetime.timedelta(minutes=file_time_span).seconds + for pname in self.flist: dto = self.get_datetime(pname) dto_start = dto dto_end = dto + datetime.timedelta(minutes=file_time_span) @@ -47,14 +48,22 @@ class AMVFiles: def get_file_containing_time(self, timestamp): k = -1 - for i in range(len(self.ftimes)): - if (timestamp >= self.ftimes[i][0]) and (timestamp < self.ftimes[i][1]): + for i in range(len(self.ftimes.shape[0])): + if (timestamp >= self.ftimes[i, 0]) and (timestamp < self.ftimes[i, 1]): k = i break if k < 0: return None, None, None - return self.flist[k], self.ftimes[k], k + return self.flist[k], self.ftimes[k, 0], k + + def get_file(self, timestamp): + diff = self.ftimes[:, 0] - timestamp + midx = np.argmin(np.abs(diff)) + if np.abs(self.ftimes[midx, 0] - timestamp) < self.span_seconds: + return self.flist[midx], self.ftimes[midx, 0], midx + else: + return None, None, None def get_parameters(self): pass @@ -172,7 +181,7 @@ def match_amvs_to_raobs(raob_dict, raob_time, amv_files, filepath=None): match_dict = {} if filepath is None: - filepath, ftime, f_idx = amv_files.get_file_containing_time(raob_time) + filepath, ftime, f_idx = amv_files.get_file(raob_time) ds = Dataset(filepath)