← Guides Quantitative Trait Loci

Advanced 15 min read Open the module

Quantitative traits, heritability and selection

Ten additive loci plus environmental noise give a trait whose heritability drift erodes and selection uses up.

Read first: Genetic drift, Natural selection at one locus

A trait built from many small effects

Height, yield and body mass do not fall into classes. They vary continuously because many loci each add a little, and the environment adds more. The module simulates this with N diploid individuals and a number of trait loci (QTL, quantitative trait loci). At each locus an individual carries 0, 1 or 2 copies of the + allele, and every copy adds the same amount α = 10 / (2 × nQTL). With 10 loci, α = 0.5.

The genotypic value is G = α × (total number of + alleles). The phenotype is P = G + E, where E is random noise with variance Ve. At the start each allele is + with probability p₀ = 0.5. The mean G is 2 × 10 × 0.5 × 0.5 = 5 and the genetic variance is VG = 2 × 10 × 0.5 × 0.5 × 0.5² = 1.25.

Variances of independent parts add: VP = VG + Ve = 1.25 + 1 = 2.25. The heritability h² = VG / VP is the share of phenotypic variance that is genetic, here 1.25 / 2.25 = 0.556. It is the narrow-sense heritability, because all gene action is additive. Ve = 0 gives h² = 1. Ve = 4 gives 1.25 / 5.25 = 0.238.

Variance without selection

Figure 1. Defaults with no selection (Sel = 0), one seeded run. VP starts at 2.19 and VG at 1.23, close to the expected 2.25 and 1.25. By generation 50 VG has drifted down to 0.86 and VP to 1.92. The gap between the lines stays near Ve = 1.

Exercise

Turn the noise up

Open the module, set Sel to 0 and Ve to 4, and run. Read h² at generation 0 and at generation 50 in the heritability panel. Then set Ve to 0 and run again.

What to expect. With Ve = 4, h² starts near 0.24 and a single run usually ends lower, because the same genetic variance is a smaller share of VP. With Ve = 0, h² is 1 throughout.

Open the walkthrough step →

Drift erodes genetic variance

In a finite population, the + allele at each locus wanders by drift until it is fixed or lost, as in the pure drift module. Once a locus is fixed it contributes no variance. Under neutrality VG shrinks by about (1 − 1/2N) per generation.

In the default population, N = 100, that factor is 0.995 per generation, so VG falls slowly: 1.25 × 0.995^50 = 0.97 on average. A single run is noisy. In N = 20 the factor is 0.975 and the loss is fast: 1.25 × 0.975^100 = 0.10 after 100 generations. In the seeded run below, VG goes from 0.93 to 0.05 and h² from 0.56 to 0.04.

The consequence is practical. A small breeding population loses the variation selection needs, even with no selection at all. Larger populations keep it: with N = 500, VG is 1.31 at the start and 1.18 at generation 50.

Loci fix in a small population

Figure 2. N = 20, 10 loci, no selection, 100 generations. Each line is one locus. Nine of the ten loci have reached frequency 0 or 1 by generation 100. The remaining locus is at 0.875. First fixation is at generation 9, and the last at generation 88.

Selection and the breeder's equation

Selection in the module is on the phenotype. The fitness of an individual is 1 + s × z, where z = (P − mean P) / σP is its phenotype in standard deviations, and s is the Sel control. Fitness is floored at 0.01. Parents are drawn in proportion to fitness.

The expected response follows the breeder's equation, R = h² × S. S is the selection differential, the gap between the selected parents' mean and the population mean. Here S = s × σP. With s = 0.3, σP = √2.19 = 1.48 and h² = 0.56, one generation should raise the mean G by 0.56 × 0.3 × 1.48 = 0.25.

The response cannot last. Selecting for the + alleles drives them towards fixation, and that uses up VG. As VG and h² fall to zero, R falls to zero. The trait also has a ceiling: G is at most 10, when every locus is homozygous +.

Response, then a plateau

Figure 3. Sel = 0.3, N = 100, 10 loci. The genotypic mean rises from 4.93 to 7.38 in 10 generations, 0.245 per generation, close to the predicted 0.25. It reaches 8.85 at generation 20 and 9.96 at generation 50, almost the ceiling of 10. By then VG is 0.02 and h² is 0.02.

Exercise

Compare weak and strong selection

Set Sel to 0.1 and run with Gen 50. Note the final genotypic mean and h². Then set Sel to 0.3 and run again. Each run uses new random numbers, so repeat a few times.

What to expect. Sel = 0.1 ends near 8 (8.19 at the tutorial seed). Sel = 0.3 ends near 10, with h² close to zero. Stronger selection responds faster and then runs out of variance sooner.

Open the walkthrough step →

What to keep

  • G = α × (+ alleles), α = 10 / (2 × nQTL). With 10 loci at p₀ = 0.5, mean G = 5, VG = 1.25 and h² = 0.556 when Ve = 1.
  • VP = VG + Ve and h² = VG / VP. Raising Ve to 4 lowers h² to 0.238 without changing any gene.
  • Drift shrinks VG by about (1 − 1/2N) per generation. At N = 20, 9 of 10 loci fixed within 100 generations in the seeded run.
  • R = h² × S predicts the response to selection. It was predicted at 0.25 per generation at Sel = 0.3 (0.245 observed), and it stops once VG is used up. Single runs vary, so repeat before trusting a number.