As stated in the last article, our current model of evolution allows for powerful simulations, but not for a priori predictions: the model being probabilistic in nature, we can’t predict for sure what will happen. Imagine a population of just one bacterial cell: we can’t know whether it will divide or die first, and the potential outcomes after this first event are numerous.

That means that if we want to be able to predict the outcome of evolution without the hassle of simulating over and over again for different parameters, we need to make further assumptions that will simplify the system. The first assumption we’ll make is on the size of our bacterial population: since we’re dealing with communities of several million bacteria per liter, we can assume they’re big. And the thing is, probabilities play nice with big numbers.

Why do we deal with big populations?

In order to understand why assuming the size of our population can help us predict the outcome of our model, let’s turn back to a simulation we already saw last time:

Population evolution k=500

Before considering large scale simulations, let’s look at a smaller scale – the idea will be more intuitive this way I believe. As you can see on the simulation above, we parametrized our model in order to have a population whose equilibrium size is around 500 individuals. What happens if we look at a population with equilibrium ten times smaller?

Population evolution k=50

Okay, the simulation seems way more random than before, but this makes sense: if you think about a population of a couple of individual bacterial cells, there is a greater deal of chance that it may run out of luck and suffer large losses even though the environmental conditions are in their favor, compared to a population of several hundreds of cells.

And just look at what happens when we simulate a population ten times larger than the original:

Population evolution k=500

The randomness seems to smooth out! As it turns out, the bigger the population, the more precise we’ll be able to make predictions. This means that we’ll be able to model our systems in a deterministic manner, and no longer stochastically.

This change shifts the way we look at the system completely: we no longer look at individual cells, assessing whether they die or thrive, but at densities of populations. If the population is large, we can say with near-absolute certainty how many births and death occur at each time step, and update the density accordingly.

Densities of bacteria and the evolution of a system

What does it mean to shift from counting individual cells to measuring densities? In practice, this can take many forms, and we could give a broad, theoretical answer to this question. But I find it easier to focus on how this can be translated in my work, and how it is useful for microbial ecology in general.

A good place to start would be to think about what exactly do we measure when we look at microbial populations in the ocean. For that, we use a quantity we talked about way back in the very first article of this blog, the biomass. It so happens that measuring the biomass concentration of a community is akin to measuring the density of the population, since we’re not looking at each specific particle but rather a compounded measure of how much bacteria there is in a given place.

Say we want to track the variations in bacterial biomass concentration1 between a time $t_1$ and a time $t_2$. A usual way to note these variations in models is with the greek letter $\Delta$, so that the variation in bacterial biomass $B$ between times $t_1$ and $t_2$ can be written:

$$ \Delta B = B(t_2) - B(t_1)$$

Let’s look at it with another perspective: the biomass variation during this time period $\Delta t = t_2-t_1$ will be the amount created (or the biomass production) minus the amount destroyed (the biomass loss) during that time:

$$ \Delta B = \text{Production} - \text{Loss}$$

If the time period $\Delta t$ is small enough compared to the time scale of the system2, we can approximate really well the production and loss terms by their average rates. If we call the average production rate $p$ and average loss rate $l$3, we can say that for $\Delta t$ very small:

$$\Delta B \approx (p-l)\times\Delta t $$

If we call the rate of bacterial biomass concentration variation $\frac{\text{d}B}{\text{d}t}$, we also have

$$ \Delta B \approx \frac{\text{d}B}{\text{d}t}\times\Delta t $$

By taking $\Delta t$ arbitrarily close to 0, we find that:

$$\frac{\text{d}B}{\text{d}t} = p-l$$

We have written the evolution of our system as a differential equation, and believe it or not, but knowing this equation and the initial state of the system is all we need to simulate and even analyse our system! Let’s verify this with a simple system you may be familiar with by now.

The evolution of a simple bacteria-resource system

Let’s go back to our beloved system, in which we can now actually name the resource:


Now, we need to find the expressions of bacterial biomass production and loss rates. We know that bacteria feed on dissolved organic matter (DOM), but the feeding rate is not equal to the production rate: indeed, some of the resources ingested go to waste, and thus only a fraction is used for growth. Let’s call this fraction $\omega$: this is the bacterial growth efficiency (BGE). Bacterial production $BP$ can then be expressed as such:

$$ BP := \omega \times \text{ Feeding rate of the whole population} $$

And if you remember, we already discussed a way of modeling the feeding rate for one bacterial cell. In this article, we saw that the mathematical form with which we describe the feeding rate is somewhat arbitrary, but that the end goal is to describe natural systems. So keep in mind that the following is not the only way to model the feeding rate, but that it is amongst the most classical:

$$ \text{Feeding rate of one bacterial cell} := v_m \times \frac{DOM}{K+DOM} $$

Now we only need the number of bacterial cells in our populations, since:

$$\text{Feeding rate of the whole population } = \text{ Feeding rate of one bacterial cell } \times \text{ Number of cells }$$

If we assume that all cells have the same individual biomass $q$, and know our bacterial biomass $B$:

$$ \text{Number of cells } = \frac{B}{q}$$

So that

$$\text{Feeding rate of the whole population } = v_m \times \frac{DOM}{K+DOM} \times \frac{B}{q}$$

And if we call for simplicity $\lambda := \frac{v_m}{q}$, we find:

