diff --git a/src/data_handling/data_preparation.py b/src/data_handling/data_preparation.py index 490d661195aa017113f705da7b2e1e896e55fdc1..bce7bfe81aa8f55273f86402d4058498bbb12dcb 100644 --- a/src/data_handling/data_preparation.py +++ b/src/data_handling/data_preparation.py @@ -447,6 +447,12 @@ class DataPrep(object): if True only extract values larger than extreme_values :param timedelta: used as arguments for np.timedelta in order to mark extreme values on datetime """ + + # check if labels or history is None + if (self.label is None) or (self.history is None): + logging.debug(f"{self.station} has `None' labels, skip multiply extremes") + return + # check type if inputs extreme_values = helpers.to_list(extreme_values) for i in extreme_values: diff --git a/test/test_data_handling/test_data_preparation.py b/test/test_data_handling/test_data_preparation.py index 71f3a1d6a0a675a155b517901aef1f3c359b104b..747b3734f565d3206696998de10f5986b7c94bf0 100644 --- a/test/test_data_handling/test_data_preparation.py +++ b/test/test_data_handling/test_data_preparation.py @@ -427,6 +427,9 @@ class TestDataPrep: assert f(upsampled, lt, -1) == sum([f(orig, lt, -1), f(orig, lt, -1.5), f(orig, lt, -2) * 2, f(orig, lt, -3) * 4]) def test_multiply_extremes_wrong_extremes(self, data): + data.transform("datetime") + data.make_history_window("variables", 3, "datetime") + data.make_labels("variables", "o3", "datetime", 2) with pytest.raises(TypeError) as e: data.multiply_extremes([1, "1.5", 2]) assert "Elements of list extreme_values have to be (<class 'float'>, <class 'int'>), but at least element 1.5" \ @@ -445,6 +448,23 @@ class TestDataPrep: assert upsampled.shape[2] == sum([f(orig, gt, 1), f(orig, gt, 2)]) assert f(upsampled, lt, -1) == 0 + def test_multiply_extremes_none_label(self, data): + data.transform("datetime") + data.make_history_window("variables", 3, "datetime") + data.label = None + assert data.multiply_extremes([1], extremes_on_right_tail_only=False) is None + + def test_multiply_extremes_none_history(self,data ): + data.transform("datetime") + data.history = None + data.make_labels("variables", "o3", "datetime", 2) + assert data.multiply_extremes([1], extremes_on_right_tail_only=False) is None + + def test_multiply_extremes_none_label_history(self,data ): + data.history = None + data.label = None + assert data.multiply_extremes([1], extremes_on_right_tail_only=False) is None + def test_get_extremes_history(self, data): data.transform("datetime") data.make_history_window("variables", 3, "datetime")