Derivation of Hill Functions
This notebook follows Example 3.11 in Del Vecchio and Murray, Biomolecular Feedback Systems, and shows how a Hill function can be derived by applying a quasi-steady-state approximation to fast reversible binding reactions.
Model
A transcription factor \(X\) dimerizes before binding a promoter site \(p\). The bound complex \(C\) activates production of the mRNA \(m_Y\), which is translated into protein \(Y\):
Treating \(X(t)\) as an input, the ODE model is
[ ]:
from sympy import simplify, symbols
from autoreduce import System, solve_timescale_separation
X, X2, C, mY, Y = symbols("X X2 C m_Y Y")
k1, k2, a, d, kf, delta, kappa, gamma, p_tot = symbols(
"k1 k2 a d k_f delta kappa gamma p_tot"
)
system = System(
[X2, C, mY, Y],
[
k1 * X**2 - k2 * X2 - a * X2 * (p_tot - C) + d * C,
a * X2 * (p_tot - C) - d * C,
kf * C - delta * mY,
kappa * mY - gamma * Y,
],
params=[X, k1, k2, a, d, kf, delta, kappa, gamma, p_tot],
params_values=[1.0] * 10,
x_init=[0.0, 0.0, 0.0, 0.0],
)
Fast binding limit
The binding reactions are much faster than mRNA and protein production and decay. With
the fast equations are written in singular perturbation form by using
Setting \(\epsilon=0\) gives the slow manifold
Solve the QSSA reduction
AutoReduce obtains the slow model by retaining \(m_Y\) and \(Y\) and treating \(X_2\) and \(C\) as fast states.
[ ]:
reduced_system, collapsed_system = solve_timescale_separation(
system,
slow_states=[mY, Y],
fast_states=[X2, C],
)
[simplify(expr) for expr in reduced_system.f]
Hill function form
The reduced mRNA dynamics can be written as
and the protein equation remains
Letting \(\alpha=k_fp_{tot}\) and \(K=\sqrt{K_mK_d}\) gives the standard Hill expression
[ ]:
Km, Kd = symbols("K_m K_d")
production_term = simplify(reduced_system.f[0] + delta * mY)
hill_form = simplify(production_term.subs({k2: Km * k1, d: Kd * a}))
hill_form