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`

and`Y`

. But`X`

is constant, so I’m going to focus on`Y`

in my code. - The first reaction is
`X`

→`X`

+`Y`

. Since`X`

is constant, that means`Y`

is being produced at a constant rate, which I’ll call`reaction`. - The second reaction is
`Y`

→ null. This means`Y`

is being removed at a rate`recycle`proportional to the amount of`Y`

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 rate`autoregulation`

times`Y²`

.

This also leads to an equilibrium, but it’s lower than the original system:

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:

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 at`Y = 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 is`y = recycle/autoregulation/2 * (-recycle ± sqrt(recycle² + 4 * autoregulation * reaction))`

, or with Muller’s method we get`y = -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!