I was given the following question:

You travel to an unknown island and find a population of strangely colored slugs! Upon close investigation, you notice that 16% of the slugs have a shriveled tails, a most terrible condition you decide to name Yilunemia. The condition makes the affected slugs have a 50% chance of surviving to reproduce. This is a autonomic recessive condition caused by a single gene, and heterozygotes are not affected.

Assuming Yilunemia confers no discernible evolutionary advantage, how many generations should it take for the proportion of slugs with the Yilunemia disease to fall below 5%?

Possible answers:

  • 5
  • 6
  • 7
  • 8
  • 9

I've tried to apply usual formula for frequency after selection:

0.36 + 0.48 + 0.16 = 1

0.36 + 0.48 + 0.5 * 0.16 = 0.92

Divide by 0.92 gives:

0.39 + 0.52 + 0.087 = 1

If I keep doing this, after the 3rd generation, the frequency of Yilunemia condition is 0.045, which is less than 5%. However, this isn't an answer choice, therefore I must be doing something wrong.

Any suggestions?


1 Answer 1


The theory

You have to use the diploid selection equation (see here). Let $p$ be the the frequency of the recessive allele of interest, you get

$$p' = \frac{p^2 W_{aa} + p(1-p)W_{aA}}{\bar W}$$

, where

$$\bar W = p^2 W_{aa} + 2p(1-p)W_{aA} + (1-p)^2W_{AA}$$

You can simply iterate over with this equation. Do no forget to recompute $\bar W$ at each generation as the allele frequency changes, so does the mean fitness $\bar W$. Also, do not forget that we are looking for the generation where the frequency of sick individuals is lower than $0.05$, that is the generation where $p<\sqrt{0.05}$.

I don't think this recursion equation has any general solution unfortunately. This would mean that iteration is the only way to got.

The practice

I am a bit too lazy to compute everything by hand so here a short R code that will do the calculations for us.

frequencySickIndividuals = 0.16
p = sqrt(frequencyHomozygoteRecessiveMutants)
waa = 0.5
waA = 1
wAA = 1
for (generation in 0:10)
    frequencySickIndividuals = p^2
    cat(paste0("Generation ", generation, " frequency sick individuals = ", frequencySickIndividuals, "\n"))
    p = (p^2 * waa + p*(1-p)*waA) / (p^2*waa + 2*p*(1-p)*waA + (1-p)^2*wAA)

It outputs

Generation 0 frequency sick individuals = 0.16
Generation 1 frequency sick individuals = 0.120982986767486
Generation 2 frequency sick individuals = 0.0935350533786218
Generation 3 frequency sick individuals = 0.0738632061510922
Generation 4 frequency sick individuals = 0.0594638505565122
Generation 5 frequency sick individuals = 0.0487003101360286
Generation 6 frequency sick individuals = 0.0404940467744661
Generation 7 frequency sick individuals = 0.034123112395776
Generation 8 frequency sick individuals = 0.0290951856295452
Generation 9 frequency sick individuals = 0.0250680151553009
Generation 10 frequency sick individuals = 0.0217991643532054

So, it actually takes 5 generations to reach an allele frequency lower than $\sqrt{0.05}$.

Source of information on hardy-Weinberg problems

Note by the way, you might be interested in having a look at a tutorial on how to solve Hardy-Weinberg problems on the post Solving Hardy Weinberg problems.

  • $\begingroup$ I understand how to do it this way. I was thinking, given that I have no shouldn't take more than 1.5 minutes or so to (according to problem guidelines), if this is the fastest way to solving the problem. $\endgroup$ Commented Sep 25, 2017 at 4:20
  • $\begingroup$ Please see edit. $\endgroup$
    – Remi.b
    Commented Sep 25, 2017 at 16:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .