A model of one changing quantity is a balance: rate of change equals rate in minus rate out. Each term is a process with a mechanism and with units. For one such equation, the graph of the right-hand side tells you everything about the long-time behaviour: where the steady states are, which ones attract, and how fast. You do not have to solve the equation.
A protein that is made and destroyed¶
A cell makes proteins all the time, from instructions copied out of its genes, and it destroys them all the time: proteins are broken down, or they fall off the membrane where they work. The amount of a protein in a cell is roughly constant because the two rates balance, not because nothing happens. This is called turnover.
Let be the concentration of the protein. In words,
Now choose a mechanism for each term.
Production at a constant rate . New molecules are made at the same rate whatever the current amount is.
Decay at rate . Every molecule has the same chance per unit time, , of being destroyed, independently of all the others. Twice as many molecules means twice as many losses.
Definition 1 (Production and decay)
| Assumption | In words | When it fails |
|---|---|---|
| constant production | the cell makes the protein at a fixed rate | the protein regulates its own production |
| decay | each molecule is lost independently, with the same chance per unit time | the degradation machinery is saturated |
| a concentration | there are enough molecules that we can ignore that they come in whole numbers | only a few molecules per cell |
The second assumption is the most common one in biological modeling: whenever a loss is proportional to the amount, it means independent losses.
Units¶
Every term has the units of . If is in M and in seconds, then is in M/s, and is in M/s only if is in s. In general,
If two terms in an equation have different units, the equation is wrong, and no choice of parameter values can repair it. Check units before anything else.
Decay alone: the turnover time¶
Switch production off, :
A rate has units , so is a time. It is the turnover time: in time the concentration falls by a factor . The half-life is the time to fall by a factor 2:
So whenever a measurement reports a time (a residence time, a lifetime, a half-life), it gives a rate, up to a factor between 0.7 and 1 that does not matter for a first estimate.
Example 1 (Reading a rate from a measured time)
Single molecules of the protein Rac, a GTPase, stay on the cell membrane for about 2 s. Then .
Steady state¶
A steady state is a value where nothing changes, . For (2),
Production and decay balance at . If the cell doubles the production rate , the steady state (6) doubles, but the turnover time does not change: how fast the level settles is set by decay alone.
The phase line¶
Write the equation as with . Where , increases; where , decreases. That is all we need.
Definition 2 (Phase line)
For an equation , the phase line is the axis with an arrow pointing right wherever and left wherever . The zeros of are the steady states. A steady state is stable if nearby arrows point toward it, and unstable if an arrow on either side points away from it.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import FancyArrowPatch
plt.rcParams.update({"figure.dpi": 130, "font.size": 9, "axes.spines.top": False,
"axes.spines.right": False})
C_EXACT, C_INNER, C_COMP = "#111111", "#D55E00", "#009E73"
a, b = 7.0, 0.5 # muM/min and 1/min
Cs = a / b
fig, axs = plt.subplots(1, 2, figsize=(7.2, 2.8))
ax = axs[0]
C = np.linspace(0, 30, 300)
ax.axhline(0, color="#999999", lw=0.8)
ax.plot(C, a - b * C, color=C_EXACT, lw=2)
for x0, x1 in ((1, Cs - 1.5), (29, Cs + 1.5)):
ax.add_patch(FancyArrowPatch((x0, 0), (x1, 0), arrowstyle="-|>",
mutation_scale=12, color=C_INNER, lw=1.6))
ax.plot([Cs], [0], "o", color=C_COMP, ms=7, zorder=4)
ax.annotate(r"$C^\ast = a/b$", xy=(Cs, 0), xytext=(Cs + 1, 2.5), color=C_COMP)
ax.set_xlabel(r"$C$ ($\mu$M)"); ax.set_ylabel(r"$f(C) = a - bC$")
ax.set_title("the graph of $f$ and the phase line")
ax = axs[1]
t = np.linspace(0, 10, 300)
for C0 in (0, 5, 22, 28):
ax.plot(t, Cs + (C0 - Cs) * np.exp(-b * t), color=C_EXACT, lw=1.3)
ax.axhline(Cs, color=C_COMP, ls="--", lw=1.1)
ax.axvline(1 / b, color="#999999", lw=0.8, ls=":")
ax.annotate(r"$1/b$", xy=(1 / b, 1), xytext=(1 / b + 0.2, 1), color="#777777")
ax.set_xlabel("time (min)"); ax.set_ylabel(r"$C(t)$")
ax.set_title("solutions from four initial values")
fig.tight_layout();
Production and decay, (2), with M/min and /min. Left: the right-hand side and the phase line read off from its sign. Right: every solution approaches M, and the gap shrinks by a factor every min.
The slope test¶
Near a steady state, is close to its tangent line. If the slope is negative, is positive to the left and negative to the right, so both arrows point in.
Proposition 1 (Slope test)
Let be a steady state of . If , then is stable, and a small deviation shrinks like . If , then is unstable. If , the test says nothing, and you have to look at the phase line.
Proof 1
Write with small. Then , because . This is (4) with , so . When the first term of the expansion is zero, and the approximation contains no information.
For production and decay, : the steady state is stable, and is the time scale of the return. The slope at a steady state is a rate, and its reciprocal is the relaxation time.
The exact solution, from the integrating factor (Background: The Integrating Factor), is
but we did not need it: the phase line already gave the steady state, its stability, and the time scale.
Fewer parameters by scaling¶
Measure in units of its steady state: , with dimensionless. Substituting into (2) and dividing by ,
Two parameters became one. The steady state is now , and sets the speed. Measuring time in units of would remove as well, but then the equation would no longer say how many minutes anything takes, which is usually what a biologist wants to know. Scaling is treated in detail in Nondimensionalization.
Checking a model for artifacts¶
A model can have the right units and still be wrong. Two checks catch most problems.
A concentration or a population must never become negative.
It must never become infinite. If the process is known to be regulated, the model needs a stable steady state.
Example 2 (A model that fails both checks)
Take, for a population density ,
From , at once: the density becomes negative. From the arrows point right, and the growth outruns everything. With the solution is , which is infinite at the finite time .
Remark 1 (The loss must win)
The trouble in Example 2 is that the gain, , grows faster with than the loss does. For a model of the form to have a stable steady state, the loss has to win at large : . The logistic equation of Populations and Fractions is the case , .
Summary¶
Rate of change rate in rate out. Name the process behind every term.
A loss proportional to the amount means independent losses at a constant chance per unit time.
Units: every term has the units of the left-hand side. A rate comes with a time .
Steady states are zeros of . The phase line gives their stability. The slope gives the rate of return, unless it is zero.