def candidate_difference_squared(beta, index1, index2): B_betaJ, B_betaI, y_beta = calc_B_y_beta_selection(A, y, svdAAt_U, svdAAt_S, beta, I=support, J=[index1, index2]) hit_candidates, used_signs = calc_hit_cand_selection( B_betaI, B_betaJ, y_beta, signum) return (hit_candidates[0] - hit_candidates[1])**2
def get_substitute_for_last_entry_changed(beta): B_betaJ, B_betaI, y_beta = calc_B_y_beta_selection( A, y, svdAAt_U, svdAAt_S, beta, I=support, J=np.array([last_entry_changed]).astype('int')) return calc_hit_cand_selection(B_betaI, B_betaJ, y_beta, signum, prescribed_sign=sign_last_entry_changed)
def candidate_difference_squared(beta, index1, index2): I_in_support = np.where(np.in1d(support, np.array([index1, index2])))[0] J = np.setdiff1d([index1, index2], support[I_in_support]) B_betaJ, B_betaI, y_beta = calc_B_y_beta_selection(A, y, svdAAt_U, svdAAt_S, beta, I=support, J=J) if index1 in support and index2 in support: candidates = calc_cross_cand_selection(B_betaI, y_beta, signum, indices=I_in_support) elif index1 in support: cross_cand = calc_cross_cand_selection(B_betaI, y_beta, signum, indices=I_in_support) hit_cand, used_signs = calc_hit_cand_selection( B_betaI, B_betaJ, y_beta, signum) candidates = [cross_cand, hit_cand] elif index2 in support: cross_cand = calc_cross_cand_selection(B_betaI, y_beta, signum, indices=I_in_support) hit_cand, used_signs = calc_hit_cand_selection( B_betaI, B_betaJ, y_beta, signum) candidates = [cross_cand, hit_cand] else: candidates, used_signs = calc_hit_cand_selection( B_betaI, B_betaJ, y_beta, signum) return (candidates[0] - candidates[1])**2