From c7b75f3e6a0b018b6cb711f09a4bfc8bb1a3c774 Mon Sep 17 00:00:00 2001 From: leufen1 <l.leufen@fz-juelich.de> Date: Tue, 18 May 2021 14:28:26 +0200 Subject: [PATCH] filter plots different seasons, filter returns data with missing values now (not squeezed version) --- mlair/helpers/filter.py | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/mlair/helpers/filter.py b/mlair/helpers/filter.py index b26b616f..b77a5910 100644 --- a/mlair/helpers/filter.py +++ b/mlair/helpers/filter.py @@ -230,13 +230,16 @@ class ClimateFIRFilter: # create new time axis factor = 1 if td_type == "D" else 24 start = coords[time_dim][-1].values.astype("datetime64[%s]" % td_type) - end = coords[time_dim][-1].values.astype("datetime64[%s]" % td_type) + np.timedelta64(extend_range * factor, - td_type) + end = coords[time_dim][-1].values.astype("datetime64[%s]" % td_type) + np.timedelta64( + extend_range * factor + 1, + td_type) new_time_axis = np.arange(start, end).astype("datetime64[ns]") # extract old values to use with new axis start = coords[time_dim][-1].values.astype("datetime64[%s]" % td_type) - np.timedelta64( - extend_range * factor - 1, td_type) + extend_range * factor, td_type) + # start = coords[time_dim][-1].values.astype("datetime64[%s]" % td_type) - np.timedelta64( + # extend_range * factor, td_type) end = coords[time_dim][-1].values.astype("datetime64[%s]" % td_type) new_values = apriori.sel({time_dim: slice(start, end)}) new_values.coords[time_dim] = new_time_axis @@ -331,19 +334,24 @@ class ClimateFIRFilter: # plot if self.plot_path is not None: - try: - pos = 720 * fs - filter_example = filter_input_data.isel({time_dim: pos}) - t0 = filter_example.coords[time_dim].values - t_slice = filter_input_data.isel( - {time_dim: slice(pos - int((length - 1) / 2), pos + int((length - 1) / 2) + 1)}).coords[ - time_dim].values - self.plot(data, filter_example, var_dim, time_dim, t_slice, t0, plot_index) - except IndexError: - pass + for i, time_pos in enumerate([0.25, 1.5, 2.75, 4]): # [0.25, 1.5, 2.75, 4] x 365 days + try: + pos = int(time_pos * 365 * fs) + filter_example = filter_input_data.isel({time_dim: pos}) + t0 = filter_example.coords[time_dim].values + t_slice = filter_input_data.isel( + {time_dim: slice(pos - int((length - 1) / 2), pos + int((length - 1) / 2) + 1)}).coords[ + time_dim].values + self.plot(data, filter_example, var_dim, time_dim, t_slice, t0, f"{plot_index}_{i}") + except IndexError: + pass # select only values at tmp dimension 0 at each point in time - return filt.sel({new_dim: 0}, drop=True), h, apriori + res = filt.sel({new_dim: 0}, drop=True) + # create result array with same shape like input data, gabs are filled by nans + res_full = xr.ones_like(data) * np.nan + res_full.loc[res.coords] = res + return res_full, h, apriori @staticmethod def _create_tmp_dimension(data): -- GitLab