From 77b9f6e8a29f211036182a93a1648fd8db158f76 Mon Sep 17 00:00:00 2001 From: MothNik Date: Tue, 21 May 2024 00:48:07 +0200 Subject: [PATCH] test/refactor: included `power` failure into wrong input test of noise estimation; restructured reference finite difference kernels --- tests/fixtures.py | 6 ++- .../reference_forward_differences.csv} | 0 .../test_for_utils/test_finite_differences.py | 42 +++++++++++++++++-- 3 files changed, 43 insertions(+), 5 deletions(-) rename tests/resources/{reference_finite_differences.csv => finite_differences/reference_forward_differences.csv} (100%) diff --git a/tests/fixtures.py b/tests/fixtures.py index 29fe6ed..0ee4646 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -134,8 +134,12 @@ def noise_level_whittaker_auto_lambda() -> np.ndarray: @pytest.fixture def reference_forward_finite_differences() -> List[RefDifferenceKernel]: + fpath = os.path.join( + path_to_resources, + "./finite_differences/reference_forward_differences.csv", + ) fin_diff_table = np.genfromtxt( - os.path.join(path_to_resources, "reference_finite_differences.csv"), + fpath, skip_header=2, delimiter=",", filling_values=np.nan, diff --git a/tests/resources/reference_finite_differences.csv b/tests/resources/finite_differences/reference_forward_differences.csv similarity index 100% rename from tests/resources/reference_finite_differences.csv rename to tests/resources/finite_differences/reference_forward_differences.csv diff --git a/tests/test_for_utils/test_finite_differences.py b/tests/test_for_utils/test_finite_differences.py index 06f8786..c3428b5 100644 --- a/tests/test_for_utils/test_finite_differences.py +++ b/tests/test_for_utils/test_finite_differences.py @@ -152,13 +152,14 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( @pytest.mark.parametrize( - "series, differences, accuracy, window_size, stddev_min", + "series, differences, accuracy, window_size, power, stddev_min", [ ( # Number 0 series is too small for difference kernel np.arange(start=0, stop=5), 10, 2, 3, + 1, 1e-10, ), ( # Number 1 series is too small for difference kernel @@ -166,6 +167,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 10, 2, None, + 1, 1e-10, ), ( # Number 2 series is too small for window size @@ -173,6 +175,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 1, 2, 11, + 1, 1e-10, ), ( # Number 3 the difference order is 0 @@ -180,6 +183,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 0, 2, 3, + 1, 1e-10, ), ( # Number 4 the difference order is negative @@ -187,6 +191,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( -1, 2, 3, + 1, 1e-10, ), ( # Number 5 the accuracy is odd @@ -194,6 +199,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 2, 3, 3, + 1, 1e-10, ), ( # Number 6 the accuracy is odd @@ -201,6 +207,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 2, 5, 3, + 1, 1e-10, ), ( # Number 7 the accuracy is 1 @@ -208,6 +215,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 2, 1, 3, + 1, 1e-10, ), ( # Number 8 the accuracy is 0 @@ -215,6 +223,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 2, 0, 3, + 1, 1e-10, ), ( # Number 9 the accuracy is negative @@ -222,6 +231,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 2, -1, 3, + 1, 1e-10, ), ( # Number 10 the window size is even @@ -229,6 +239,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 1, 2, 6, + 1, 1e-10, ), ( # Number 11 the window size is 0 @@ -236,6 +247,7 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 1, 2, 0, + 1, 1e-10, ), ( # Number 12 the window size is negative @@ -243,20 +255,39 @@ def test_squ_fw_fin_diff_mat_cho_banded_transpose_first( 1, 2, -1, + 1, + 1e-10, + ), + ( # Number 13 the power is -3 + np.arange(start=0, stop=10), + 1, + 2, + 3, + -3, + 1e-10, + ), + ( # Number 14 the power is 3 + np.arange(start=0, stop=10), + 1, + 2, + 3, + 3, 1e-10, ), - ( # Number 13 the minimum standard deviation is zero + ( # Number 15 the minimum standard deviation is zero np.arange(start=0, stop=5), 1, 2, 3, + 1, 0.0, ), - ( # Number 14 the minimum standard deviation is negative + ( # Number 16 the minimum standard deviation is negative np.arange(start=0, stop=5), 1, 2, 3, + 1, -10.0, ), ], @@ -266,6 +297,7 @@ def test_estimate_noise_stddev_invalid_input( differences: int, accuracy: int, window_size: Optional[int], + power: int, stddev_min: float, ) -> None: """ @@ -276,7 +308,8 @@ def test_estimate_noise_stddev_invalid_input( - the series length, - the difference order, - the accuracy, - - the window size, and + - the window size, + - the power to which the noise level is raised, and - the minimum standard deviation are chosen such that the input is invalid. @@ -289,6 +322,7 @@ def test_estimate_noise_stddev_invalid_input( differences=differences, diff_accuracy=accuracy, window_size=window_size, + power=power, # type: ignore stddev_min=stddev_min, )