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