Esempio n. 1
0
    def test_trajectories(self):
        P = np.array([[0.9, 0.1], [0.1, 0.9]])

        # test number of trajectories
        M = 10
        N = 10
        trajs = msmgen.generate_trajs(P, M, N, start=0)
        assert len(trajs) == M

        # test statistics of starting state
        trajs = msmgen.generate_trajs(P, 1000, 1)
        ss = np.concatenate(trajs).astype(int)
        pi = msmana.stationary_distribution(P)
        piest = msmest.count_states(ss) / 1000.0
        assert np.max(np.abs(pi - piest)) < 0.025

        # test stopping state = starting state
        M = 10
        trajs = msmgen.generate_trajs(P, M, N, start=0, stop=0)
        for traj in trajs:
            assert traj.size == 1

        # test if we always stop at stopping state
        M = 100
        stop = 1
        trajs = msmgen.generate_trajs(P, M, N, start=0, stop=stop)
        for traj in trajs:
            assert traj.size == N or traj[-1] == stop
            assert stop not in traj[:-1]
Esempio n. 2
0
 def setUpClass(cls):
     P = np.array([[0.5, .25, .25, 0.],
               [0., .25, .5, .25],
               [.25, .25, .5, 0],
               [.25, .25, .25, .25],
               ])
     dtrajs = generate_trajs(P, 5, 1000)
     msm_obj = pyerna.msm.MaximumLikelihoodMSM()
     msm_obj.estimate(dtrajs)
     cls.ck = msm_obj.cktest(3)
Esempio n. 3
0
 def test_trajectories(self):
     # test number of trajectories
     M = 10
     N = 10
     trajs = msmgen.generate_trajs(self.P,
                                   M,
                                   N,
                                   start=0,
                                   random_state=self.random_state)
     assert len(trajs) == M
Esempio n. 4
0
 def test_plot(self):
     P = np.array([[0.5, .25, .25, 0.],
                   [0., .25, .5, .25],
                   [.25, .25, .5, 0],
                   [.25, .25, .25, .25],
                   ])
     dtrajs = generate_trajs(P, 5, 1000)
     msm_obj = pyemma.msm.MaximumLikelihoodMSM()
     msm_obj.estimate(dtrajs)
     ck = msm_obj.cktest(3)
     plot_cktest(ck)
Esempio n. 5
0
 def test_stop_eq_start(self):
     M = 10
     N = 10
     trajs = msmgen.generate_trajs(self.P,
                                   M,
                                   N,
                                   start=0,
                                   stop=0,
                                   random_state=self.random_state)
     for traj in trajs:
         assert traj.size == 1
Esempio n. 6
0
 def test_stats(self):
     # test statistics of starting state
     N = 5000
     trajs = msmgen.generate_trajs(self.P,
                                   N,
                                   1,
                                   random_state=self.random_state)
     ss = np.concatenate(trajs).astype(int)
     pi = msmana.stationary_distribution(self.P)
     piest = msmest.count_states(ss) / float(N)
     np.testing.assert_allclose(piest, pi, atol=0.025)
Esempio n. 7
0
 def test_stop(self):
     # test if we always stop at stopping state
     M = 100
     N = 10
     stop = 1
     trajs = msmgen.generate_trajs(self.P,
                                   M,
                                   N,
                                   start=0,
                                   stop=stop,
                                   random_state=self.random_state)
     for traj in trajs:
         assert traj.size == N or traj[-1] == stop
         assert stop not in traj[:-1]
    def simulate(self, N, start=None, dt=1, M=1):
        """
        ToDo Document HMM or MM?
        generates a realization of the Hidden Markov Model

        :param N: int  trajectory length in steps of the lag time
        :param start: int (default=None) - starting hidden state. If not given, will sample from the stationary
            distribution of the hidden transition matrix
        :param stop: int or int-array-like (default=None) - stopping hidden set. If given, the trajectory will be stopped before
            N steps once a hidden state of the stop set is reached
        :param dt: int - trajectory will be saved every dt time steps. Internally, the dt'th power of P is taken to ensure a more efficient simulation
        :return: ndarray - M discrete trajectories with length N/dt in a ndarray of shape (M, N/dt)

        """

        import msmtools.generation as msmgen
        # sample hidden trajectory
        dtraj = msmgen.generate_trajs(self.transition_matrix, M, N, start=start, stop=None, dt=dt)
        dtraj = np.asarray(dtraj)
        return dtraj
Esempio n. 9
0
 def generate_trajs(self, M, N, start=None, stop=None, dt=1):
     """ Generates M random trajectories of length N each with time step dt """
     from msmtools.generation import generate_trajs
     return generate_trajs(self._P, M, N, start=start, stop=stop, dt=dt)