def test_shape_unrank(self): for n in range(6): for rank, tree in enumerate(RankTree.all_unlabelled_trees(n)): t = RankTree.shape_unrank(rank, n) self.assertTrue(tree.shape_equal(t)) for n in range(2, 9): for shape_rank, tree in enumerate(RankTree.all_unlabelled_trees(n)): tsk_tree = tskit.Tree.unrank((shape_rank, 0), n) self.assertEqual(shape_rank, tree.shape_rank()) shape_rank, _ = tsk_tree.rank() self.assertEqual(shape_rank, tree.shape_rank())
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_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_label_unrank(self): for n in range(7): for shape_rank, tree in enumerate(RankTree.all_unlabelled_trees(n)): for label_rank, labelled_tree in enumerate( RankTree.all_labellings(tree) ): rank = (shape_rank, label_rank) unranked = tree.label_unrank(label_rank) self.assertEqual(labelled_tree.rank(), rank) self.assertEqual(unranked.rank(), rank)
def test_unrank(self): for n in range(6): for shape_rank, t in enumerate(RankTree.all_unlabelled_trees(n)): for label_rank, labelled_tree in enumerate(RankTree.all_labellings(t)): unranked = RankTree.unrank((shape_rank, label_rank), n) self.assertTrue(labelled_tree == unranked) # The number of labelled trees gets very big quickly for n in range(6, 10): for shape_rank in range(comb.num_shapes(n)): rank = (shape_rank, 0) unranked = RankTree.unrank(rank, n) self.assertTrue(rank, unranked.rank()) rank = (shape_rank, comb.num_labellings(shape_rank, n) - 1) unranked = RankTree.unrank(rank, n) self.assertTrue(rank, unranked.rank())
def test_label_rank(self): for n in range(7): for tree in RankTree.all_unlabelled_trees(n): for rank, labelled_tree in enumerate(RankTree.all_labellings(tree)): self.assertEqual(labelled_tree.label_rank(), rank)
def test_shape_rank(self): for n in range(10): for rank, tree in enumerate(RankTree.all_unlabelled_trees(n)): self.assertEqual(tree.shape_rank(), rank)
def test_num_shapes(self): for i in range(11): all_trees = RankTree.all_unlabelled_trees(i) self.assertEqual(len(list(all_trees)), comb.num_shapes(i))
def test_shape_rank(self): for n in range(10): for rank, tree in enumerate(RankTree.all_unlabelled_trees(n)): assert tree.shape_rank() == rank
def test_num_shapes(self): for i in range(11): all_trees = RankTree.all_unlabelled_trees(i) assert len(list(all_trees)) == comb.num_shapes(i)