Starvation resistance

Experimental evolution

  • Artificially select for some phenotype
    • Offspring of parents with desired phenotype are mated to seed next generation
  • After >1 generations, the population phenotype will be vastly different
  • The genotype of organisms with the desired phenotype will be vastly different than ancestor genotype

Artificial selection

Code
allele.freq<-0.5   
L <- 1000
environ.var<-1
sel<-0.1
Num_inds=10000

##MAKE A MUM
## For each mother, at each locus we draw an allele (either 0 or 1) from the population allele frequency. 
##We do this twice for each mother two represent the two haplotypes in the mother 
mum.hap.1<-replicate(Num_inds, rbinom(L,1,allele.freq) )
mum.hap.2<-replicate(Num_inds, rbinom(L,1,allele.freq) )
##type mum.hap.1[,1] to see the 1st mothers 1st haplotype

##Each mothers genotype at each locus is either 0,1,2
mum.geno<-mum.hap.1+mum.hap.2

additive.genetic<-colSums(mum.geno)
mean.genetic<-mean(additive.genetic)
genetic.var<-sd(additive.genetic)

additive.genetic<-additive.genetic / sd(additive.genetic)
mum.pheno<- additive.genetic + rnorm(Num_inds,sd=sqrt(environ.var))
mum.pheno<-mum.pheno-mean(mum.pheno)



###FAMILIES


##MAKE A DAD (same code as make a mum, only said in a deeper voice)
dad.hap.1<-replicate(Num_inds, rbinom(L,1,allele.freq) )
dad.hap.2<-replicate(Num_inds, rbinom(L,1,allele.freq) )
dad.geno<-dad.hap.1+dad.hap.2


additive.genetic<-colSums(dad.geno)
additive.genetic<-additive.genetic / sd(additive.genetic)
dad.pheno<- additive.genetic + rnorm(Num_inds,sd=sqrt(environ.var))
dad.pheno<-dad.pheno-mean(dad.pheno)

### Make a child
child.geno<-dad.hap.1+mum.hap.1 ##1/2 from mum 1/2 from dad

additive.genetic<-colSums(child.geno)
additive.genetic<-additive.genetic / sd(additive.genetic)
child.pheno<- additive.genetic + rnorm(Num_inds,sd=sqrt(environ.var))
child.pheno<-child.pheno-mean(child.pheno)



##Selection of top sel% of individuals

top.sel.per.mums<- mum.pheno>quantile(mum.pheno,p=1-sel) 
top.sel.per.dads<- dad.pheno>quantile(dad.pheno,p=1-sel)


child.geno<-dad.hap.1[,top.sel.per.dads]+mum.hap.1[,top.sel.per.mums] ##1/2 from mum 1/2 from dad

additive.genetic<-(colSums(child.geno)-mean.genetic)
additive.genetic<-additive.genetic/genetic.var
child.pheno<- additive.genetic + rnorm(length(child.geno),sd=sqrt(environ.var))

my.lim<-quantile(c(mum.pheno,dad.pheno),p=c(0.01,0.99))
my.lim[2]<-quantile(child.pheno,p=c(0.99))

hist(c(mum.pheno,dad.pheno),breaks=100,xlim=my.lim,xlab="Phenotype",main=paste("Phenotype distribution before selection"),cex.axis=1.5,cex.lab=1.5,cex.main=1.5); 
abline(v=0,col="blue",lwd=3)

Code
par.mean<-mean(c(mum.pheno[top.sel.per.mums],dad.pheno[top.sel.per.dads]))
hist(c(mum.pheno[top.sel.per.mums],dad.pheno[top.sel.per.dads]),breaks=100,xlim=my.lim,xlab="Phenotype",main="Phenotype distribution after selection",cex.axis=1.5,cex.lab=1.5,cex.main=1.5); 
abline(v= par.mean,col="red",lwd=3)
abline(v=0,col="blue",lwd=3)

Code
hist(child.pheno,xlim=my.lim,breaks=100,xlab="Phenotype",main="Phenotype distribution in the offspring",cex.axis=1.5,cex.lab=1.5,cex.main=1.5); 
abline(v=0,col="blue",lwd=3)
abline(v= mean(child.pheno),col="red",lwd=3)

Evolve and resequence

  • Sequence ancestor DNA
  • Artificially select for n generations
  • Resequence organisms from the nth generation
  • Compare genetic differences between ancestor and nth generation