Skip to content

Commit

Permalink
BUG: interpolate: Fix wrong warning message if degree=-1 in `interpol…
Browse files Browse the repository at this point in the history
…ate.RBFInterpolator` (#20364)

* BUG: optimize: Fix wrong warning message if degree=-1 in interpolate.RBFInterpolator

* BUG: optimize: add a comment for test
  • Loading branch information
AtsushiSakai authored and tylerjereddy committed Apr 1, 2024
1 parent 8d82b0a commit 729ff0f
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
7 changes: 4 additions & 3 deletions scipy/interpolate/_rbfinterp.py
Expand Up @@ -342,10 +342,11 @@ 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 "
f"`degree` should not be below {min_degree} except -1 "
f"when `kernel` is '{kernel}'."
f"The interpolant may not be uniquely "
f"solvable, and the smoothing parameter may have an "
f"unintuitive effect.",
UserWarning, stacklevel=2
Expand Down
15 changes: 12 additions & 3 deletions scipy/interpolate/tests/test_rbfinterp.py
Expand Up @@ -369,9 +369,18 @@ def test_degree_warning(self):
y = np.linspace(0, 1, 5)[:, None]
d = np.zeros(5)
for kernel, deg in _NAME_TO_MIN_DEGREE.items():
match = f'`degree` should not be below {deg}'
with pytest.warns(Warning, match=match):
self.build(y, d, epsilon=1.0, kernel=kernel, degree=deg-1)
# Only test for kernels that its minimum degree is not 0.
if deg >= 1:
match = f'`degree` should not be below {deg}'
with pytest.warns(Warning, match=match):
self.build(y, d, epsilon=1.0, kernel=kernel, degree=deg-1)

def test_minus_one_degree(self):
# Make sure a degree of -1 is accepted without any warning.
y = np.linspace(0, 1, 5)[:, None]
d = np.zeros(5)
for kernel, _ in _NAME_TO_MIN_DEGREE.items():
self.build(y, d, epsilon=1.0, kernel=kernel, degree=-1)

def test_rank_error(self):
# An error should be raised when `kernel` is "thin_plate_spline" and
Expand Down

0 comments on commit 729ff0f

Please sign in to comment.