def test_signal_rank_warning(): # Throws warning signal rank is larger than possible rank, sets to max-1 ajive = AJIVE(init_signal_ranks=[2, 2], joint_rank=2) a = np.vstack([[1, 1], [1, 1]]) with pytest.warns(RuntimeWarning): ajive.fit([a, a]) assert ajive.init_signal_ranks_ == [1, 1]
def test_random_state(data): # Tests reproducible simulations dat = data["same_views"] ajive1 = AJIVE(init_signal_ranks=[2, 2], random_state=0) ajive1 = ajive1.fit(Xs=dat) ajive2 = AJIVE(init_signal_ranks=[2, 2], random_state=0) ajive2 = ajive2.fit(Xs=dat) assert_allclose(ajive1.wedin_samples_, ajive2.wedin_samples_) assert_allclose(ajive1.random_sv_samples_, ajive2.random_sv_samples_)
def test_same_indiv(data, init_signal_ranks, individual_ranks, joint_rank): # Test same indiv input result across varying inputs dat = data["same_views"] ajive = AJIVE( init_signal_ranks=init_signal_ranks, joint_rank=joint_rank, individual_ranks=individual_ranks, ) ajive = ajive.fit(Xs=dat) Is = ajive.individual_mats_ assert_allclose(Is[0], Is[1])
def test_fit_elbows(): n = 10 elbows = 3 np.random.seed(1) x = np.random.binomial(1, 0.6, (n**2)).reshape(n, n) xorth = orth(x) d = np.zeros(xorth.shape[0]) for i in range(0, len(d), int(len(d) / (elbows + 1))): d[:i] += 10 X = xorth.T.dot(np.diag(d)).dot(xorth) Xs = [X, X] ajive = AJIVE(n_elbows=2) ajive = ajive.fit(Xs) assert_equal(ajive.init_signal_ranks_[0], 4)
def test_joint_rank(data): dat = data["same_views"] ajive = AJIVE(init_signal_ranks=[2, 2], joint_rank=2) ajive = ajive.fit(Xs=dat) assert_equal(ajive.joint_rank, 2)
def test_indiv_rank(data): dat = data["same_views"] ajive = AJIVE(init_signal_ranks=[2, 2], individual_ranks=[2, 1]) ajive = ajive.fit(Xs=dat) assert_equal(ajive.individual_ranks_[0], 2)