def test_pcs_n_components(u): pca = PCA(u, select=SELECTION).run() assert_equal(pca.n_components, pca._n_atoms*3) assert_equal(pca.p_components.shape, (pca._n_atoms * 3, pca._n_atoms * 3)) pca.n_components = 10 assert_equal(pca.n_components, 10) assert_equal(pca.p_components.shape, (pca._n_atoms * 3, 10))
def test_cosine_content(): rand = mda.Universe(RANDOM_WALK_TOPO, RANDOM_WALK) pca_random = PCA(rand).run() dot = pca_random.transform(rand.atoms) content = cosine_content(dot, 0) assert_almost_equal(content, .99, 1)
def test_transform_universe(): u1 = mda.Universe(waterPSF, waterDCD) u2 = mda.Universe(waterPSF, waterDCD) pca_test = PCA(u1).run() pca_test.transform(u2)
def test_pca_not_run(u): atoms = u.select_atoms('bynum 1-10') u.transfer_to_memory() pca = PCA(u, select='bynum 1-10') with pytest.raises(ValueError): dot = pca.transform(atoms, stop=5)
def test_transform_rerun(u): atoms = u.select_atoms('bynum 1-10') u.transfer_to_memory() pca = PCA(u, select='bynum 1-10').run(stop=5) dot = pca.transform(atoms) assert_equal(dot.shape, (98, atoms.n_atoms * 3))
def pca_aligned(u): return PCA(u, select=SELECTION, align=True).run()
def test_compare_not_run_self(u, pca, method): pca2 = PCA(u) func = getattr(pca2, method) with pytest.raises(ValueError) as exc: func(pca) assert 'Call run()' in str(exc.value)
def test_alignment(pca_aligned, u, u_aligned): pca_pre_align = PCA(u_aligned, select=SELECTION, align=False).run() assert_almost_equal(pca_aligned.mean, pca_pre_align.mean) assert_almost_equal(pca_aligned.cov, pca_pre_align.cov)
def test_given_mean(pca_aligned, u): pca = PCA(u, select=SELECTION, align=False, mean=pca_aligned._mean).run() assert_almost_equal(pca_aligned.cov, pca.cov, decimal=5)
def test_alignment(pca_aligned, u): v = mda.Universe(PSF, DCD, in_memory=True) a = align.AlignTraj(v, v, select=SELECTION).run() pca_pre_align = PCA(v, select=SELECTION, align=False).run() assert_almost_equal(pca_aligned.mean, pca_pre_align.mean) assert_almost_equal(pca_aligned.cov, pca_pre_align.cov)