When you have completed the exercise below, submit your model and your lab write-up via the Google Drive Form (https://forms.gle/ E3QLACX1aA2Q6ist5). Responses due by the following week's lab period.
During lab, we will work in groups. Here are the groups assigned for today's exercise:
Aidan and Elise | Isabel and Hunter |
Ricarda and Shaina | Julia and Martha |
Kalyan and Merry | Revanth and My |
Calvin and Sophie | Emily S. and Diane |
Amelia and Andrea | Emily F. and Vaughn |
For today's lab, we will create a model to simulate Hardy-Weinberg Equilibrium. Remember that HW Equilibrium means no change in allele frequencies over time. Your population can (probably should) start out of HW proportions but should attain them after one generation of random mating. This model will be the basis for models we build in the upcoming weeks. For example, next week we'll take this basic HW model and modify it to allow for genetic drift. You may wish to refer to the textbook or other resources to help you remember the meanings of equations, etc.
Open VensimPLE. It may be helpful to refer to last week's handout or your notes to help you remember where things are, etc.
Before starting the model, think about what we are trying to do. What happens in the HW model? For an example, consider a population of mussels that reproduce by broadcast spawning: once a year, individuals release their gametes into the water column, where they meet up with other gametes at random and undergo syngamy to form a new zygote (see figure).
Figure 1. The life cycle of the New Zealand green-lipped mussel (Perna canaliculus, kütai). As larvae, green-lipped mussels are free-swimming. They metamorphose and settle onto seaweed and subsequently onto solid surfaces.
In nature, many mussels are iteroparous (spawning more than one reproductive episode in their lifetimes) but for the sake of our simple model, we're going to assume they are semelparous (they reproduce once and then die) Each individual in the population produces gametes (via meiosis), spews them out into the water column, and then dies (so we are modeling them as annuals, discrete non-overlapping generations). The gametes fuse into diploid zygotes (probabilistically, at random), spend some time as planktonic larva, and then settle on a hard surface where they grow into adult mussels. The next year, those adult mussels spew their gametes into the water and then die, etc (the circle of life...).
In our model, the number of Adults represents the total population size (N). It's the life stage that we are tracking from one generation to the next. We're also going to model the simplest base case, one locus with two alleles. We will have three genotypes, which is like having 3 different kinds of Adult mussels, each represented by a separate stock box. The mussels with each genotype will produce gametes (every individual produces the same number of gametes, no selection!). Those gametes will be joined at random (following binomial probabilities) to form the next generation of adults. For each generation, we will want to examine the observed genotype frequencies (based on the stocks), the allele frequencies (calculated from observed geno frequencies), and the HW expected genotype frequencies (calculated from allele frequencies).
When we create the new generation of mussels, we will do so following HW expectations, using the allele frequencies of gametes to determine how many zygotes of each genotype are formed. Note that we're going to assume the population size is not being affected and that it's large, we'll use N = 10000 for the total population in our example. And because we're examining HW, which occurs quickly, we'll use just 10 time steps (generations).
For your reference, we're going to create 1 stock for each genotype. Each stock will have a flow to allow us to add new individuals in the next generaton. Each stock will also be set up to be Discrete, emptying out at the end of a time step (b/c all adults die after reproducing). We will also set up variables to keep track of total population size, observed genotype frequencies, allele frequencies, and expected genotype frequencies. Finally, we will want one graph to show geno- type frequencies and one to show allele frequencies. Below is an image of the completed model for you to reference.
Units for Time | Year |
INIITIAL TIME = | 0 |
FINAL TIME = | 10 |
Time Step | 1 |
Variable | Arrow pointing to | Arrow arriving from |
genotypeA1A1 | total N; obs freq A1A1; deltaA1A1 | initial freq A1A1; initial N |
genotypeA1A2 | total N; obs freq A1A2; deltaA1A2 | initial freq A1A2; initial N |
genotype A2A2 | total N; obs freq A2A2; deltaA2A2 | initial freq A2A2; initial N |
initial freq A1A1 | genotypeA1A1 | none |
initial freq A1A2 | genotypeA1A2 | none |
initial freq A2A2 | genotypeA2A2 | none |
initial N | genotypeA1A1; genotypeA1A2; genotypeA2A2 | none |
total N | obs freq A1A1; obs freq A1A2; obs freq A2A2; deltaA1A1; deltaA1A2; deltaA2A2 | genotypeA1A1; genotypeA1A2; genotypeA2A2 |
obs freq A1A1 | freqA1 | genotypeA1A1; total N |
obs freq A1A2 | freqA1; freqA2 | genotypeA1A2; total N |
obs freq A2A2 | freqA2 | genotypeA2A2; total N |
freq A1 | exp freq A1A1; exp freq A1A2; exp freq A2A2; deltaA1A1; deltaA1A2; deltaA2A2 | obs freq A1A1; obs freq A1A2 |
freq A2 | none | obs freq A1A2; obs freq A2A2 |
exp freq A1A1 | none | freqA1 |
exp freq A1A2 | none | freqA1 |
exp freq A2A2 | none | freqA1 |
deltaA1A1 | none | freqA1; total N; genotypeA1A1 |
deltaA1A2 | none | freqA1; total N; genotypeA1A2 |
deltaA2A2 | none | freqA1; total N; genotypeA2A2 |
Variable | Parameter | Value |
initial N | Equations | 10000 |
initial freq A1A1 | Equations | 0.4 |
initial freq A1A2 | Equations | 0.4 |
initial freq A2A2 | Equations | 0.2 |
To check our understanding of the HW model and what's going on, we should run the model under some different conditions and then evaluate what happens. Run the following scenarios of starting conditions and answer the questions below. Look at Lab 1 for instructions about using Simulation Control to test multiple conditions.
Trial | initial freq A1A1 | initial freq A1A2 | initial freq A2A2 |
1 | 0.25 | 0.5 | 0.25 |
2 | 0.2 | 0.2 | 0.6 |
3 | 0 | 0.5 | 0.5 |
4 | 0.36 | 0.48 | 0.16 |
Find your saved model file (should end in .mdl). Submit the model and your responses to the Google Form: https://forms.gle/E3QLACX1aA2Q6ist5. Write-up are due by the next lab period.
Below find the table of equations for each variable.
Variable | Parameter | Value of equations or initial |
initial N | Equations | 10000 |
initial freq A1A1 | Equations | 0.4 |
initial freq A1A2 | Equations | 0.4 |
initial freq A2A2 | Equations | 0.2 |
genotypeA1A1 | Initial | initial freq A1A1 * initial N |
genotypeA1A2 | Initial | initial freq A1A2 * initial N |
genotype A2A2 | Initial | initial freq A2A2 * initial N |
total N | Equations | genotypeA1A1 + genotypeA1A2 + genotypeA2A2 |
obs freq A1A1 | Equations | genotypeA1A1 / total N |
obs freq A1A2 | Equations | genotypeA1A2 / total N |
obs freq A2A2 | Equations | genotypeA2A2 / total N |
freq A1 | Equations | obs freq A1A1 + 0.5 * obs freq A1A2 |
freq A2 | Equations | obs freq A2A2 + 0.5 * obs freq A1A2 |
exp freq A1A1 | Equations | freq A1 * freq A1 |
exp freq A1A2 | Equations | 2 * freq A1 * (1 - freq A1) |
exp freq A2A2 | Equations | (1 - freq A1) * (1 - freq A1) |
deltaA1A1 | Equations | (freq A1 * freq A1 * total N) - genotypeA1A1 |
deltaA1A2 | Equations | (2 * freq A1 * (1 - freq A1) * total N) - genotypeA1A2 |
deltaA2A2 | Equations | ( (1 - freq A1) * (1 - freq A1) * total N) - genotypeA2A2 |