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