diff --git a/skais/ais/ais_points.py b/skais/ais/ais_points.py index 3d5758ebd99e17e446a472deef06950705e10720..34b0d8e06f829c800b06a92ce5b4930d94047862 100644 --- a/skais/ais/ais_points.py +++ b/skais/ais/ais_points.py @@ -44,6 +44,9 @@ class AISPoints: def normalize(self, min_max_features=(), standardization_features=(), third_quartile_features=(), divide_by_value=(), divide_by_max=(), normalization_dict=None): if normalization_dict is None: + if len(min_max_features) == len(standardization_features) == len(third_quartile_features) == len( + divide_by_value) == len(divide_by_max) == 0: + raise ValueError("All arguments are empty") normalization_dict = {} for f in min_max_features: if f in self.df.columns: @@ -94,7 +97,7 @@ class AISPoints: normalization_dict[f] = {'type': 'divide by max', 'maximum': maximum} self.df[f] = self.df[f] / maximum - else: + elif type(normalization_dict) == dict: for f in normalization_dict: if f in self.df.columns: if normalization_dict[f]['type'] == 'min-max': @@ -125,6 +128,8 @@ class AISPoints: raise ValueError( f"{normalization_dict[f]['type']} not a valid normalization method. Must be on of [min-max," f" standardization, 3rd quartile, divide by value]") + else: + raise ValueError("normalization_dict not a dictionary") return normalization_dict # New features diff --git a/skais/tests/ais/test_ais_points.py b/skais/tests/ais/test_ais_points.py index 330f039bd69e5c734480f6ed8bd6a687737364e4..5930a9c853330f2c8bb1d5939d33d0320385a7cc 100644 --- a/skais/tests/ais/test_ais_points.py +++ b/skais/tests/ais/test_ais_points.py @@ -216,6 +216,40 @@ class TestAISPositions(unittest.TestCase): pd.testing.assert_frame_equal(expected.reset_index(drop=True), result.reset_index(drop=True), check_exact=False, rtol=0.05) + def test_normalize_wrong_arguments_1(self): + ais_points = AISPoints(pd.DataFrame( + { + "cog": [i for i in range(0, 359, 10)], + "heading": [180 for _ in range(0, 359, 10)] + } + ) + ) + + with self.assertRaises(ValueError): + ais_points.normalize(normalization_dict=None) + + def test_normalize_wrong_arguments_2(self): + ais_points = AISPoints(pd.DataFrame( + { + "cog": [i for i in range(0, 359, 10)], + "heading": [180 for _ in range(0, 359, 10)] + } + ) + ) + with self.assertRaises(ValueError): + ais_points.normalize(normalization_dict=10) + + def test_normalize_wrong_arguments_3(self): + ais_points = AISPoints(pd.DataFrame( + { + "cog": [i for i in range(0, 359, 10)], + "heading": [180 for _ in range(0, 359, 10)] + } + ) + ) + with self.assertRaises(ValueError): + ais_points.normalize(normalization_dict=[0, 1, 2, 3, 4]) + def test_compute_drift(self): ais_points = AISPoints(pd.DataFrame( {