knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

In this vignette, we want to study when a polymorphism is maintain in a sex-antagonistic situation. We consider a very simple model with a XX/XY sexual determination system and another sex-antagonist locus.

Full linkage

If both locus are fully linked, it seems reasonable to think that the allele beneficial to male will fix on the y as soon as it is beneficial to male. The question is more what happen with the allele on the X. We will see that it depends on various parameters.

Symetric sex-antagonist gene

If the sex-antagonistic gene is as strong in male and in female, we could suppose (and this is actually correct) that the X chromosome will fix the allele benefitial to female since it's spend twice as much time in female than in male.

First we create two locus, one which is a XY locus, which determine the sex, and the other which is a sex-antagonistic gene. We then create a genome from this two locus.

locus1 = create.locus(allele1=c(1,1),
                      allele2 = c(1,2),
                      sd = c(0,1),
                      fitness.male=c(1,1),
                      fitness.female=c(1,1),
                      allele.name = c("x","y"))
locus2 = create.locus(allele1=  c(1,1,2),
                      allele2 = c(1,2,2),
                      fitness.female = c(1,0.9,0.8),
                      fitness.male = c(0.8,0.9,1),
                      allele.name = c("F","M"))
genome = create.genome(list(locus1,locus2))
print(genome)

From this genome, we can compute the evolution of the frequency of the various genotype, using the function compte.frequency.evolution. By default, all genotype start with the same frequency.

freqs <- compute.frequency.evolution(genome, generations=200)

We can now directly plot the result.

plot.haplotype.frequency(genome, freqs)

We indeed see that the F allele fix on the X, and the M on the y.

Assymetric Sex-antagonistic selection

So to make the problem more interesting, we can ask the question of what happen if the sex-antagonistic gene does not act in a symetric way but cost more to male than to female? Let's discover this together.

#locus 1 is the same as before
locus2 = create.locus(allele1=  c(1,1,2),
                      allele2 = c(1,2,2),
                      fitness.female = c(1,0.9,0.8),
                      fitness.male = c(0.6,0.8,1),
                      allele.name = c("F","M"))
genome = create.genome(list(locus1,locus2))
print(genome)
freqs <- compute.frequency.evolution(genome, generations=200)
plot.haplotype.frequency(genome, freqs)

On this plot, we directly see that the yF haplotype goes rapidely to zero, as expected. We also see that on the X chromosome, a polymorphism is maintained.

When does polymorphisme appears?

In the first case, the ratio of SA selection strength between male and female was 2, and this lead to a polymorphism. Since the X chromosome spend twice as much time in female than in male, we somehow expected it. On the other hand, we have seen that if we take a ratio of 1 between SA in male and female, the polymorphism disapear. This rise the question whether the polymorphism only exist for a ratio of 2, or if it also exist for some intermediate value (between 2 and 1). To adress this question, we will plot the polymorphism on the X chromosome as a function of the assymetry between the strenght of the sex-antagonistic gene.

all.final.polymorphism <- c()
sequence <- seq(0,2,0.025)
for(assymetry in sequence)
{
locus2 = create.locus(allele1=  c(1,1,2),
                      allele2 = c(1,2,2),
                      fitness.female = c(1,0.9,0.8),
                      fitness.male = c(0.8-2*assymetry*0.1,0.9-assymetry*0.1,1),
                      allele.name = c("F","M"))
genome = create.genome(list(locus1,locus2))
freqs <- compute.frequency.evolution(genome, generations=500)
haplotype.freq <- get.haplotype.frequency(genome, freqs)
final.polymorphism <- haplotype.freq[1,ncol(haplotype.freq)]-haplotype.freq[2,ncol(haplotype.freq)]
all.final.polymorphism <- c(all.final.polymorphism,final.polymorphism)
}
plot(sequence,all.final.polymorphism,xlab = "strength of assymetry",ylab="xm-xf",main="evolution of the polymorphism when changing the SA")

So we see that there is a polymorphism on a rather large scale, and that if the disadvantage for carrying a female allele for the male is to big, the male allele will actually be fixed.

With recombination

If we have full recombination, we expect to have a polymorphism when the two strength are the same, and to fix one allele (either male or female) if the difference in strength becomes too big between male and female

The definition is almost the same as before. The only difference is that we add a recombination between the two locus when we build the genome

locus1 = create.locus(allele1=c(1,1),
                      allele2 = c(1,2),
                      sd = c(0,1),
                      fitness.male=c(1,1),
                      fitness.female=c(1,1),
                      allele.name = c("x","y"))
locus2 = create.locus(allele1=  c(1,1,2),
                      allele2 = c(1,2,2),
                      fitness.female = c(1,0.9,0.8),
                      fitness.male = c(0.8,0.9,1),
                      allele.name = c("F","M"))
genome = create.genome(list(locus1,locus2),
                       male.recombination = c(0.05),
                       female.recombination = c(0.05))
freqs <- compute.frequency.evolution(genome, generations=200)
plot.haplotype.frequency(genome, freqs)

So we indeed observe a polymorphism on the X. We can wonder how strong is the polymorphism as a function of the recombination rate:

all.final.polymorphism <- c()
all.recombination.rate <- seq(0,0.5,0.01)
for(recombination.rate in all.recombination.rate){
  genome = create.genome(list(locus1,locus2),male.recombination = c(recombination.rate),female.recombination = c(recombination.rate))
  freqs <- compute.frequency.evolution(genome, generations=200)
  haplotype.freq <- get.haplotype.frequency(genome, freqs)
  final.polymorphism <- haplotype.freq[1,ncol(haplotype.freq)]-haplotype.freq[2,ncol(haplotype.freq)]
  all.final.polymorphism <- c(all.final.polymorphism,final.polymorphism)
}
plot(all.recombination.rate,all.final.polymorphism,xlab = "recombination rate",ylab = "Xm-Xf","polymorphism as a function of the recombination rate")


frederic-michaud/hapex documentation built on May 15, 2019, 3:29 p.m.