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