def get_species_tree(self, ntax=10): _RNG = MockRandom() ages = [_RNG.randint(1000, 10000) for age in range(ntax)] ages.sort() pop_sizes = [_RNG.randint(1000, 10000) for pop in range(2 * ntax + 1)] taxon_namespace = dendropy.TaxonNamespace( ["t{}".format(i + 1) for i in range(ntax)]) species_tree = popgensim.pop_gen_tree(taxon_namespace=taxon_namespace, ages=ages, num_genes=4, pop_sizes=pop_sizes, rng=_RNG) ages2 = [] for node in species_tree.postorder_node_iter(): distance_from_tip = node.distance_from_tip() if distance_from_tip > 0: ages2.append(distance_from_tip) ages2.sort() for index in range(len(ages2)): assert (ages[index] - ages2[index]) < 10e-6 pop_sizes2 = [] for edge in species_tree.postorder_edge_iter(): pop_sizes2.append(edge.pop_size) pop_sizes2.sort() return species_tree
def get_species_tree(self, ntax=10): _RNG = MockRandom() ages = [_RNG.randint(1000,10000) for age in range(ntax)] ages.sort() pop_sizes = [_RNG.randint(1000,10000) for pop in range(2*ntax+1)] taxon_namespace = dendropy.TaxonNamespace(["t{}".format(i+1) for i in range(ntax)]) species_tree = popgensim.pop_gen_tree(taxon_namespace=taxon_namespace, ages=ages, num_genes=4, pop_sizes=pop_sizes, rng=_RNG) ages2 = [] for node in species_tree.postorder_node_iter(): distance_from_tip = node.distance_from_tip() if distance_from_tip > 0: ages2.append(distance_from_tip) ages2.sort() for index in range(len(ages2)): assert (ages[index] - ages2[index]) < 10e-6 pop_sizes2 = [] for edge in species_tree.postorder_edge_iter(): pop_sizes2.append(edge.pop_size) pop_sizes2.sort() return species_tree
def runTest(self): expected = [ 0.01, 0.0039340474963855641, 0.001632232380666595, 0.014428659286578023, 0.016389703355764434, 0.0021307292762983254, 0.45394897294494657, 0.48407248276349046, 0.022176546909804414, 0.0036827493270788596, 0.51000000000000001, 0.20436786045422725, 1.1317505850563239, 0.080717426949510368, 0.57473474392305157, 0.47757106516375003, 0.036289663562129378, 1.2605207376608101, 0.025598569446275875, 0.02436667769068299, 1.01, 1.4219020757916292, 0.17096215398172529, 1.0457715847484181, 1.008417839353775, 0.15725202748916964, 0.073470806288836357, 0.80215768313618252, 7.7309806110114048, 7.4444231676578108, 1.51, 1.1317576595037642, 9.1122414408448513, 11.189808222817929, 0.41506807319133626, 0.02680783090697382, 1.0744945504810126, 1.2341438671393068, 34.534823123534657, 0.70551794392946265, 2.0099999999999998, 3.5146301765484438, 4.2304827507410794, 3.7634976514794487, 0.17384383517242785, 0.27619684368030367, 2.7283343215701814, 11.197459097867025, 1.9925358755666318, 0.036458466937595801, 2.5099999999999998, 3.5972933316044275, 6.6566017084647564, 2.7893078600612546, 6.720705581299355, 1.6854424538625612, 0.83930915760416014, 0.00031692818644330357, 10.67426820212137, 213.41625387395686, 3.0099999999999998, 4.0529230827852576, 0.88784100563352941, 0.26617006989932601, 6.9084440279478647, 5.5318019658942186, 5.436724012051565, 3.8204558144079903, 4.6743721423293518, 2.678678109503108, 3.5099999999999998, 9.1966644910421707, 0.40392639090720356, 5.0919329843369292, 3.5004215324170675, 153.00193917129431, 39.050739500681885, 0.13207256469121023, 3473.1260500607032, 56.051794289673808, 4.0099999999999998, 16.669107027752826, 1.4876702070018706, 0.30960589864113691, 19.637794491060113, 2.0587090258674543, 7.9530766255051635, 1.0110130970614859, 0.1077409554922503, 1.6140032678015137, 4.5099999999999998, 17.245125079032153, 9.1315662720433046, 4.6324044639076911, 6.2649028812690863, 27.752754239037028, 0.87084078040787383, 0.76722197209428222, 0.32248653474293604, 55.963410447025701 ] rng = MockRandom() y = [ continuous._calc_TKP_rate(0.01 + .5 * i, 1, j, rng) for i in range(10) for j in range(10) ] assert_vec_approx_equal(y, expected, tester=self) rng = MockRandom() y = [ continuous._calc_TKP_rate(0.01 + .5 * i, j, 1, rng) for i in range(10) for j in range(10) ] assert_vec_approx_equal(y, expected, tester=self) try: continuous._calc_TKP_rate(0, 1, 1, rng) except ValueError: pass except OverflowError: pass
def runTest(self): expected = [ 0.01, 0.00238612042332357, 0.00060046473606155989, 0.0032194690573412836, 0.0022181051458164411, 0.00017490090971284891, 0.022600788551531675, 0.014617722366202806, 0.00040617762499905189, 4.0911649525733303e-05, 0.51000000000000001, 0.12395537322536185, 0.41634777277597329, 0.018010492402013432, 0.077781889354748265, 0.039201420226780297, 0.0018067559608145154, 0.038064428026927236, 0.000468854154046173, 0.00027068933811426338, 1.01, 0.86242720407665974, 0.062893461668263165, 0.23334318118359176, 0.13647451390979612, 0.012908032460053776, 0.0036578960557443821, 0.024223063122821967, 0.14159784912709042, 0.082700071198721442, 1.51, 0.686445719853644, 3.3522062890772624, 2.4967837007875815, 0.056173355247824582, 0.0022005207631086566, 0.053495933645695409, 0.037267915554308549, 0.63252734941696775, 0.0078375963967802359, 2.0099999999999998, 2.1317309596278573, 1.5563076302280545, 0.83974983369284895, 0.023527204671999535, 0.022671617533422929, 0.13583576739840431, 0.33813396573401916, 0.036494567569726223, 0.00040501698299937316, 2.5099999999999998, 2.1818686975978907, 2.4488269166108831, 0.62237870951874186, 0.90954859339503202, 0.13834954150596895, 0.041786742411412607, 9.5704019633684995e-06, 0.19550604179155287, 2.3708404254904281, 3.0099999999999998, 2.4582221111663025, 0.32661845300155418, 0.059390570323355388, 0.9349562292466097, 0.45407795675810753, 0.27067855008521879, 0.1153677690757042, 0.085614112190463207, 0.029757425845535486, 3.5099999999999998, 5.5780589809075565, 0.14859621496133962, 1.1361638222601711, 0.47373053953720168, 12.559163966329541, 1.9442218373360938, 0.003988245875549439, 63.612522547967608, 0.62267918872625649, 4.0099999999999998, 10.110324482363417, 0.54728328439925211, 0.069082413746695395, 2.657686479590013, 0.16898912755533801, 0.39596036968888626, 0.030529950136951384, 0.0019733444343232381, 0.017929956714718788, 4.5099999999999998, 10.45969709101225, 3.3593154971792818, 1.0336291499040244, 0.84786240588642281, 2.278084793520756, 0.043356609471690816, 0.023168096061358393, 0.0059065469168308469, 0.62169733292424179 ] rng = MockRandom() y = [ continuous._calc_KTB_rate(0.01 + .5 * i, 1, j, rng) for i in range(10) for j in range(10) ] assert_vec_approx_equal(y, expected, tester=self) rng = MockRandom() y = [ continuous._calc_KTB_rate(0.01 + .5 * i, j, 1, rng) for i in range(10) for j in range(10) ] assert_vec_approx_equal(y, expected, tester=self) self.assertRaises(ValueError, continuous._calc_KTB_rate, 0, 1, 1, rng)
def test_resolve_polytomies_at_root(self): for tree_string in ( "(a,b,c,d)e;", ): for rooting in ("[&R]", "[&U]"): tree_string2 = rooting + " " + tree_string # cycle through rng period self.verify_resolve_polytomies(tree_string2, None) for x in range(1001): rng = MockRandom() for i in range(x): rng.uniform(0, 1) self.verify_resolve_polytomies(tree_string2, rng)
def testBDTree(self): """PureCoalescentTreeTest -- tree generation without checking [TODO: checks]""" _RNG = MockRandom() for num_leaves in range(2, 20): t = birthdeath.birth_death_tree(birth_rate=1.0, death_rate=0.2, num_extant_tips=num_leaves, rng=_RNG) self.assertTrue(t._debug_tree_is_valid()) self.assertEqual(num_leaves, len(t.leaf_nodes()))
def testGSA(self): """test that the pure-birth process produces the correct number of tips with GSA.""" _RNG = MockRandom() for num_leaves in range(2, 20): t = birthdeath.birth_death_tree(birth_rate=1.0, death_rate=0.0, num_extant_tips=num_leaves, gsa_ntax=4*num_leaves, rng=_RNG) self.assertTrue(t._debug_tree_is_valid()) self.assertEqual(num_leaves, len(t.leaf_nodes()))
def runTest(self): """PureCoalescentTreeTest -- tree generation without checking [TODO: checks]""" _RNG = MockRandom() tns = dendropy.TaxonNamespace( ["t{}".format(i + 1) for i in range(100)]) t = coalescent.pure_kingman_tree(tns, rng=_RNG) assert t._debug_tree_is_valid()
def runTest(self): rng = MockRandom() newick = "((t5:1611.75,t6:1611.75):3922.93,((t4:1043.81,(t2:754.11,t1:754.11):2896.9):6584.0,t3:1702.21):3832.47);" tree = dendropy.Tree.get_from_string(newick, "newick") root = tree.seed_node root.mutation_rate = 1e-5 root.mean_edge_rate = root.mutation_rate continuous.evolve_continuous_char(root, rng, roeotroe=0.01, min_rate=1.0e-6, max_rate=1.0e-3, model='KTB', time_attr='edge_length', val_attr='mutation_rate', mean_val_attr='mean_edge_rate', constrain_rate_mode="linear_bounce") for i in tree.preorder_node_iter(): if i.edge_length is not None: i.edge_length *= i.mean_edge_rate