Skip to content

Commit 882cfae

Browse files
FIX - compiled and uncompiled SLOPE give different prox values (#179)
Co-authored-by: Badr-MOUFAD <[email protected]>
1 parent 10fa99c commit 882cfae

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

skglm/penalties/non_separable.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@ def value(self, w):
4040
return np.sum(np.sort(np.abs(w)) * self.alphas[::-1])
4141

4242
def prox_vec(self, x, stepsize):
43-
def _prox(_x, _alphas):
44-
sign_x = np.sign(_x)
45-
_x = np.abs(_x)
46-
sorted_indices = np.argsort(_x)[::-1]
47-
prox = prox_SLOPE(_x[sorted_indices], _alphas)
48-
prox[sorted_indices] = prox
49-
return prox * sign_x
50-
return _prox(x, self.alphas * stepsize)
43+
alphas = self.alphas
44+
prox = np.zeros_like(x)
45+
46+
abs_x = np.abs(x)
47+
sorted_indices = np.argsort(abs_x)[::-1]
48+
prox[sorted_indices] = prox_SLOPE(abs_x[sorted_indices], alphas * stepsize)
49+
50+
return np.sign(x) * prox
5151

5252
def prox_1d(self, value, stepsize, j):
5353
raise ValueError(

skglm/tests/test_estimators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ def test_Cox_sk_like_estimator_sparse(use_efron, l1_ratio):
320320
).fit(X, y)
321321
stop_crit = estimator_sk.stop_crit_
322322

323-
np.testing.assert_array_less(stop_crit, 1e-9)
323+
np.testing.assert_array_less(stop_crit, 1e-8)
324324

325325

326326
def test_Cox_sk_compatibility():

0 commit comments

Comments
 (0)