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"),
             ]
         )
Пример #3
0
 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'),
         ])
Пример #4
0
    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)"
            )
Пример #5
0
 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)
Пример #6
0
    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):
Пример #7
0
 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)