$$\text{Feeding rate of the whole population } = \lambda \frac{DOM}{K+DOM}B $$

Finally, we find that bacterial production can be boiled down to:

$$ BP = \omega \times \lambda \frac{DOM}{K+DOM}B $$

We now lack a loss term. Let’s keep it simple, and assume that bacteria die at a steady rate $\mu$, so that:

$$\text{Loss } := \mu \times B$$

where $\mu$ is the mortality rate of bacteria. If we put everything together, we find that the evolution of bacterial biomass can be brought down to:

$$ \frac{\text{d}B}{\text{d}t} = \omega \times \lambda \frac{DOM}{K+DOM}B - \mu\times B$$

You might think that we are finished, but there is still one thing missing: how do we know the concentration of dissolved organic matter in our system? Well, we also need to model it! For today, we’ll assume that there is a steady flux of DOM that arrives in the system, at rate $R$. The loss of DOM only occurs because bacteria consume them, so we can directly write:

$$\frac{\text{d}DOM}{\text{d}t} = R - \lambda \frac{DOM}{K+DOM}B $$

Ok, this was maybe a lot of math at once, but don’t worry, you made it through alright! The good news is, we can visualize this model in a very simple manner by representing the fluxes between compartments with arrows. This would give something like that:


Not so frightening anymore now, is it? We can now turn to simulating this system to see what happens.

Simulating this deterministic system

Simulating the system boils down to how I presented it to you: we take very small time steps, and look at how much biomass we gained and lost during each, stopping whenever we want. It gives the following result:

Bacteria ODE

We can see that we got rid of all traces of randomness: if we were to simulate the system with the same parameters, we would produce exactly the same output.

As you might have guessed, this way of modeling also gives us a glimpse of how the resource behaves in our system. We can even go one step further, since we expressed our bacterial population in terms of concentrations of biomass, it is directly comparable to the resource, expressed in concentration of matter. We can then plot them in the same graph, leading to the following:

Bacteria-Resource ODE

And there you go, we managed to simulate the deterministic system without focusing on individual cells! We see here for instance that if we start with a system very poor in both bacteria and resource, the resource pool will grow much faster than the bacterial population until it reaches a peak. At this point, the system is rich enough in nutrients to sustain rapid growth of the bacterial population, leading to a decrease in resource concentration until the whole system reaches a steady state, with constant bacterial population and resource concentration.

What’s the point of all that?

At first glance, we didn’t gain much by switching from individual-based models to differential equations. I might point out that the calculation is much, much faster, but it wouldn’t be a very satisfying answer I believe.

The real richness in this shift comes from the deterministic nature of the system. If we know the conditions of the system at the beginning, we are sure that the outcome will always be the same – therefore, it must mean that it is embedded somewhere in those conditions, right? It so happens that it is, and that in simple systems such as ours, it is quite easy to find them!

There are many possible outcomes in such systems, but for today we’ll focus on the simplest one, and coincidentally the one most useful for our future eco-evolutionary studies: we’ll assume the parameters are chosen so that the system reaches a steady state.

In a steady state, all populations and concentrations eventually settle to a fixed value – this is the case in all the simulations I showed you. How can we find the steady state in such a system? Well, we know that at this state, the bacterial population and the DOM concentration stay constant, meaning that the production of bacterial biomass (respectively DOM concentration) is equal to the loss of bacterial biomass (respectively DOM concentration). We can then write:

$$ \omega \times \lambda \frac{DOM}{K+DOM}B = \mu\times B$$


$$ R = \lambda \frac{DOM}{K+DOM}B $$

With a little algebra, we find that

$$ B =\frac{\omega R}{\mu}$$


$$ DOM = \frac{1}{\omega\frac{\lambda}{\mu} - 1}\times K$$

And ta-da! We have expressed the whole outcome of the system with only the initial parameters, allowing for powerful predictions.


I may have bored you to death with mathematics today, but let’s recap what we have learned:

  • Before today, if we wanted to study the evolution of a population, we needed to run costly simulations that relied on random events, preventing predictions.
  • Today, we found out that dealing with big populations allowed us to get rid of randomness, thus enabling us to make simulations that yielded the same result every time, allowing for precise predictions.
  • Even better, this form of modeling lets us skip the simulation part all together, and predict the outcome with just a pen and paper!

Changing scales to determine the fate of an ecological system proved to be a powerful tool, but you may have noticed that we didn’t touch on darwinian evolution today, focusing only on ecological evolution. Next time, you’ll see that by changing scales in time, we can allow for powerful predictions of the darwinian evolution. See you then!

If you want to go further

  • Nicolas Champagnat, Régis Ferrière, Sylvie Méléard, Unifying evolutionary dynamics: From individual stochastic processes to macroscopic models, Theoretical Population Biology, Volume 69, Issue 3, 2006, Pages 297-321, ISSN 0040-5809,
  • Sylvie Méléard, Modèles aléatoires en Ecologie et Evolution, Springer Berlin Heidelberg, 2016,

  1. $B$ is a concentration of biomass, and is thus measured in gramms per liter↩︎

  2. For all mathematicians out there, ‘small enough’ is of course meant to be taken as $\Delta t \to 0$, but I suspect you understood that already and see where I’m going with this! ↩︎

  3. Both $p$ and $l$ are then measured in gramms per liter per second↩︎