def test_same_topology(self):
        p = skbio.TreeNode.read(['((a,b),c);'])
        s = skbio.TreeNode.read(['((a,b),c);'])

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s)

        for n in internal:
            self.assertEqual(n.support_count, 1)
    def test_same_topology(self):
        p = skbio.TreeNode.read(['((a,b),c);'])
        s = skbio.TreeNode.read(['((a,b),c);'])

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s)

        for n in internal:
            self.assertEqual(n.support_count, 1)
    def test_differing_topology(self):
        p = skbio.TreeNode.read(['(((a,b),c),d);'])
        s = skbio.TreeNode.read(['(((a,c),b),d);'])

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s)

        a_b = p.find('a').parent
        a_b_c = a_b.parent

        self.assertEqual(a_b.support_count, 0)
        self.assertEqual(a_b_c.support_count, 1)
    def test_differing_topology(self):
        p = skbio.TreeNode.read(['(((a,b),c),d);'])
        s = skbio.TreeNode.read(['(((a,c),b),d);'])

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s)

        a_b = p.find('a').parent
        a_b_c = a_b.parent

        self.assertEqual(a_b.support_count, 0)
        self.assertEqual(a_b_c.support_count, 1)
    def test_extra_node(self):
        p = skbio.TreeNode.read(['(((a,b),c),d);'])
        s = skbio.TreeNode.read(['((a,b),(c,d));'])
        # The first node that has a, b, and c, also has d as a descendant

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s)

        a_b = p.find('a').parent
        a_b_c = a_b.parent

        self.assertEqual(a_b.support_count, 1)
        self.assertEqual(a_b_c.support_count, 0)
    def test_extra_node(self):
        p = skbio.TreeNode.read(['(((a,b),c),d);'])
        s = skbio.TreeNode.read(['((a,b),(c,d));'])
        # The first node that has a, b, and c, also has d as a descendant

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s)

        a_b = p.find('a').parent
        a_b_c = a_b.parent

        self.assertEqual(a_b.support_count, 1)
        self.assertEqual(a_b_c.support_count, 0)
    def test_multiple_calls_with_outgroup(self):
        p = skbio.TreeNode.read(['((((a,b),c),d),e);'])
        s1 = skbio.TreeNode.read(['(((c,b),(a,d)),e);'])
        s2 = skbio.TreeNode.read(['((((a,c),b),d),e);'])
        # e is the outgroup here

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s1)
        _add_support_count(internal, s2)

        a_b = p.find('a').parent
        a_b_c = a_b.parent
        a_b_c_d = a_b_c.parent

        self.assertEqual(a_b.support_count, 0)
        self.assertEqual(a_b_c.support_count, 1)
        self.assertEqual(a_b_c_d.support_count, 2)
    def test_multiple_calls_with_outgroup(self):
        p = skbio.TreeNode.read(['((((a,b),c),d),e);'])
        s1 = skbio.TreeNode.read(['(((c,b),(a,d)),e);'])
        s2 = skbio.TreeNode.read(['((((a,c),b),d),e);'])
        # e is the outgroup here

        internal = list(p.non_tips())
        for n in internal:
            n.support_count = 0

        _add_support_count(internal, s1)
        _add_support_count(internal, s2)

        a_b = p.find('a').parent
        a_b_c = a_b.parent
        a_b_c_d = a_b_c.parent

        self.assertEqual(a_b.support_count, 0)
        self.assertEqual(a_b_c.support_count, 1)
        self.assertEqual(a_b_c_d.support_count, 2)