Michaelis-Menten basic
Michaelis-Menten model, two variables
There are two chemical species \(E\) and \(S\), which reversibly combine to form \(ES\), which decomposes into \(E\) and \(P\).
\[
E+S\leftrightarrow ES \rightarrow E+P
\]
After using the law of mass action, we are able to translate to the ODE system
\begin{align}
\frac{ds}{dt} &= - k_1 e_0 s + k_1 c s + k_{-1} c \\
\frac{dc}{dt} &= k_1 e_0 s - k_1 c s - k_{-1} c - k_2 c
\end{align}
Model reduction in desr
First we make the system in Python from LaTeX code.
>>> system_tex = '''\frac{ds}{dt} &= - k_1 e_0 s + k_1 c s + k_{-1} c \\\\
... \frac{dc}{dt} &= k_1 e_0 s - k_1 c s - k_{-1} c - k_2 c'''
>>> system = ODESystem.from_tex(system_tex)
>>> system.reorder_variables(['t', 's', 'c', 'k_m1', 'k_2', 'k_1', 'e_0'])
>>> system
dt/dt = 1
ds/dt = c*k_1*s + c*k_m1 - e_0*k_1*s
dc/dt = -c*k_1*s - c*k_2 - c*k_m1 + e_0*k_1*s
dk_m1/dt = 0
dk_2/dt = 0
dk_1/dt = 0
de_0/dt = 0
We can see the system’s properties
>>> system.exponent_matrix()
Matrix([
[1, 1, 1, 1, 1, 1, 1],
[0, 0, -1, 1, 0, 0, 1],
[0, 1, 1, 0, 0, 0, -1],
[0, 0, 1, 0, 0, 1, 0],
[0, 0, 0, 0, 1, 0, 0],
[1, 1, 0, 1, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 1]])
One reduces by first making a ODETranslation. One can query the properties/results of the translation, like scaling_matrix and invariants.
>>> translation = ODETranslation.from_ode_system(system, naming_scheme=('tau',['u','v'], 'c'))
>>> translation.scaling_matrix
Matrix([
[1, 0, 0, -1, -1, -1, 0],
[0, 1, 1, 0, 0, -1, 1]])
>>> translation.invariants()
Matrix([[e_0*k_1*t, s/e_0, c/e_0, k_m1/(e_0*k_1), k_2/(e_0*k_1)]])
Actually do the reduction by calling the translate function on the ODETranslation instance.
>>> translation.translate(system)
dtau/dtau = 1
du/dtau = c0*v + u*v - u
dv/dtau = -c0*v - c1*v - u*v + u
dc0/dtau = 0
dc1/dtau = 0