From f4e6a50ad6975b3a650b019a859ce9a1f330b1a5 Mon Sep 17 00:00:00 2001
From: lukas leufen <l.leufen@fz-juelich.de>
Date: Tue, 4 Feb 2020 16:29:45 +0100
Subject: [PATCH] added small check for var and stat

---
 src/run_modules/experiment_setup.py        | 12 ++++++++++++
 test/test_modules/test_experiment_setup.py | 11 +++++++++++
 2 files changed, 23 insertions(+)

diff --git a/src/run_modules/experiment_setup.py b/src/run_modules/experiment_setup.py
index 8542f57a..9ecc421b 100644
--- a/src/run_modules/experiment_setup.py
+++ b/src/run_modules/experiment_setup.py
@@ -67,6 +67,7 @@ class ExperimentSetup(RunEnvironment):
         self._set_param("station_type", station_type, default=None)
         self._set_param("variables", variables, default=list(self.data_store.get("var_all_dict", "general").keys()))
         self._set_param("statistics_per_var", statistics_per_var, default=self.data_store.get("var_all_dict", "general"))
+        self._compare_variables_and_statistics()
         self._set_param("start", start, default="1997-01-01", scope="general")
         self._set_param("end", end, default="2017-12-31", scope="general")
         self._set_param("window_history_size", window_history_size, default=13)
@@ -122,6 +123,17 @@ class ExperimentSetup(RunEnvironment):
         else:
             return {}
 
+    def _compare_variables_and_statistics(self):
+
+        logging.debug("check if all variables are included in statistics_per_var")
+        var = self.data_store.get("variables", "general")
+        stat = self.data_store.get("statistics_per_var", "general")
+        if not set(var).issubset(stat.keys()):
+            missing = set(var).difference(stat.keys())
+            raise ValueError(f"Comparison of given variables and statistics_per_var show that not all requested "
+                             f"variables are part of statistics_per_var. Please add also information on the missing "
+                             f"statistics for the variables: {missing}")
+
 
 if __name__ == "__main__":
 
diff --git a/test/test_modules/test_experiment_setup.py b/test/test_modules/test_experiment_setup.py
index 4a2ba9f9..08062f4c 100644
--- a/test/test_modules/test_experiment_setup.py
+++ b/test/test_modules/test_experiment_setup.py
@@ -149,3 +149,14 @@ class TestExperimentSetup:
         assert data_store.get("end", "general.test") == "2000-01-06"
         # use all stations on all data sets (train, val, test)
         assert data_store.get("use_all_stations_on_all_data_sets", "general.test") is False
+
+    def test_compare_variables_and_statistics(self):
+        kwargs = dict(parser_args={"experiment_date": "TODAY"},
+                      var_all_dict={'o3': 'dma8eu', 'temp': 'maximum'},
+                      stations=['DEBY053', 'DEBW059', 'DEBW027'], variables=["o3", "relhum"], statistics_per_var=None)
+        with pytest.raises(ValueError) as e:
+            ExperimentSetup(**kwargs)
+        assert "for the variables: {'relhum'}" in e.value.args[0]
+
+        kwargs["variables"] = ["o3", "temp"]
+        assert ExperimentSetup(**kwargs) is not None
-- 
GitLab