def test_two_deme_growth_without_hard_reset(self): N0 = [90, 10] md = np.array(self.pop.diploid_metadata, copy=False) md['deme'][N0[0]:] = 1 t = [14, 23] # generations of growth in each deme N1 = [5361, 616] G0 = np.exp((np.log(N1[0]) - np.log(N0[0])) / t[0]) G1 = np.exp((np.log(N1[1]) - np.log(N0[1])) / t[1]) g = [] g.append(fwdpy11.SetExponentialGrowth(7, 0, G0)) g.append(fwdpy11.SetExponentialGrowth(7 + t[0], 0, fwdpy11.NOGROWTH)) g.append(fwdpy11.SetExponentialGrowth(33, 1, G1)) g.append(fwdpy11.SetExponentialGrowth(33 + t[1], 1, fwdpy11.NOGROWTH)) # after X generations of growth, N[0] changes to 100 # and the growth rate is not reset. p = [fwdpy11.SetDemeSize(11, 0, 100, False)] d = fwdpy11.DiscreteDemography(set_growth_rates=g, set_deme_sizes=p) ddr.DiscreteDemography_roundtrip(self.rng, self.pop, d, 100) md = np.array(self.pop.diploid_metadata, copy=False) deme_sizes = np.unique(md['deme'], return_counts=True) N1[0] = np.round(100. * np.power(G0, 7 + t[0] - 11)) self.assertEqual(self.pop.N, sum(N1)) for i, j in zip(deme_sizes[1], N1): self.assertEqual(i, j)
def test_two_deme_growth_with_hard_reset(self): N0 = [90, 10] md = np.array(self.pop.diploid_metadata, copy=False) md['deme'][N0[0]:] = 1 t = [14, 23] # generations of growth in each deme N1 = [5361, 616] G0 = np.exp((np.log(N1[0]) - np.log(N0[0])) / t[0]) G1 = np.exp((np.log(N1[1]) - np.log(N0[1])) / t[1]) g = [] g.append(fwdpy11.SetExponentialGrowth(7, 0, G0)) g.append(fwdpy11.SetExponentialGrowth(33, 1, G1)) g.append(fwdpy11.SetExponentialGrowth(33 + t[1], 1, fwdpy11.NOGROWTH)) # Cut off the growth in deme 0 after a few generations, # and manually set the new deme size to 100 w/no growth p = [fwdpy11.SetDemeSize(11, 0, 100)] d = fwdpy11.DiscreteDemography(set_deme_sizes=p, set_growth_rates=g) ddr.DiscreteDemography_roundtrip(self.rng, self.pop, d, 100) md = np.array(self.pop.diploid_metadata, copy=False) deme_sizes = np.unique(md['deme'], return_counts=True) N1 = [100, N1[1]] self.assertEqual(self.pop.N, sum(N1)) for i, j in zip(deme_sizes[1], N1): self.assertEqual(i, j)
def test_invalid_deme(self): with self.assertRaises(ValueError): self.dpsc = fwdpy11.SetDemeSize(0, -1, 3)
def setUpClass(self): self.ddsc = fwdpy11.SetDemeSize(0, 1, 3)
def test_init_with_two_deme_size_changes_same_generation(self): c = [fwdpy11.SetDemeSize(0, 1, 15151)] * 2 with self.assertRaises(ValueError): fwdpy11.DiscreteDemography(set_deme_sizes=c)
def test_setting_size_changes(self): c = [fwdpy11.SetDemeSize(0, 1, 15151)] fwdpy11.DiscreteDemography(set_deme_sizes=c)