def reaction(y0, t, k0, k0r, k1, k1r, k2, k2r):
"""
Wrapper for the reaction.
It receives an `np.array` `y0` with the initial concentrations and an
`np.array` `t` with timestamps (it should also include `0`).
This function solves the corresponding ODE system and returns an `np.array`
`Y` in which each column represents a chemical species and each line a
timestamp.
"""
def dydt(y, t):
return np.array([
-1*v_0(y[1], y[0], y[2])+1*v_1(y[3], y[0], y[2]),
-1*v_0(y[1], y[0], y[2])-1*v_2(y[3], y[1]),
+1*v_0(y[1], y[0], y[2])-1*v_1(y[3], y[0], y[2]),
+1*v_1(y[3], y[0], y[2])+1*v_2(y[3], y[1]),
])
# E + S <-> ES
def v_0(S, E, ES):
return k0 * E**1 * S**1 - k0r * ES**1
# ES <-> E + P
def v_1(P, E, ES):
return k1 * ES**1 - k1r * E**1 * P**1
# S <-> P
def v_2(P, S):
return k2 * S**1 - k2r * P**1
return odeint(dydt, y0, t)
# Reaction rates:
# E + S <-> ES
评论列表
文章目录