Gene Expression

This notebook demonstrates QSSA on a two-state gene expression model. The example is aligned with the biological circuit model-reduction motivation in Pandey and Murray’s AutoReduce paper and the robustness analysis in the 2023 IJRNC paper.

Model

A simple input-controlled expression model is

\[\begin{split}\begin{aligned} \dot{m} &= k_{tx}u - \gamma_m m, \\ \dot{p} &= k_{tl}m - \gamma_p p. \end{aligned}\end{split}\]

Here \(m\) is mRNA, \(p\) is protein, and \(u\) is an input or effective promoter activity. If mRNA dynamics are fast relative to protein dilution/degradation, QSSA sets \(\dot{m}=0\).

[ ]:
import numpy as np
from sympy import Symbol, simplify

from autoreduce import System, solve_timescale_separation

m = Symbol("m")
p = Symbol("p")
k_tx = Symbol("k_tx")
k_tl = Symbol("k_tl")
gamma_m = Symbol("gamma_m")
gamma_p = Symbol("gamma_p")
u = Symbol("u")

x = [m, p]
f = [
    k_tx * u - gamma_m * m,
    k_tl * m - gamma_p * p,
]

system = System(
    x,
    f,
    params=[k_tx, k_tl, gamma_m, gamma_p, u],
    params_values=[2.0, 5.0, 10.0, 0.2, 1.0],
    x_init=[0.0, 0.0],
    C=np.array([[0, 1]]),
)

Reduce the model

The retained state is \(p\). The eliminated fast state is \(m\).

[ ]:
reduced_system, collapsed_system = solve_timescale_separation(
    system,
    [p],
    fast_states=[m],
)

[simplify(expr) for expr in reduced_system.f]

Interpretation

The QSSA condition gives

\[m = \frac{k_{tx}u}{\gamma_m}.\]

The reduced protein model is

\[\dot{p} = \frac{k_{tl}k_{tx}u}{\gamma_m} - \gamma_p p.\]

This reduced equation makes the effective production rate explicit.

[ ]:
collapsed_system.x, collapsed_system.f