From 20f2977c7cd5697b63c5edbbe71c6229b5ac2f45 Mon Sep 17 00:00:00 2001 From: Masayuki Takagi Date: Fri, 21 Jun 2024 15:03:07 +0900 Subject: [PATCH] Merge pull request #8343 from ev-br/upd_rbf_tests MAINT: interpolate: update RBF to scipy 1.13 --- cupyx/scipy/interpolate/_rbfinterp.py | 2 +- .../scipy_tests/interpolate_tests/test_rbfinterp.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cupyx/scipy/interpolate/_rbfinterp.py b/cupyx/scipy/interpolate/_rbfinterp.py index f461fb53344..e3eb775e257 100644 --- a/cupyx/scipy/interpolate/_rbfinterp.py +++ b/cupyx/scipy/interpolate/_rbfinterp.py @@ -640,7 +640,7 @@ def __init__(self, y, d, degree = int(degree) if degree < -1: raise ValueError("`degree` must be at least -1.") - elif degree < min_degree: + elif -1 < degree < min_degree: warnings.warn( f"`degree` should not be below {min_degree} when `kernel` " f"is '{kernel}'. The interpolant may not be uniquely " diff --git a/tests/cupyx_tests/scipy_tests/interpolate_tests/test_rbfinterp.py b/tests/cupyx_tests/scipy_tests/interpolate_tests/test_rbfinterp.py index 7b73d2e1722..337ec55ad42 100644 --- a/tests/cupyx_tests/scipy_tests/interpolate_tests/test_rbfinterp.py +++ b/tests/cupyx_tests/scipy_tests/interpolate_tests/test_rbfinterp.py @@ -384,7 +384,8 @@ def test_not_enough_observations_error(self, xp, scp): @testing.with_requires("scipy<1.13") @testing.numpy_cupy_allclose(scipy_name='scp', accept_error=UserWarning) @pytest.mark.parametrize('kernel', - [kl for kl in _NAME_TO_MIN_DEGREE]) + [kl for kl in _NAME_TO_MIN_DEGREE + if _NAME_TO_MIN_DEGREE[kl] >= 1]) def test_degree_warning(self, xp, scp, kernel): y = xp.linspace(0, 1, 5)[:, None] d = xp.zeros(5) @@ -393,6 +394,15 @@ def test_degree_warning(self, xp, scp, kernel): warnings.simplefilter("error") self.build(scp, y, d, epsilon=1.0, kernel=kernel, degree=deg-1) + @pytest.mark.parametrize('kernel', [kl for kl in _NAME_TO_MIN_DEGREE]) + @testing.numpy_cupy_allclose(scipy_name='scp') + def test_minus_one_degree(self, xp, scp, kernel): + # Make sure a degree of -1 is accepted without any warning. + y = xp.linspace(0, 1, 5)[:, None] + d = xp.zeros(5) + f = self.build(scp, y, d, epsilon=1.0, kernel=kernel, degree=-1) + return f(y) + @testing.numpy_cupy_allclose(scipy_name='scp', accept_error=LinAlgError) def test_rank_error(self, xp, scp): # An error should be raised when `kernel` is "thin_plate_spline" and