From f8bcec2b4bdf2c45c28829a63aa1d509a38d238d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 17 Apr 2025 16:09:33 -0700 Subject: [PATCH] fix indexing / sorting for initializing gradient with no warm start --- adelie/solver.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/adelie/solver.py b/adelie/solver.py index b82dc735..08343708 100644 --- a/adelie/solver.py +++ b/adelie/solver.py @@ -284,16 +284,20 @@ def gaussian_cov( active_set[:active_set_size] = np.arange(active_set_size) rsq = 0 - subset = np.array([ - np.arange(groups[ss], groups[ss] + group_sizes[ss]) - for ss in screen_set - ]) - order = np.argsort(subset) - indices = subset[order] - values = screen_beta[order] - - grad = np.empty(p, dtype=dtype) - A.mul(indices, values, grad) + if screen_set.size > 0: + subset = np.hstack([ + np.arange(groups[ss], groups[ss] + group_sizes[ss]) + for ss in screen_set]) + order = np.argsort(subset) + indices = subset[order] + values = screen_beta[order] + + grad = np.empty(p, dtype=dtype) + A.mul(indices, values, grad) + else: + # it actually just feels like this is what we might as well set as grad... + grad = np.zeros(p, dtype=dtype) + grad = v - grad else: @@ -1425,4 +1429,4 @@ def css_cov( n_threads=n_threads ) - return state.solve() \ No newline at end of file + return state.solve()