Introduction to Evolvulator

Your browser either does not support JavaScript, or you have JavaScript turned off.

Welcome to Evolvulator! These web pages are designed to illustrate some of the basic concepts of population and evolutionary genetics. They use simulations to show the effect of evolutionary processes—mutation, random drift, selection, migration, and recombination—on genetic variation within and between populations.

Mutation, drift, migration and recombination are processes that involve chance events. Whether or not a particular gamete carries a new mutation, for example, may depend on whether a cosmic ray that originated in an exploding supernova millions of light years away happens to hit a strand of DNA at just the right place. Most of these simulations, therefore, are Monte Carlo simulations, meaning they use random numbers to model these random processes. (Technically, they're pseudorandom numbers, but they're random enough for our purposes. The roulette wheels of Monte Carlo that these simulations get their name from technically aren't random, either, they're just unpredictable.) For example, here's a very simple simulation of mutation in 10 haploid individuals. The mutation rate is 0.1 mutations per individual per generation. This means that on average, one-tenth of the individuals will experience a new mutation (indicated by a solid blue square).

One generation of mutation

You have JavaScript turned off; you'll have to turn it on.

When you click on the "Mutate" button, a Javascript program picks a random number from between 0 and 1. If the number is less than or equal to 0.1, it draws a solid blue square; if the number is greater than 0.1, it draws an empty red square. The program repeats this process for each of the ten squares. On average, one-tenth of the random numbers will be less than or equal to 0.1, so on average, one of the ten squares will be solid blue. However, since the process is random, sometimes you'll see zero, or one, or two, or three or more, blue squares. To simulate the next generation, the program could keep track of which squares were red and which were blue, then have one mutation rate for red-to-blue and one for blue-to-red. To simulate random drift, the random number could be used to determine how many offspring each individual left; to simulate migration, the random number could determine whether an individual migrated from one population to another; and to simulate recombination, the random number could determine whether a recombination event occurred between two loci.

Natural selection is not a random process, so some of the simulations are deterministic; they model a situation in which the result is always the same. For example, if the frequency of the blue allele is 0.1 and it has a relative fitness of 0.89, its frequency in the next generation will always be 0.09 in a deterministic model. This is a pretty unrealistic model, because random drift is always occurring, so most of the simulations of selection are Monte Carlo simulations that include both selection and drift.

Browser requirements

The graphs in Evolvulator are drawn using the <canvas> element of HTML. This is only supported by modern browsers; it works best with Firefox, and it should work to some extent with Safari, Opera, Chrome, and iCab. Microsoft has, for some reason, decided they don't want to use the <canvas> element, so these pages won't work with Internet Explorer.

The graphs also use JavaScript, so if you have that turned off to make your browsing experience less cluttered, you'll have to turn it on.

In Firefox, you may get an error message that says "Warning: Unresponsive Script." If so, click the box labelled "Don't ask me again" and then hit the "Continue" button.

Go to John McDonald's home page

This page was last revised March 6, 2009. Its address is
©2009 by John H. McDonald. You can probably do what you want with this content; see the permissions page for details.