From ed2288c19b850245ef10e12f81c8b6b1e9d6312a Mon Sep 17 00:00:00 2001 From: leufen1 <l.leufen@fz-juelich.de> Date: Thu, 13 Jan 2022 17:38:02 +0100 Subject: [PATCH] plots also fixed for now, refac required to remove comments and todos --- mlair/helpers/filter.py | 30 ++++++++++++------------- mlair/plotting/data_insight_plotting.py | 6 +++-- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/mlair/helpers/filter.py b/mlair/helpers/filter.py index 3a67accd..3e93ebc6 100644 --- a/mlair/helpers/filter.py +++ b/mlair/helpers/filter.py @@ -245,11 +245,7 @@ class ClimateFIRFilter(FIRFilter): offset=self.offset, next_order=next_order) logging.info(f"{self.station_name}: finished clim_filter calculation") - # if self.minimum_length is None: #todo does slice(None,None) work? if yes this could be changed to slice(-self.minimum_length, self.offset) - # filtered.append(fi) - # else: - # filtered.append(fi.sel({new_dim: slice(-self.minimum_length, None)})) - if self.minimum_length is None: # todo does slice(None,None) work? if yes this could be changed to slice(-self.minimum_length, self.offset) + if self.minimum_length is None: filtered.append(fi.sel({new_dim: slice(None, self.offset)})) else: filtered.append(fi.sel({new_dim: slice(self.offset - self.minimum_length, self.offset)})) @@ -285,12 +281,9 @@ class ClimateFIRFilter(FIRFilter): else: raise ValueError(f"Cannot handle unkown apriori type: {self.apriori_type}. Please choose from None," f" `zeros` or `residuum_stats`.") + # add last residuum to filtered - # if self.minimum_length is None: #todo does slice(None,None) work? if yes this could be changed to slice(-self.minimum_length, self.offset) - # filtered.append(input_data) - # else: - # filtered.append(input_data.sel({new_dim: slice(-self.minimum_length, None)})) - if self.minimum_length is None: # todo does slice(None,None) work? if yes this could be changed to slice(-self.minimum_length, self.offset) + if self.minimum_length is None: filtered.append(input_data.sel({new_dim: slice(None, self.offset)})) else: filtered.append(input_data.sel({new_dim: slice(self.offset - self.minimum_length, self.offset)})) @@ -585,17 +578,24 @@ class ClimateFIRFilter(FIRFilter): # t0 = viz_date + np.timedelta64(int(offset), td_type) t0 = viz_date # offset should be irrelevant for visualization t_minus = viz_date + np.timedelta64(int(-extend_length_history), td_type) - t_plus = t0 + np.timedelta64(int(extend_length_future + extend_length_opts), td_type) + t_plus = t0 + np.timedelta64(int(extend_length_future + 1), td_type) + # t_plus = t0 + np.timedelta64(int(extend_length_future + extend_length_opts), td_type) if new_dim not in data.coords: + # tmp_filter_data = self._shift_data(data.sel({time_dim: slice(t_minus, t_plus)}), + # range(int(-extend_length_history), + # int(extend_length_future + extend_length_opts)), + # time_dim, + # new_dim).sel({time_dim: viz_date}) tmp_filter_data = self._shift_data(data.sel({time_dim: slice(t_minus, t_plus)}), range(int(-extend_length_history), - int(extend_length_future + extend_length_opts)), + int(extend_length_future + 1)), time_dim, new_dim).sel({time_dim: viz_date}) else: tmp_filter_data = None - valid_range = range(-int((len(h) + 1) / 2) if minimum_length is None else -minimum_length, - extend_length_opts + 1) + valid_start = int(filtered.window.min()) + int((len(h) + 1) / 2) + valid_end = min(extend_length_opts + offset + 1, int(filtered.window.max()) - int((len(h) + 1) / 2)) + valid_range = range(valid_start, valid_end) plot_data.append({"t0": t0, "viz_date": viz_date, "var": variable_name, @@ -766,7 +766,7 @@ class ClimateFIRFilter(FIRFilter): # visualization plot_data.extend(self.create_visualization(filt, d, filter_input_data, plot_dates, time_dim, new_dim, sampling, extend_length_history, extend_length_future, - minimum_length, h, var, extend_opts, 0)) + minimum_length, h, var, extend_opts, offset)) # collect all filter results coll.append(xr.concat(filt_coll, time_dim)) diff --git a/mlair/plotting/data_insight_plotting.py b/mlair/plotting/data_insight_plotting.py index b8a31fa1..2048f4c2 100644 --- a/mlair/plotting/data_insight_plotting.py +++ b/mlair/plotting/data_insight_plotting.py @@ -1076,8 +1076,10 @@ class PlotClimateFirFilter(AbstractPlotClass): # pragma: no cover Use order and valid_range to find a good zoom in that hides edges of filter values that are effected by reduced filter order. Limits are returned to be usable for other plots. """ - t_minus_delta = max(1.5 * (valid_range.stop - valid_range.start), 0.3 * order) - t_plus_delta = max(0.5 * (valid_range.stop - valid_range.start), 0.3 * order) + # t_minus_delta = -(valid_range.start - 0.5 * order) + # t_plus_delta = valid_range.stop + 0.5 * order + t_minus_delta = max(min(2 * (valid_range.stop - valid_range.start), 0.5 * order), -valid_range.start) + t_plus_delta = max(min(2 * (valid_range.stop - valid_range.start), 0.5 * order), valid_range.stop) t_minus = t0 + np.timedelta64(-int(t_minus_delta), td_type) t_plus = t0 + np.timedelta64(int(t_plus_delta), td_type) ax_start = max(t_minus, time_axis[0]) -- GitLab