diff --git a/mlair/data_handler/default_data_handler.py b/mlair/data_handler/default_data_handler.py index d0ee9d0a65b34d5751bf4e33bf14f013417cd0fa..9be2f87fe8b2e18e9eff7ff27b15d02c89a0c76e 100644 --- a/mlair/data_handler/default_data_handler.py +++ b/mlair/data_handler/default_data_handler.py @@ -168,13 +168,15 @@ class DefaultDataHandler(AbstractDataHandler): def apply_oversampling(self, bin_edges, oversampling_rates, timedelta: Tuple[int, str] = (1, 's'), timedelta2: Tuple[int, str] = (1, 'ms')): self._load() + self._X_extreme = None + self._X_extreme = None if (self._X is None) or (self._Y is None): logging.debug(f"{str(self.id_class)} has no data for X or Y, skip multiply extremes") return Y = self._Y X = self._X - complete_extremes_X_list = [] - complete_extremes_Y_list = [] + #complete_extremes_X_list = [] + #complete_extremes_Y_list = [] for i_bin in range(len(bin_edges)-1): bin_start = bin_edges[i_bin] if i_bin == len(bin_edges) - 1: @@ -188,8 +190,8 @@ class DefaultDataHandler(AbstractDataHandler): extreme_idx = xr.concat([(Y >= bin_start).any(dim=other_dims[0]), (Y < bin_end).any(dim=other_dims[0])], dim=other_dims[0]).all(dim=other_dims[0]) - extremes_X_list =[] - extremes_Y_list = [] + #extremes_X_list =[] + #extremes_Y_list = [] for i in range(np.ceil(rate).astype(int)): sel = extreme_idx.coords[self.time_dim].values if rate-i < 1: @@ -200,12 +202,18 @@ class DefaultDataHandler(AbstractDataHandler): self._add_timedelta(extremes_X, self.time_dim, (i_bin, timedelta2[1])) extremes_Y = Y.sel(**{self.time_dim: sel}) extremes_Y.coords[self.time_dim] = extremes_Y.coords[self.time_dim].values + i*np.timedelta64(*timedelta) + i_bin*np.timedelta64(*timedelta2) - extremes_X_list.append(extremes_X) - extremes_Y_list.append(extremes_Y) - - complete_extremes_X_list.append(extremes_X_list) - complete_extremes_Y_list.append(extremes_Y_list) - + if (self._X_extreme is None) or (self._Y_extreme is None): + self._X_extreme = extremes_X + self._Y_extreme = extremes_Y + else: + self._X_extreme = list(map(lambda x1, x2: xr.concat([x1, x2], dim=self.time_dim), self._X_extreme, extremes_X)) + self._Y_extreme = xr.concat([self._Y_extreme, extremes_Y], dim=self.time_dim) + #extremes_X_list.append(extremes_X) + #extremes_Y_list.append(extremes_Y) + + #complete_extremes_X_list.append(extremes_X_list) + #complete_extremes_Y_list.append(extremes_Y_list) + test = 0 #Convert complete_extremes_X_list (list of lists of xarrays) into xarray and give it to self._X_extreme #self._X_extreme = [[xr.concat(X_list, dim=self.time_dim) for X_list in complete_X_list] for complete_X_list in complete_extremes_X_list] #self._Y_extreme = [[xr.concat(Y_list, dim=self.time_dim) for Y_list in complete_Y_list] for complete_Y_list in complete_extremes_Y_list]