Researchers at the University of Illinois are conducting one of the longest experiments in biology – Illinois long-term selection experiment for oil and protein in corn. The experiment started in 1896 and is still active! In esence they are selecting lines for higher or lower concentration of protein or oil in the kernel. This experiment is very important for a test of the theory of genetics, especially quantitative genetics (link1, link2, link3, link4, link5). I have seen several times the trends from this experiment and I wanted to include them in a talk I am prepairing. A brief search on the web lead me to this site with generation means by line. Bingo! This is all I needed. Bellow is a graph of trends and at the end of the post the R code used to produce the plot.
The theory states that genetic variance and consequently also the genetic gain should diminish after several generations of selection. There are experiments that confirmed that, but in the Illinois corn experiments the limit is not yet reached. Crow (2008) propose the following reasons (verbatim copy!):
- “The environment is continually changing so that what was formerly most fit no longer
- “There is an input of genetic variance from mutation, and sometimes from migration.”
- “As intermediate-frequency alleles increase in frequency towards one, producing less variance (as p → 1, p(1 − p) → 0), others that were originally near zero become more common and increase the variance. Thus, a roughly constant variance is maintained.”
- “There is always selection for fitness and for characters closely related to it.”
Now the R code. First I tried to use read.table(file=url(…)), but the data-file had an error – there was a typo on line 68 or 86 – I do not remember anymore. I downloaded the file, fixed the typo and used the following code:
podatki <- read.table(file="corn.txt", na.strings=".", header=TRUE) cols <- c(rgb(red=204, blue=0, green=0, max=255), rgb(red=0, blue=153, green=0, max=255), rgb(red=0, blue=0, green=204, max=255), rgb(red=204, blue=0, green=153, max=255)) par(bty="l", pty="m", mar=c(5, 4, 1, 1)) matplot(x=podatki$YR, y=podatki[, c("IHP", "ILP", "IHO", "ILO")], type="l", lty=1, xlab="Year", ylab="Concentration (%)", col=cols[c(1, 1, 2, 2)], lwd=2) legend("topleft", c("Protein", "Fat"), lty=1, lwd=2, col=cols[c(1, 2)], bty="n")