Example #1
0
def test_fluxes_1():
    # depends on tpt.committors

    msm = MarkovStateModel(lag_time=1)
    assignments = np.random.randint(3, size=(10, 1000))
    msm.fit(assignments)

    tprob = msm.transmat_
    pop = msm.populations_
    # forward committors
    qplus = tpt.committors(0, 2, msm)

    ref_fluxes = np.zeros((3, 3))
    ref_net_fluxes = np.zeros((3, 3))
    for i in range(3):
        for j in range(3):
            if i != j:
                # Eq. 2.24 in Metzner et al. Transition Path Theory.
                # Multiscale Model. Simul. 2009, 7, 1192-1219.
                ref_fluxes[i, j] = (pop[i] * tprob[i, j] *
                                    (1 - qplus[i]) * qplus[j])

    for i in range(3):
        for j in range(3):
            ref_net_fluxes[i, j] = np.max([0, ref_fluxes[i, j] -
                                          ref_fluxes[j, i]])

    fluxes = tpt.fluxes(0, 2, msm)
    net_fluxes = tpt.net_fluxes(0, 2, msm)

    npt.assert_array_almost_equal(ref_fluxes, fluxes)
    npt.assert_array_almost_equal(ref_net_fluxes, net_fluxes)
Example #2
0
def test_fluxes_2():
    # depends on tpt.committors

    bmsm = BayesianMarkovStateModel(lag_time=1)
    assignments = np.random.randint(3, size=(10, 1000))
    bmsm.fit(assignments)

    # forward committors
    qplus = tpt.committors(0, 2, bmsm)

    ref_fluxes = np.zeros((3, 3))
    ref_net_fluxes = np.zeros((3, 3))
    for el in zip(bmsm.all_populations_, bmsm.all_transmats_):
        pop = el[0]
        tprob = el[1]
        for i in range(3):
            for j in range(3):
                if i != j:
                    # Eq. 2.24 in Metzner et al. Transition Path Theory.
                    # Multiscale Model. Simul. 2009, 7, 1192-1219.
                    ref_fluxes[i, j] += (pop[i] * tprob[i, j] *
                                         (1 - qplus[i]) * qplus[j])

    ref_fluxes /= 100.

    for i in range(3):
        for j in range(3):
            ref_net_fluxes[i, j] = np.max([0, ref_fluxes[i, j] -
                                          ref_fluxes[j, i]])

    fluxes = tpt.fluxes(0, 2, bmsm)
    net_fluxes = tpt.net_fluxes(0, 2, bmsm)

    npt.assert_array_almost_equal(ref_fluxes, fluxes, decimal=2)
    npt.assert_array_almost_equal(ref_net_fluxes, net_fluxes, decimal=2)
Example #3
0
def test_fluxes():
    # depends on tpt.committors

    msm = MarkovStateModel(lag_time=1)
    assignments = np.random.randint(3, size=(10, 1000))
    msm.fit(assignments)

    tprob = msm.transmat_
    pop = msm.populations_
    # forward committors
    qplus = tpt.committors(0, 2, msm)

    ref_fluxes = np.zeros((3, 3))
    ref_net_fluxes = np.zeros((3, 3))
    for i in xrange(3):
        for j in xrange(3):
            if i != j:
                # Eq. 2.24 in Metzner et al. Transition Path Theory.
                # Multiscale Model. Simul. 2009, 7, 1192-1219.
                ref_fluxes[i, j] = (pop[i] * tprob[i, j] * (1 - qplus[i]) *
                                    qplus[j])

    for i in xrange(3):
        for j in xrange(3):
            ref_net_fluxes[i, j] = np.max(
                [0, ref_fluxes[i, j] - ref_fluxes[j, i]])

    fluxes = tpt.fluxes(0, 2, msm)
    net_fluxes = tpt.net_fluxes(0, 2, msm)

    # print(fluxes)
    # print(ref_fluxes)

    npt.assert_array_almost_equal(ref_fluxes, fluxes)
    npt.assert_array_almost_equal(ref_net_fluxes, net_fluxes)
Example #4
0
pos13 = dict(zip(range(len(middles2)), middles2[:,0:3:2]))

ax = msme.plot_tpaths(msm, start_ind[0], [pop_ind], pos=pos)
plt.tight_layout()
plt.savefig('tpath.eps')
plt.clf()

ax = msme.plot_tpaths(msm, start_ind[0], [pop_ind], pos=pos13)
plt.tight_layout()
plt.savefig('tpath_13.eps')
plt.clf()


net_flux_matrix = net_fluxes(start_ind[0], [pop_ind], msm)

flux_matrix = fluxes(start_ind[0], [pop_ind], msm)

paths_list, fluxes1 = paths(start_ind[0], [pop_ind], net_flux_matrix)

paths_list_d, fluxes1_d = paths(start_ind[0], [pop_ind], net_flux_matrix, remove_path='bottleneck')


print('num states in path 1', len(paths_list[0]))

test_3 = np.unique(np.concatenate((paths_list[0],paths_list[1], paths_list[2]), 0))
test_5 = np.unique(np.concatenate((paths_list[0],paths_list[1], paths_list[2], paths_list[3], paths_list[4]), 0))

test_3d = np.unique(np.concatenate((paths_list_d[0],paths_list_d[1], paths_list_d[2]), 0))
test_5d = np.unique(np.concatenate((paths_list_d[0],paths_list_d[1], paths_list_d[2], paths_list_d[3], paths_list_d[4]), 0))

tot_flux = fluxes1.sum()