From 72b2ec35c95c47c30c585a13e4a657ba41258184 Mon Sep 17 00:00:00 2001 From: ValentinaHutter Date: Mon, 9 Sep 2024 11:32:04 +0200 Subject: [PATCH 1/4] allow quantiles with properties int --- openeo_processes_dask/process_implementations/math.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openeo_processes_dask/process_implementations/math.py b/openeo_processes_dask/process_implementations/math.py index 55e2d7c2..f01c6d6c 100644 --- a/openeo_processes_dask/process_implementations/math.py +++ b/openeo_processes_dask/process_implementations/math.py @@ -290,7 +290,14 @@ def quantiles( "The process `quantiles` only allows that either the `probabilities` or the `q` parameter is set." ) - if isinstance(probabilities, list): + if isinstance(probabilities, int) or ( + isinstance(probabilities, list) + and len(probabilities) == 1 + and isinstance(probabilities[0], int) + ): + probabilities = np.arange(1.0 / probabilities, 1, 1.0 / probabilities) + + elif isinstance(probabilities, list): probabilities = np.array(probabilities) if q is not None: From 5afc2f1be7502a1a3aa22cd50b3a151c7eb5cce1 Mon Sep 17 00:00:00 2001 From: ValentinaHutter Date: Mon, 9 Sep 2024 11:38:46 +0200 Subject: [PATCH 2/4] add warning for deprecated parameter --- openeo_processes_dask/process_implementations/math.py | 7 +++++++ tests/test_math.py | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/openeo_processes_dask/process_implementations/math.py b/openeo_processes_dask/process_implementations/math.py index f01c6d6c..d74149ef 100644 --- a/openeo_processes_dask/process_implementations/math.py +++ b/openeo_processes_dask/process_implementations/math.py @@ -1,3 +1,5 @@ +import logging + import dask import dask.array as da import numpy as np @@ -62,6 +64,8 @@ "normalized_difference", ] +logger = logging.getLogger(__name__) + def e(): return np.e @@ -301,6 +305,9 @@ def quantiles( probabilities = np.array(probabilities) if q is not None: + logger.warning( + "This parameter has been **deprecated**. Please use the parameter `probabilities` instead." + ) probabilities = np.arange(1.0 / q, 1, 1.0 / q) if data.size == 0: diff --git a/tests/test_math.py b/tests/test_math.py index 9eea0d1b..dedc68f2 100644 --- a/tests/test_math.py +++ b/tests/test_math.py @@ -13,10 +13,10 @@ def test_quantiles(): ) quantiles_1 = [_round(quantile, p=2) for quantile in quantiles_1] assert quantiles_1 == [2.07, 2.14, 2.28, 2.7, 3.4, 4.5] - quantiles_2 = quantiles(data=np.array([2, 4, 4, 4, 5, 5, 7, 9]), q=4) + quantiles_2 = quantiles(data=np.array([2, 4, 4, 4, 5, 5, 7, 9]), probabilities=4) quantiles_2 = [_round(quantile, p=2) for quantile in quantiles_2] assert quantiles_2 == [4, 4.5, 5.5] - quantiles_3 = quantiles(data=np.array([-1, -0.5, np.nan, 1]), q=2) + quantiles_3 = quantiles(data=np.array([-1, -0.5, np.nan, 1]), probabilities=2) quantiles_3 = [_round(quantile, p=2) for quantile in quantiles_3] assert quantiles_3 == [-0.5] quantiles_4 = quantiles( From db30384bca668e6e6eaa026f8d5606da3beff391 Mon Sep 17 00:00:00 2001 From: ValentinaHutter Date: Mon, 9 Sep 2024 11:40:09 +0200 Subject: [PATCH 3/4] update tests --- tests/test_math.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_math.py b/tests/test_math.py index dedc68f2..93f1037f 100644 --- a/tests/test_math.py +++ b/tests/test_math.py @@ -16,7 +16,7 @@ def test_quantiles(): quantiles_2 = quantiles(data=np.array([2, 4, 4, 4, 5, 5, 7, 9]), probabilities=4) quantiles_2 = [_round(quantile, p=2) for quantile in quantiles_2] assert quantiles_2 == [4, 4.5, 5.5] - quantiles_3 = quantiles(data=np.array([-1, -0.5, np.nan, 1]), probabilities=2) + quantiles_3 = quantiles(data=np.array([-1, -0.5, np.nan, 1]), probabilities=[2]) quantiles_3 = [_round(quantile, p=2) for quantile in quantiles_3] assert quantiles_3 == [-0.5] quantiles_4 = quantiles( From 2768322108572753128e80e807cd73956e690c2d Mon Sep 17 00:00:00 2001 From: ValentinaHutter Date: Mon, 9 Sep 2024 11:56:07 +0200 Subject: [PATCH 4/4] fix bug --- openeo_processes_dask/process_implementations/math.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openeo_processes_dask/process_implementations/math.py b/openeo_processes_dask/process_implementations/math.py index d74149ef..e8d8b31b 100644 --- a/openeo_processes_dask/process_implementations/math.py +++ b/openeo_processes_dask/process_implementations/math.py @@ -294,12 +294,15 @@ def quantiles( "The process `quantiles` only allows that either the `probabilities` or the `q` parameter is set." ) - if isinstance(probabilities, int) or ( + if isinstance(probabilities, int): + probabilities = np.arange(1.0 / probabilities, 1, 1.0 / probabilities) + + elif ( isinstance(probabilities, list) and len(probabilities) == 1 and isinstance(probabilities[0], int) ): - probabilities = np.arange(1.0 / probabilities, 1, 1.0 / probabilities) + probabilities = np.arange(1.0 / probabilities[0], 1, 1.0 / probabilities[0]) elif isinstance(probabilities, list): probabilities = np.array(probabilities)