Stickleback Evolution--Eda gene
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
What is this model?
This model simulates the contemporary evolution of threespine Stickleback of a stickleback population in a hypothetical lake. This model helps users to explore the changes in allele frequencies resulting from natural selection.
Underlying model mechanisms
The following processes serve as the underlying mechanisms of the model.
Allele frequencies, genotypes, phenotypes
When setting up the simulation, an equal number of sperms and eggs are generated based on the defined population size and Eda allele ratio. Then individual fish is formed via random fertilization, and the fish genotype is determined by the sperm and egg. Once genotypes are determined, phenotypes are determined accordingly: AA, Aa, and aA produce the complete-armored morph (darker individuals), aa produces low-armored morph(lighter individuals). 5% of individuals are intermediate morph (intermediate color) due to other genetic modifiers. The fewer plates are a stickleback bearing, the faster does it swim (The Bell Lab, 2016; Genetic Science Learning Center, 2017).
Food resource and population size
The stickleback fish needs to obtain energy from the food. The changes in the blue background represent the available food in the lake. The darker the patch is, the less food is available.
Stickleback fish only obtains food from the lighter blue patches, and every move costs some energy. If fish runs out the energy and no food is available from the current patch, it dies.
The slider of "available-food" represents the food resource available for the stickleback population.
Reproduction, inheritance, and mutation
When a fish cumulates a certain amount of energy, it produces gametes following Mendelian rules. These gametes randomly pair to form new individuals. Once turning on the mutation, 5 % alleles A and a could mutate to a or A every tick.
Predation
The "Number-of-predators" determines the number of dragonfly larvae, the predators, existing in the lake. They will prey on the slowest stickleback fish nearby.
Suggested exploration
The relationship between the available food and carrying capacity
Explore the relationships among allele ratio, number of predators, and mutation.
Something to note
The food resource in the hypothetical lake is finite. So individual fish competes for food. Even though they move in the lake randomly, sampling errors still leads to slight unequally food resource for each individual. Therefore even you turn off predation and mutation, allele frequencies will change slightly owing to genetic drift.
CREDITS
This model is made by Dr. Lin Xiang at Weber State University. If you mention this model in a publication, we ask that you include the citations below.
Xiang, L. (2017). Loberg stickleback-Eda gene. Zoology Department, Weber State University, Ogden, UT.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/.
REFERENCES
The bell lab: Bridging the Gap Between Developmental Genetics and Paleontology https://www.leonschools.net/site/handlers/filedownload.ashx?modelinstanceid=72882&dataid=106049&FileName=bell%20lab%20article.pdf
Stickleback Evolution. Genetic Science Learning Center. (2015, January 7) Learn. Genetics. Retrieved March 21, 2017, from http://learn.genetics.utah.edu/
Comments and Questions
breed [gametes gamete] Breed [fish a-fish] breed [predators predator] globals [cm iter lo] gametes-own [allele] fish-own [genotype plate erg speed] ;=========== to-report years report ticks / 150 end to-report number-big-a report length (word 0 [genotype] of fish) - length (remove "A" (word 0 [genotype] of fish)) ;report total number of "A" end to-report number-small-a report length (word 0 [genotype] of fish) - length (remove "a" (word 0 [genotype] of fish)) ;report total number of "a" end to-report freq-big-a report number-big-a / (number-big-a + number-small-a) ;report allele frequency of "A" end to-report freq-small-a report number-small-a / (number-big-a + number-small-a) ;report allele frequency of "a" end to-report freq-complete report (count fish with [plate >= 23]) /(count fish) end to-report freq-intermediate report (count fish with [plate >= 13 and plate < 23]) / (count fish) end to-report freq-low report (count fish with [plate < 13]) / (count fish) end to smooth-line set cm cm * 0.9 + ( 1 - 0.9 ) * (count fish with [plate >= 23]) set iter iter * 0.9 + ( 1 - 0.9 ) * (count fish with [plate >= 13 and plate < 23]) set lo lo * 0.9 + ( 1 - 0.9 ) * (count fish with [plate < 13]) end ;============ to setup ca setup-gametes fertilization setup-predator setup-patches set cm (count fish with [plate >= 23]) set iter (count fish with [plate >= 13 and plate < 23]) set lo (count fish with [plate < 13]) reset-ticks end ;============== to setup-gametes ;set number of gametes there is no need to make sperms and eggs in this case create-gametes starting-population-size * 2 [gamete-traits ifelse random 10 < (Eda-allele-ratio * 10) [set allele "A"][set allele "a"] ] end to gamete-traits set shape "dot" set color 82 ;set gamate same as background set size 0.5 setxy random-xcor random-ycor end to fertilization ask gametes [ let mate one-of other gametes if mate != nobody[ hatch-fish 1 [;set heading -10 + random 20 set erg 20 ;set energy level set size 3 set genotype word [allele] of myself [allele] of mate ;set genotype setup-phenotype ;set phenotype shape here setup-shape-color setup-fish-speed setxy random-xcor random-ycor] ask mate [die] die]] end to setup-phenotype ;change phenotype shape here if genotype = "AA" [set plate (24 + random 10)] if genotype = "Aa" [set plate (24 + random 10)] if genotype = "aA" [set plate (24 + random 10)] if genotype = "aa" [set plate (3 + random 10)] if random 20 = 0 [set plate (13 + random 10)] ;intermediate morph due to other genetic modifiers end to gametogenesis ask fish with [genotype = "AA"] [if erg >= 40 [hatch-gametes 2 [gamete-traits ifelse mutation? [ifelse random 20 = 0 [set allele "a" ][set allele "A" ]] [set allele "A"]] set erg erg - 20]] ask fish with [genotype = "aa"] [if erg >= 40 [hatch-gametes 2 [gamete-traits ifelse mutation? [ifelse random 20 = 0 [set allele "A" ][set allele "a" ]] [set allele "a"]] set erg erg - 20]] ask fish with [genotype = "Aa"] [if erg >= 40 [hatch-gametes 1 [gamete-traits ifelse mutation? [ifelse random 20 = 0 [set allele "a" ][set allele "A" ]] [set allele "A"] hatch-gametes 1 [gamete-traits ifelse mutation? [ifelse random 20 = 0 [set allele "A" ][set allele "a" ]] [set allele "a"]]] set erg erg - 20]] ask fish with [genotype = "aA"] [if erg >= 40 [hatch-gametes 1 [gamete-traits ifelse mutation? [ifelse random 20 = 0 [set allele "A" ][set allele "a" ]] [set allele "a"] hatch-gametes 1 [gamete-traits ifelse mutation? [ifelse random 20 = 0 [set allele "a" ][set allele "A" ]] [set allele "A"]]] set erg erg - 20]] end to setup-patches ask patches [set pcolor 93] end to setup-fish-speed set speed (-0.1 * plate + 9.3) end to setup-shape-color if plate >= 23 [set shape "armor-1" set color 36] if plate < 23 and plate >= 13 [set shape "armor-2" set color 37] if plate < 13 [set shape "armor-3" set color 38] end to setup-predator create-predators Number-of-predators [set size 7 set color 86 set shape "predator-1" set heading -15 + random 30 setxy random-xcor random-ycor] end ;========================================= to go tick if count fish <= 0 [stop] if ticks >= years-to-run * 150 [stop] update-setup-predator move food death predation reproduce regrow-food smooth-line end ;========================================== to update-setup-predator if count predators != Number-of-predators [ask predators [die] setup-predator] end to move ask fish [ fd 0.25 set erg erg - 1] end to predation if any? predators [ask predators[ setxy random-xcor random-ycor let preys fish-here let prey min-one-of preys with [speed < 8.6] [speed] ; prey on slowest individual among those are slower than 8.6 if prey != nobody [ask prey [die]] ]] end to food ;set food consumption ask fish [ if pcolor > 92 [set erg erg + 1.185 set pcolor pcolor - 0.25]] end to death ask fish [if erg <= 0 [die]] end to reproduce gametogenesis fertilization end to regrow-food ask patches with [pcolor <= 92 ] [if random 100 < (available-food * 0.5) [set pcolor 93]] end
There are 6 versions of this model.
This model does not have any ancestors.
This model does not have any descendants.