def testSummarizeNodeAgesOnMCCT(self): """ SumTrees: summarizing node ages on MCCT topology. """ if runlevel.is_test_enabled(runlevel.EXHAUSTIVE, _LOG, self.__class__.__name__): path_to_src = pathmap.tree_source_path("primates.beast.mcmc.trees") path_to_target = pathmap.tree_source_path("primates.beast.mcct.noedgelens.tree") args = ["-b", "40", "-e", "mean-age", "-t", path_to_target, path_to_src] retcode, stdout, stderr = self.execute_sumtrees(args) self.assertEqual(retcode, 0) taxa = dendropy.TaxonSet() exp_tree = dendropy.Tree.get_from_path(pathmap.tree_source_path("primates.beast.mcct.meanh.tre"), "nexus", taxon_set=taxa) obs_tree = dendropy.Tree.get_from_string(stdout, "nexus", taxon_set=taxa) exp_tree.update_splits() exp_tree.calc_node_ages() obs_tree.update_splits() obs_tree.calc_node_ages() self.assertEqual(exp_tree.split_edges.keys(), obs_tree.split_edges.keys()) splits = exp_tree.split_edges.keys() for split in splits: exp_edge = exp_tree.split_edges[split] obs_edge = obs_tree.split_edges[split] self.assertAlmostEqual(obs_edge.head_node.age, exp_edge.head_node.age) else: _LOG.info("Skipping test (set 'DENDROPY_TESTING_LEVEL=EXHAUSTIVE' to run)")
def setUp(self): self.test_cases = [("pythonidae.reference-trees.nexus", "pythonidae.reference-trees.nexus")] if runlevel.is_test_enabled(runlevel.SLOW, _LOG, self.__class__.__name__): self.test_cases.extend( [ ("feb032009.trees.nexus", "feb032009.trees.nexus"), ("maj-rule-bug1.trees.nexus", "maj-rule-bug1.trees.nexus"), ("maj-rule-bug2.trees.nexus", "maj-rule-bug2.trees.nexus"), ] )
def setUp(self): self.test_cases = [('pythonidae.reference-trees.nexus', 'pythonidae.reference-trees.nexus')] if runlevel.is_test_enabled(runlevel.SLOW, _LOG, self.__class__.__name__): self.test_cases.extend([ ('feb032009.trees.nexus', 'feb032009.trees.nexus'), ('maj-rule-bug1.trees.nexus', 'maj-rule-bug1.trees.nexus'), ('maj-rule-bug2.trees.nexus', 'maj-rule-bug2.trees.nexus'), ])
def testSummarizeNodeAgesOnMCCT(self): """ SumTrees: summarizing node ages on MCCT topology. """ if runlevel.is_test_enabled(runlevel.EXHAUSTIVE, _LOG, self.__class__.__name__): path_to_src = pathmap.tree_source_path("primates.beast.mcmc.trees") path_to_target = pathmap.tree_source_path( "primates.beast.mcct.noedgelens.tree") args = [ "-b", "40", "-e", "mean-age", "-t", path_to_target, path_to_src ] retcode, stdout, stderr = self.execute_sumtrees(args) self.assertEqual(retcode, 0) taxa = dendropy.TaxonSet() exp_tree = dendropy.Tree.get_from_path( pathmap.tree_source_path("primates.beast.mcct.meanh.tre"), "nexus", taxon_set=taxa) obs_tree = dendropy.Tree.get_from_string(stdout, "nexus", taxon_set=taxa) exp_tree.update_splits() exp_tree.calc_node_ages() obs_tree.update_splits() obs_tree.calc_node_ages() self.assertEqual(exp_tree.split_edges.keys(), obs_tree.split_edges.keys()) splits = exp_tree.split_edges.keys() for split in splits: exp_edge = exp_tree.split_edges[split] obs_edge = obs_tree.split_edges[split] self.assertAlmostEqual(obs_edge.head_node.age, exp_edge.head_node.age) else: _LOG.info( "Skipping test (set 'DENDROPY_TESTING_LEVEL=EXHAUSTIVE' to run)" )
def testSimple(self): if not is_test_enabled(runlevel.SLOW, _LOG, module_name=__name__, message="skipping all rotation scm tests"): return clades = ['A', 'D', None, None] for m in [0, 1]: four_sisters = ['B', 'C'] clades[2] = '(%s,%s)' % (four_sisters[m], four_sisters[1-m]) for i in [0, 1, 2]: for j in [0, 1, 2]: if i == j: continue k = [0, 1, 2] k.remove(i) k.remove(j) k = k[0] base = [clades[i], clades[j], clades[k]] four_taxon_newick = '(%s);' % ','.join(base) for ii in [0, 1, 2]: for jj in [0, 1, 2]: if ii == jj: continue kk = [0, 1, 2] kk.remove(ii) kk.remove(jj) kk = kk[0] base = [clades[ii], clades[jj], clades[kk]] for n in range(4): if n == 0: for p in range(4): c = copy.copy(base) c.insert(p, 'E') five_taxon_newick = '(%s);' % ','.join(c) self.dofour_five_compat(four_taxon_newick, five_taxon_newick) elif n == 1: for p in range(3): c = copy.copy(base) sisters = [base[p], 'E'] for q in [0,1]: c[p] = '(%s,%s)' % (sisters[q], sisters[1-q]) five_taxon_newick = '(%s);' % ','.join(c) self.dofour_five_compat(four_taxon_newick, five_taxon_newick) elif n == 2: sc = copy.copy(clades) for p in range(3): upc = copy.copy(four_sisters) upc.insert(p, 'E') sc[2] = '(%s)' % ','.join(upc) nsc = [sc[ii], sc[jj], sc[kk]] five_taxon_newick = '(%s);' % ','.join(nsc) self.dofour_five_compat(four_taxon_newick, five_taxon_newick) else: for p in range(2): for q in range(2): upc = copy.copy(four_sisters) s = upc[p] ns = [s, 'E'] upc[p] = '(%s,%s)' % (ns[q], ns[1-q]) for r in range(2): third = '(%s,%s)' % (upc[r], upc[1-r]) nc = [clades[0], clades[1], third] five_taxon_newick = '(%s);' % ','.join(nc) self.dofour_five_compat(four_taxon_newick, five_taxon_newick)
BEGIN TAXA; DIMENSIONS NTAX=5; TAXLABELS A B C D E ; END; begin trees; tree true=(A:0.25,(B:0.25,(C:0.25,(D:0.25,E:0.25):0.25):0.25):0.25):0.25; end; """ if runlevel.is_test_enabled(runlevel.SLOW, _LOG, __name__, "skipping all sequence generation frequency checking"): class SeqSimTest(unittest.TestCase): def setUp(self): self.tree_model = dendropy.Tree.get_from_string(tree_model_string, schema="NEXUS") assert self.tree_model.taxon_set is not None def estimate_params(self, seq_len=10000, kappa=1.0, base_freqs=[0.25, 0.25, 0.25, 0.25], unequal_base_freqs=True, gamma_rates=False, prop_invar=False):
def testSimple(self): if not is_test_enabled(runlevel.SLOW, _LOG, module_name=__name__, message="skipping all rotation scm tests"): return clades = ['A', 'D', None, None] for m in [0, 1]: four_sisters = ['B', 'C'] clades[2] = '(%s,%s)' % (four_sisters[m], four_sisters[1 - m]) for i in [0, 1, 2]: for j in [0, 1, 2]: if i == j: continue k = [0, 1, 2] k.remove(i) k.remove(j) k = k[0] base = [clades[i], clades[j], clades[k]] four_taxon_newick = '(%s);' % ','.join(base) for ii in [0, 1, 2]: for jj in [0, 1, 2]: if ii == jj: continue kk = [0, 1, 2] kk.remove(ii) kk.remove(jj) kk = kk[0] base = [clades[ii], clades[jj], clades[kk]] for n in range(4): if n == 0: for p in range(4): c = copy.copy(base) c.insert(p, 'E') five_taxon_newick = '(%s);' % ','.join( c) self.dofour_five_compat( four_taxon_newick, five_taxon_newick) elif n == 1: for p in range(3): c = copy.copy(base) sisters = [base[p], 'E'] for q in [0, 1]: c[p] = '(%s,%s)' % (sisters[q], sisters[1 - q]) five_taxon_newick = '(%s);' % ','.join( c) self.dofour_five_compat( four_taxon_newick, five_taxon_newick) elif n == 2: sc = copy.copy(clades) for p in range(3): upc = copy.copy(four_sisters) upc.insert(p, 'E') sc[2] = '(%s)' % ','.join(upc) nsc = [sc[ii], sc[jj], sc[kk]] five_taxon_newick = '(%s);' % ','.join( nsc) self.dofour_five_compat( four_taxon_newick, five_taxon_newick) else: for p in range(2): for q in range(2): upc = copy.copy(four_sisters) s = upc[p] ns = [s, 'E'] upc[p] = '(%s,%s)' % (ns[q], ns[1 - q]) for r in range(2): third = '(%s,%s)' % ( upc[r], upc[1 - r]) nc = [ clades[0], clades[1], third ] five_taxon_newick = '(%s);' % ','.join( nc) self.dofour_five_compat( four_taxon_newick, five_taxon_newick)