def setUp(self): p = np.zeros(10) q = np.zeros(10) p[0:-1] = 0.5 q[1:] = 0.5 p[4] = 0.01 q[6] = 0.1 self.A = [0, 1] self.B = [8, 9] self.a = 1 self.b = 8 self.bdc = birth_death_chain(q, p) T_dense = self.bdc.transition_matrix T_sparse = csr_matrix(T_dense) self.T = T_sparse self.mu = self.bdc.stationary_distribution self.qminus = self.bdc.committor_backward(self.a, self.b) self.qplus = self.bdc.committor_forward(self.a, self.b) # present results self.fluxn = flux.flux_matrix(self.T, self.mu, self.qminus, self.qplus, netflux=False) self.netfluxn = flux.flux_matrix(self.T, self.mu, self.qminus, self.qplus, netflux=True) self.totalfluxn = flux.total_flux(self.netfluxn, self.A) self.raten = flux.rate(self.totalfluxn, self.mu, self.qminus)
def totalflux(self, a, b): r"""The tiotal flux for the reaction A=[0,...,a] => B=[b,...,M]. Parameters ---------- a : int State index b : int State index Returns ------- F : float The total flux between reactant and product """ flux = self.flux(a, b) A = list(range(a + 1)) from deeptime.markov.tools.flux import total_flux return total_flux(flux, A)
def test_total_flux(tpt_scenario): assert_almost_equal(tpt_scenario[1].total_flux, 0.0108050847458) assert_almost_equal(total_flux(tpt_scenario[1].net_flux), 0.0108050847458) assert_almost_equal(total_flux(tpt_scenario[1].net_flux, A=[0]), 0.0108050847458)