class: center, middle, inverse, title-slide .title[ # Variability in response ] .author[ ### Jinliang Yang ] .date[ ### Nov. 9, 2022 ] --- # Improvement of response `\begin{align*} & R = \frac{i h^2\sigma_P}{L} \\ \end{align*}` The form of the breeder's equation allows us to clearly see how to maximize response to selection per unit of time. ### 1. Reduce the generation interval ### 2. Increase the heritability of the trait ### 3. Increase the selection intensity ### 4. Increase additive genetic variance --- # Measuring response to selection Response to selection of two populations of broilers. - One population was selected for __high__ 56-day body weight. - One population was selected for __low__ 56-day body weight. .pull-left[ <div align="center"> <img src="poultry.jpg" height=200> </div> ] -- .pull-right[ <div align="center"> <img src="longterm.png" height=250> </div> ] -- #### Causes of response variability to selection? -- 1. Genetic drift 2. Sampling error in estimating the generation mean 3. Differences in selection differential 4. Environmental factors --- # Measuring response to selection .pull-left[ <div align="center"> <img src="longterm.png" height=250> </div> ] .pull-right[ #### Causes of response variability: 1. Genetic drift 2. Sampling error in estimating the generation mean 3. Differences in selection differential 4. Environmental factors ] ### How to separate these effects? -- 1. Maintain an unselected control population 2. Practice divergent selection 3. Or carry out replicated, parallel selection programs --- # The Breeder's equation ### The complex version `\begin{align*} & R = \frac{i h^2\sigma_P}{L} \\ \end{align*}` -- ### The simple version `\begin{align*} & R = h^2 S \\ \end{align*}` -- The heritability, therefore `\begin{align*} & h^2 = \frac{R}{S} \\ \end{align*}` --- # Realized heritability .pull-left[ `\begin{align*} & h_R^2 = \frac{R}{S} \\ \end{align*}` Shows how the response is related to the selection differential ] -- .pull-right[ ```r S <- c(5, 6, 5, 6, 6, 10) R <- c(3, 2, 1, 3, 2, 3) df <- data.frame(s=cumsum(S), r=cumsum(R)) library(ggplot2) ggplot(df, aes(x=s, y=r)) + geom_point(color='red', size = 4) + geom_smooth(method=lm, color='#2C3E50') ``` ``` ## `geom_smooth()` using formula = 'y ~ x' ``` <img src="w12_c2_files/figure-html/unnamed-chunk-1-1.png" width="80%" style="display: block; margin: auto;" /> ] --- # Realized heritability .pull-left[ `\begin{align*} & h_R^2 = \frac{R}{S}\\ \end{align*}` Shows how the response is related to the selection differential - The selection differential are summed across the generations plotted against the cumulative response. - The slope of the regression line fitted to the points is equal to the average value of R/S. ] .pull-right[ ```r S <- c(5, 6, 5, 6, 6, 10) R <- c(3, 2, 1, 3, 2, 3) df <- data.frame(s=cumsum(S), r=cumsum(R)) library(ggplot2) ggplot(df, aes(x=s, y=r)) + geom_point(color='red', size = 4) + geom_smooth(method=lm, color='#2C3E50') ``` ``` ## `geom_smooth()` using formula = 'y ~ x' ``` <img src="w12_c2_files/figure-html/unnamed-chunk-2-1.png" width="80%" style="display: block; margin: auto;" /> ] --- # Realized heritability `\begin{align*} & h_R^2 = \frac{R}{S} \\ \end{align*}` ### Be cautious: 1. Reduces response to selection after first generation for high heritability traits (__Bulmer effect__) -- - For complex traits, each allele carries a small effect. Therefore, allele frequencies changes are gradual and change in variance through changes in individual allele frequency is slow. -- - However, what is known as the __Bulmer effect__ immediately changes the variance of complex traits subjected to one generation of selection. --- # Realized heritability `\begin{align*} & h_R^2 = \frac{R}{S} \\ \end{align*}` ### Be cautious: 1. Reduces response to selection after first generation for high heritability traits (__Bulmer effect__) 2. Systematic changes in environment or inbreeding depression will affect response. - Comparison with control line can adjust for these effects. -- 3. Random drift affect response. - The magnitude of random drift can be assessed by replicated selection. --- # A breeding simulation example: In a chicken breeding program, the breeders aim to increase the 56-day body weight. They plan to conduct 40 discrete generations of selection. -- ### Assumptions: 1. The quantitative trait, 56-day body weight, is modeled as being controlled by 1,000 genetic loci (or QTLs). 2. These QTL are equally split across 10 chromosomes so that there are 100 QTLs per chromosome. 3. `\(h^2=0.5%\)` --- # A breeding simulation example: ## Breeding schemes: - The base population consists of 100 animals, of which 50 are male and 50 are female. - Suppose the breeders can only handle 100 replacement animals per generation. -- #### 1. Balanced selection scheme - In each generation, the best 30 males are selected on the basis of their phenotypic value for a single polygenic trait (56-day body weight) and mated to the females ( `\(N=30\)` ) to produce 100 replacement animals. #### 2. Unbalanced selection scheme - In each generation, the best 10 males are selected on the basis of their phenotypic value for a single polygenic trait (56-day body weight) and mated to the females ( `\(N=50\)` ) to produce 100 replacement animals. --- # Breeding simulation ### Simulate a founder population with genomic data [AlphaSimR](https://github.com/gaynorr/AlphaSimR) - An R package for breeding program simulations - Here is the [introduction](https://cran.r-project.org/web/packages/AlphaSimR/vignettes/intro.html) of the package -- ### Creating Founder population ```r # install.packages("AlphaSimR") library(AlphaSimR) founderPop = runMacs(nInd=100, nChr=10, segSites=5000) ``` --- # Breeding simulation ### Simulate the phenotype 1. The quantitative trait, 56-day body weight, is modeled as being controlled by 1,000 genetic loci (or QTLs). 2. These QTL are equally split across 10 chromosomes so that there are 100 QTLs per chromosome. 3. `\(h^2=0.5\)` -- ### Setting Simulation Parameters ```r SP = SimParam$new(founderPop) # The ‘A’ at the end indicates that the trait’s QTL only have additive effects. SP$addTraitA(nQtlPerChr=100) # Systematic assignment is used to ensure that there is always equal numbers of males and females. SP$setSexes("yes_sys") SP$setVarE(h2=0.5) ``` --- # Conduct the selection ### Modeling the Breeding Program - This step will take the haplotypes in `founderPop` and the information in `SP` to create an object of `Pop-class`. ```r set.seed(12345) pop1 = newPop(founderPop) pop2 = newPop(founderPop) # compute the mean in the current generation genMean1 = meanG(pop1) genMean2 = meanG(pop2) for(generation in 1:40){ pop1 = selectCross(pop=pop1, nFemale=50, nMale=10, use="pheno", nCrosses=100) pop2 = selectCross(pop=pop2, nFemale=30, nMale=30, use="pheno", nCrosses=100) genMean1 = c(genMean1, meanG(pop1)) genMean2 = c(genMean2, meanG(pop2)) } ``` --- # Examining the Results ```r plot(0:40, genMean1, type="l", col="blue", lwd=3, xlab="Generation", ylab="Mean Genetic Value") lines(0:40, genMean2, col="red", lwd=3) ``` <img src="w12_c2_files/figure-html/unnamed-chunk-6-1.png" width="60%" style="display: block; margin: auto;" />