Ejemplo n.º 1
0
    def test_provided_means(self):
        data = np.random.random((300, 3))
        mean = data.mean(axis=0)
        pca_spec_mean = pca(data, mean=mean)
        pca_calc_mean = pca(data)

        np.testing.assert_allclose(mean, pca_calc_mean.mean)
        np.testing.assert_allclose(mean, pca_spec_mean.mean)

        np.testing.assert_allclose(pca_spec_mean.cov, pca_calc_mean.cov)
Ejemplo n.º 2
0
    def test_api_cs(self):
        p = pca(chunksize=1, dim=10)
        assert p.chunksize == 1

        # in case, we do not have a fixed dimension, pca can not calculate a proper chunksize.
        p = pca(chunksize=None)
        assert p.chunksize == p._FALLBACK_CHUNKSIZE

        p = pca(chunksize=None, dim=10)
        assert p.chunksize != 0
        assert p.chunksize != p._FALLBACK_CHUNKSIZE
Ejemplo n.º 3
0
    def test_partial_fit(self):
        data = [np.random.random((100, 3)), np.random.random((100, 3))]
        pca_part = pca()
        pca_part.partial_fit(data[0])
        pca_part.partial_fit(data[1])

        ref = pca(data)
        np.testing.assert_allclose(pca_part.mean, ref.mean)

        np.testing.assert_allclose(pca_part.eigenvalues, ref.eigenvalues)
        np.testing.assert_allclose(pca_part.eigenvectors, ref.eigenvectors)
Ejemplo n.º 4
0
 def test_dimension(self):
     assert types.is_int(self.pca_obj.dimension())
     # Here:
     assert self.pca_obj.dimension() == 1
     # Test other variants
     obj = pca(data=self.X, dim=-1, var_cutoff=1.0)
     assert obj.dimension() == 2
     obj = pca(data=self.X, dim=-1, var_cutoff=0.8)
     assert obj.dimension() == 1
     with self.assertRaises(
             ValueError
     ):  # trying to set both dim and subspace_variance is forbidden
         pca(data=self.X, dim=1, var_cutoff=0.8)
Ejemplo n.º 5
0
    def test_with_data_in_mem(self):
        import pyerna.coordinates as api

        data = [
            np.random.random((100, 50)),
            np.random.random((103, 50)),
            np.random.random((33, 50))
        ]
        reader = source(data)
        assert isinstance(reader, DataInMemory)

        tpca = api.pca(dim=2)

        n_centers = 10
        km = api.cluster_kmeans(k=n_centers)

        disc = api.discretizer(reader, tpca, km)
        disc.parametrize()

        dtrajs = disc.dtrajs
        for dtraj in dtrajs:
            n_states = np.max((np.unique(dtraj)))
            self.assertGreaterEqual(
                n_centers - 1, n_states,
                "dtraj has more states than cluster centers")
Ejemplo n.º 6
0
    def test_feature_correlation_MD(self):
        # Copying from the test_MD_data
        path = pkg_resources.resource_filename(__name__, 'data') + os.path.sep
        self.pdb_file = os.path.join(path, 'bpti_ca.pdb')
        self.xtc_file = os.path.join(path, 'bpti_mini.xtc')
        inp = source(self.xtc_file, top=self.pdb_file)
        pcamini = pca(inp)

        feature_traj = pcamini.data_producer.get_output()[0]
        nfeat = feature_traj.shape[1]
        pca_traj = pcamini.get_output()[0]
        npcs = pca_traj.shape[1]

        test_corr = pcamini.feature_PC_correlation
        true_corr = np.corrcoef(feature_traj.T, pca_traj.T)[:nfeat, -npcs:]
        np.testing.assert_allclose(test_corr, true_corr, atol=1.E-8)
Ejemplo n.º 7
0
    def test_feature_correlation_data(self):
        # Create features with some correlation
        feature_traj = np.zeros((100, 3))
        feature_traj[:, 0] = np.linspace(-.5, .5, len(feature_traj))
        feature_traj[:, 1] = (feature_traj[:, 0] +
                              np.random.randn(len(feature_traj)) * .5)**1
        feature_traj[:, 2] = np.random.randn(len(feature_traj))
        nfeat = feature_traj.shape[1]

        # PCA
        pca_obj = pca(data=feature_traj, dim=3)
        pca_traj = pca_obj.get_output()[0]
        npcs = pca_traj.shape[1]

        # Create correlations
        test_corr = pca_obj.feature_PC_correlation
        true_corr = np.corrcoef(feature_traj.T, pca_traj.T)[:nfeat, -npcs:]
        np.testing.assert_allclose(test_corr, true_corr, atol=1.E-8)
Ejemplo n.º 8
0
    def setUpClass(cls):
        import msmtools.generation as msmgen

        # set random state, remember old one and set it back in tearDownClass
        cls.old_state = np.random.get_state()
        np.random.seed(0)

        # generate HMM with two Gaussians
        cls.P = np.array([[0.99, 0.01], [0.01, 0.99]])
        cls.T = 10000
        means = [np.array([-1, 1]), np.array([1, -1])]
        widths = [np.array([0.3, 2]), np.array([0.3, 2])]
        # continuous trajectory
        cls.X = np.zeros((cls.T, 2))
        # hidden trajectory
        dtraj = msmgen.generate_traj(cls.P, cls.T)
        for t in range(cls.T):
            s = dtraj[t]
            cls.X[t, 0] = widths[s][0] * np.random.randn() + means[s][0]
            cls.X[t, 1] = widths[s][1] * np.random.randn() + means[s][1]
        cls.pca_obj = pca(data=cls.X, dim=1)
Ejemplo n.º 9
0
 def test_variances(self):
     obj = pca(data=self.X)
     O = obj.get_output()[0]
     vars = np.var(O, axis=0)
     refs = obj.eigenvalues
     assert np.max(np.abs(vars - refs)) < 0.01