I’ve been studying from Biological Modeling: a free course[1]. These are some of my notes for Chapter 1, about gene networks. I wanted to implement the section on autoregulation[2] myself instead of using their recommended software[3].
The context: DNA leads to RNA leads to proteins. These proteins can do a wide range of things, but the ones covered here are transcription factors, which affect the rate of protein production (gene expression). Surprisingly, some proteins affect their own rate of production, a process called autoregulation. To understand this, let’s first look at a simple model of protein production:
- In the book there are two proteins,
X
andY
. ButX
is constant, so I’m going to focus onY
in my code. - The first reaction is
X
→X
+Y
. SinceX
is constant, that meansY
is being produced at a constant rate, which I’ll call reaction. - The second reaction is
Y
→ null. This meansY
is being removed at a rate recycle proportional to the amount ofY
in the system.
These two reactions lead to equilibrium for the level of Y
:
By playing with the sliders I can see that reaction is a pure scaling factor, and recycle is the main parameter affecting shape. The chart is afrom a simulation but this simple case also can be represented as a closed form Y(t) = reaction/recycle * (1 - e^(-recycle * t))
.
Now it’s time to add autoregulation.
- The autoregulation reaction is
2Y
→Y
. This means Y is being removed at a rateautoregulation
timesY²
.
This also leads to an equilibrium, but it’s lower than the original system:
Autoregulation rate:
But why would we ever want this? It seems weird to evolve a new mechanism to reach a lower equilibrium, since it can already do that without autoregulation. We can reduce the reaction
parameter instead.
The way to think about it is that instead of the input parameters reaction and recycle being fixed, it’s the equilibrium value that’s fixed. Let’s set the equilibrium to always be 1.0 and see what autoregulation does:
Autoregulation rate:
This explains why we want autoregulation! For any value of the reaction rate, we reach equilibrium faster if we also have autoregulation > 0
.
So that’s interesting! I learned a bit by studying this and implementing the simulation.
Other notes I made while studying this section:
- without autoregulation, the differential equation is solved by
Y(t) = reaction / recycle * (1 - exp(-recycle * t))
and equilibrium is atY = reaction / recycle
. - with autoregulation, I can find the equilibrium by solving dy = 0 or
reaction - recycle * y - autoregulation * y * y = 0
. This is a quadratic equation with a = autoregulation , b = recycle, c = -reaction, so the solution isy = recycle/autoregulation/2 * (-recycle ± sqrt(recycle² + 4 * autoregulation * reaction))
, or with Muller’s method we gety = -2*reaction / (-recycle ± sqrt(recycle² + 4 * autoregulation * reaction))
. The latter has the advantage of working with a is zero, which is a case I want to handle, since I want to allow setting autoregulation to 0.
Read the course material[4] for a lot more detail!