A little while ago I was looking for an active way to teach about the evolutionary dynamics occurring within each of us. So, finding the perfect excuse to learn some shiny, I built a simulation of an evolving stem cell niche that students can control—a fun evolutionary game to play!
The goal here is to understand how inherently “random” dynamics—cells are chosen to divide based on a die roll and chosen to leave the system based on the flip of a coin—can manifest in outcomes that are predictable. For instance, it turns out that neutral variants, i.e., mutations that do not affect the relative division rate of cells, have a knowable probability of “fixing” in the population (taking over) and consequently a knowable probability of going extinct. You can adjust the starting size of the mutant population or the starting size of the entire population and see how this changes the probability of fixation.
You can also adjust the relative division rate of “mutant” cells, and see how this changes probability that the mutant lineage takes over the system. This difference in fixation probability is the intensity by which the mutant is naturally selected to survive.
In other words, if you have information about the actual rate of fixation of variants, and the expected rate of fixation of the variants if they were neutral with respect to selection, you can calculate the differential intensity of selection for these variants, and you can understand which variants give the largest boost to cellular division and survival. These are the same sort of tools we use to understand which molecular variants are driving cancers! And, of course, the evolutionary dynamics occurring in the small populations that constitute our bodies are hugely important!
I built this simulation hoping that others can use it in their classrooms as well Please let me know if you think of any ways to improve the simulation, the code, or anything at all!