From 556de2c414cc6e8a6161a2bef74d36e3327a6744 Mon Sep 17 00:00:00 2001
From: leufen1 <l.leufen@fz-juelich.de>
Date: Mon, 10 Jan 2022 16:04:32 +0100
Subject: [PATCH] use either fir or clim fir filter for
 DataHandlerMixedSamplingWithClimateAndFirFilter depending if
 extend_length_opts is given or not

---
 mlair/data_handler/data_handler_mixed_sampling.py | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/mlair/data_handler/data_handler_mixed_sampling.py b/mlair/data_handler/data_handler_mixed_sampling.py
index 3de749d0..f83327db 100644
--- a/mlair/data_handler/data_handler_mixed_sampling.py
+++ b/mlair/data_handler/data_handler_mixed_sampling.py
@@ -306,11 +306,12 @@ class DataHandlerMixedSamplingWithClimateAndFirFilter(DataHandlerMixedSamplingWi
     # _requirements = list(set(data_handler.requirements() + data_handler_unfiltered.requirements()))
     # DEFAULT_FILTER_ADD_UNFILTERED = False
     data_handler_climate_fir = DataHandlerMixedSamplingWithClimateFirFilterSingleStation
-    data_handler_fir = DataHandlerMixedSamplingWithFirFilterSingleStation
+    data_handler_fir = (DataHandlerMixedSamplingWithFirFilterSingleStation,
+                        DataHandlerMixedSamplingWithClimateFirFilterSingleStation)
     data_handler = None
     data_handler_unfiltered = DataHandlerMixedSamplingSingleStation
-    _requirements = list(set(data_handler_climate_fir.requirements() + data_handler_fir.requirements() +
-                             data_handler_unfiltered.requirements()))
+    _requirements = list(set(data_handler_climate_fir.requirements() + data_handler_fir[0].requirements() +
+                             data_handler_fir[1].requirements() + data_handler_unfiltered.requirements()))
 
     def __init__(self, data_handler_class_chem, data_handler_class_meteo, data_handler_class_chem_unfiltered,
                  data_handler_class_meteo_unfiltered, chem_vars, meteo_vars, *args, **kwargs):
@@ -353,6 +354,7 @@ class DataHandlerMixedSamplingWithClimateAndFirFilter(DataHandlerMixedSamplingWi
             sp_keys.update({"variables": chem_vars})
             cls.adjust_window_opts("chem", "window_history_size", sp_keys)
             cls.adjust_window_opts("chem", "window_history_offset", sp_keys)
+            cls.adjust_window_opts("chem", "extend_length_opts", sp_keys)
             sp_chem = cls.data_handler_climate_fir(station, **sp_keys)
             if filter_add_unfiltered is True:
                 sp_keys = {k: copy.deepcopy(kwargs[k]) for k in cls.data_handler_unfiltered.requirements() if k in kwargs}
@@ -360,13 +362,19 @@ class DataHandlerMixedSamplingWithClimateAndFirFilter(DataHandlerMixedSamplingWi
                 sp_keys.update({"variables": chem_vars})
                 cls.adjust_window_opts("chem", "window_history_size", sp_keys)
                 cls.adjust_window_opts("chem", "window_history_offset", sp_keys)
+                cls.adjust_window_opts("chem", "extend_length_opts", sp_keys)
                 sp_chem_unfiltered = cls.data_handler_unfiltered(station, **sp_keys)
         if len(meteo_vars) > 0:
+            if "extend_length_opts" in kwargs:
+                cls.data_handler_fir = cls.data_handler_fir[1]  # use slower fir version with climate estimate
+            else:
+                cls.data_handler_fir = cls.data_handler_fir[0]  # use faster fir version without climate estimate
             sp_keys = {k: copy.deepcopy(kwargs[k]) for k in cls.data_handler_fir.requirements() if k in kwargs}
             sp_keys = cls.build_update_kwargs(sp_keys, dh_type="filtered_meteo")
             sp_keys.update({"variables": meteo_vars})
             cls.adjust_window_opts("meteo", "window_history_size", sp_keys)
             cls.adjust_window_opts("meteo", "window_history_offset", sp_keys)
+            cls.adjust_window_opts("meteo", "extend_length_opts", sp_keys)
             sp_meteo = cls.data_handler_fir(station, **sp_keys)
             if filter_add_unfiltered is True:
                 sp_keys = {k: copy.deepcopy(kwargs[k]) for k in cls.data_handler_unfiltered.requirements() if k in kwargs}
@@ -374,6 +382,7 @@ class DataHandlerMixedSamplingWithClimateAndFirFilter(DataHandlerMixedSamplingWi
                 sp_keys.update({"variables": meteo_vars})
                 cls.adjust_window_opts("meteo", "window_history_size", sp_keys)
                 cls.adjust_window_opts("meteo", "window_history_offset", sp_keys)
+                cls.adjust_window_opts("meteo", "extend_length_opts", sp_keys)
                 sp_meteo_unfiltered = cls.data_handler_unfiltered(station, **sp_keys)
 
         dp_args = {k: copy.deepcopy(kwargs[k]) for k in cls.own_args("id_class") if k in kwargs}
-- 
GitLab