def test_from_unary_tree(self): tables = tskit.TableCollection(sequence_length=1) c = tables.nodes.add_row(flags=tskit.NODE_IS_SAMPLE, time=0) p = tables.nodes.add_row(time=1) tables.edges.add_row(left=0, right=1, parent=p, child=c) t = tables.tree_sequence().first() with self.assertRaises(ValueError): RankTree.from_tsk_tree(t)
def test_all_shapes_roundtrip(self): n = 5 all_rank_tree_shapes = RankTree.all_unlabelled_trees(n) all_tsk_tree_shapes = tskit.all_tree_shapes(n) for rank_tree, tsk_tree in zip(all_rank_tree_shapes, all_tsk_tree_shapes): assert rank_tree.shape_equal(RankTree.from_tsk_tree(tsk_tree))
def test_to_from_tsk_tree(self): for n in range(5): for tree in RankTree.all_labelled_trees(n): self.assertTrue(tree.is_canonical()) tsk_tree = tree.to_tsk_tree() reconstructed = RankTree.from_tsk_tree(tsk_tree) self.assertTrue(tree.is_canonical()) self.assertEqual(tree, reconstructed)
def test_all_labellings_roundtrip(self): n = 5 rank_tree = RankTree.unrank((comb.num_shapes(n) - 1, 0), n) tsk_tree = rank_tree.to_tsk_tree() rank_tree_labellings = RankTree.all_labellings(rank_tree) tsk_tree_labellings = tskit.all_tree_labellings(tsk_tree) for rank_t, tsk_t in zip(rank_tree_labellings, tsk_tree_labellings): self.assertEqual(rank_t, RankTree.from_tsk_tree(tsk_t))
def test_to_from_tsk_tree(self): for n in range(5): for tree in RankTree.all_labelled_trees(n): assert tree.is_canonical() tsk_tree = tree.to_tsk_tree() reconstructed = RankTree.from_tsk_tree(tsk_tree) assert tree.is_canonical() assert tree == reconstructed
def test_num_labellings(self): for n in range(2, 8): for tree in RankTree.all_unlabelled_trees(n): tree = tree.label_unrank(0) tree2 = tree.to_tsk_tree() n_labellings = sum(1 for _ in RankTree.all_labellings(tree)) assert n_labellings == RankTree.from_tsk_tree( tree2).num_labellings()
def test_unranking_is_canonical(self): for n in range(7): for shape_rank in range(comb.num_shapes(n)): for label_rank in range(comb.num_labellings(shape_rank, n)): t = RankTree.shape_unrank(shape_rank, n) self.assertTrue(t.is_canonical()) t = t.label_unrank(label_rank) self.assertTrue(t.is_canonical()) t = tskit.Tree.unrank((shape_rank, label_rank), n) self.assertTrue(RankTree.from_tsk_tree(t).is_canonical())
def test_generate_trees_roundtrip(self): n = 5 all_rank_trees = RankTree.all_labelled_trees(n) all_tsk_trees = tskit.all_trees(n) for rank_tree, tsk_tree in zip(all_rank_trees, all_tsk_trees): self.assertEqual(rank_tree, RankTree.from_tsk_tree(tsk_tree))