def testSingleLocusChromosomeX(self): sel = MySelectorProvider(self.pop, [1], [0], [self.fs], [self.ms]) selectors = sel.setSelector() for s in selectors: s.apply(self.pop) for i in range(2): if i == 0: f = [1.0, self.fs, self.fs**2] m = [1.0, self.ms] else: f = [self.fs**2, self.fs, 1.0] m = [self.ms, 1.0] for ind in self.pop.individuals(subPop=[i]): if ind.sex() == sim.FEMALE: genotype = tuple(ind.allele(0, ploidy=p, chrom=1) for p in range(2)) if genotype == (0, 0): self.assertAlmostEqual(ind.fitness, f[0]) elif genotype == (0, 1) or genotype == (1, 0): self.assertAlmostEqual(ind.fitness, f[1]) else: self.assertAlmostEqual(ind.fitness, f[2]) else: genotype = tuple(ind.allele(0, ploidy=0, chrom=1) for p in range(1)) if genotype == (0,): self.assertAlmostEqual(ind.fitness, m[0]) else: self.assertAlmostEqual(ind.fitness, m[1])
def testSingleLocusMitochondria(self): sel = MySelectorProvider(self.pop, [3], [0], [self.fs], [self.ms]) selectors = sel.setSelector() for s in selectors: s.apply(self.pop) for i in range(2): if i == 0: f = [1.0, self.fs] m = [1.0, self.ms] else: f = [self.fs, 1.0] m = [self.ms, 1.0] for ind in self.pop.individuals(subPop=[i]): genotype = tuple(ind.allele(0, ploidy=p, chrom=3) for p in range(2)) if ind.sex() == sim.FEMALE: if genotype == (0, 0): self.assertAlmostEqual(ind.fitness, f[0]) else: self.assertAlmostEqual(ind.fitness, f[1]) if ind.sex() == sim.MALE: if genotype == (0, 0): self.assertAlmostEqual(ind.fitness, m[0]) else: self.assertAlmostEqual(ind.fitness, m[1])
def testTwoLociYMt(self): sel = MySelectorProvider(self.pop, [2, 3], [0, 0], [self.fs, self.fs], [self.ms, self.ms]) selectors = sel.setSelector() for s in selectors: s.apply(self.pop) for i in range(2): if i == 0: # # of "1" alleles f = [1.0, self.fs] m = [1.0, self.ms, self.ms**2] else: f = [self.fs, 1.0] m = [self.ms**2, self.ms, 1.0] for ind in self.pop.individuals(subPop=[i]): # Mitochondria genotype = len([1 for i in ind.genotype(chroms = [3], ploidy = 0) if i == 1]) if ind.sex() == sim.FEMALE: self.assertAlmostEqual(ind.fitness, f[genotype]) else: # Chromosome Y genotype += len([1 for i in ind.genotype(chroms = [2], ploidy = 1) if i == 1]) self.assertAlmostEqual(ind.fitness, m[genotype])
def testSingleLocusChromosomeY(self): sel = MySelectorProvider(self.pop, [2], [0], [self.fs], [self.ms]) selectors = sel.setSelector() for s in selectors: s.apply(self.pop) for i in range(2): if i == 0: m = [1.0, self.ms] else: m = [self.ms, 1.0] for ind in self.pop.individuals(subPop=[i]): if ind.sex() == sim.MALE: genotype = tuple(ind.allele(0, ploidy=1, chrom=2) for p in range(1)) if genotype == (0,): self.assertAlmostEqual(ind.fitness, m[0]) else: self.assertAlmostEqual(ind.fitness, m[1])
def testThreeLociAXY(self): sel = MySelectorProvider(self.pop, [0, 1, 2], [0, 0, 0], [self.fs, self.fs, self.fs], [self.ms, self.ms, self.ms]) selectors = sel.setSelector() for s in selectors: s.apply(self.pop) for i in range(2): if i == 0: # # of "1" alleles f = [1.0, self.fs, self.fs**2, self.fs**3, self.fs**4] m = [1.0, self.ms, self.ms**2, self.ms**3, self.ms**4] else: f = [self.fs**4, self.fs**3, self.fs**2, self.fs, 1.0] m = [self.ms**4, self.ms**3, self.ms**2, self.ms, 1.0] for ind in self.pop.individuals(subPop=[i]): # Autosome genotype = len([1 for p in range(2) for i in ind.genotype(chroms = [0], ploidy = p) if i == 1]) if ind.sex() == sim.FEMALE: # Chromosome X genotype += len([1 for p in range(2) for i in ind.genotype(chroms = [1], ploidy = p) if i == 1]) self.assertAlmostEqual(ind.fitness, f[genotype]) else: # Chromosome X genotype += len([1 for i in ind.genotype(chroms = [1], ploidy = 0) if i == 1]) # Chromosome Y genotype += len([1 for i in ind.genotype(chroms = [2], ploidy = 1) if i == 1]) self.assertAlmostEqual(ind.fitness, m[genotype])