def test_different_lengths_error(self): ts1 = msprime.simulate(2, length=10, random_seed=1) ts2 = msprime.simulate(2, length=11, random_seed=1) with pytest.raises(ValueError): list(tsinfer.tree_pairs(ts1, ts2)) with pytest.raises(ValueError): list(tsinfer.tree_pairs(ts2, ts1))
def test_same_ts(self): n = 15 ts = msprime.simulate(n, recombination_rate=10, random_seed=10) self.assertGreater(ts.num_trees, 1) count = 0 for (left, right), tree1, tree2 in tsinfer.tree_pairs(ts, ts): self.assertEqual((left, right), tree1.interval) self.assertEqual(tree1.interval, tree2.interval) self.assertEqual(tree1.parent_dict, tree2.parent_dict) count += 1 self.assertEqual(count, ts.num_trees)
def test_same_ts(self): n = 15 ts = msprime.simulate(n, recombination_rate=10, random_seed=10) assert ts.num_trees > 1 count = 0 for (left, right), tree1, tree2 in tsinfer.tree_pairs(ts, ts): assert (left, right) == tree1.interval assert tree1.interval == tree2.interval assert tree1.parent_dict == tree2.parent_dict count += 1 assert count == ts.num_trees
def test_single_tree(self): n = 10 ts1 = msprime.simulate(n, random_seed=10) ts2 = msprime.simulate(n, random_seed=10) self.assertEqual(ts1.num_trees, 1) self.assertEqual(ts2.num_trees, 1) count = 0 for (left, right), tree1, tree2 in tsinfer.tree_pairs(ts1, ts2): self.assertEqual((0, 1), tree1.interval) self.assertEqual((0, 1), tree2.interval) self.assertIs(tree1.tree_sequence, ts1) self.assertIs(tree2.tree_sequence, ts2) count += 1 self.assertEqual(count, 1)
def test_single_tree(self): n = 10 ts1 = msprime.simulate(n, random_seed=10) ts2 = msprime.simulate(n, random_seed=10) assert ts1.num_trees == 1 assert ts2.num_trees == 1 count = 0 for (_left, _right), tree1, tree2 in tsinfer.tree_pairs(ts1, ts2): assert (0, 1) == tree1.interval assert (0, 1) == tree2.interval assert tree1.tree_sequence is ts1 assert tree2.tree_sequence is ts2 count += 1 assert count == 1
def test_many_trees(self): ts1 = msprime.simulate(20, recombination_rate=20, random_seed=10) ts2 = msprime.simulate(30, recombination_rate=10, random_seed=10) self.assertGreater(ts1.num_trees, 1) self.assertGreater(ts2.num_trees, 1) breakpoints = [0] for (left, right), tree2, tree1 in tsinfer.tree_pairs(ts2, ts1): breakpoints.append(right) self.assertGreaterEqual(left, tree1.interval[0]) self.assertGreaterEqual(left, tree2.interval[0]) self.assertLessEqual(right, tree1.interval[1]) self.assertLessEqual(right, tree2.interval[1]) self.assertIs(tree1.tree_sequence, ts1) self.assertIs(tree2.tree_sequence, ts2) all_breakpoints = set(ts1.breakpoints()) | set(ts2.breakpoints()) self.assertEqual(breakpoints, sorted(all_breakpoints))
def test_many_trees(self): ts1 = msprime.simulate(20, recombination_rate=20, random_seed=10) ts2 = msprime.simulate(30, recombination_rate=10, random_seed=10) assert ts1.num_trees > 1 assert ts2.num_trees > 1 breakpoints = [0] for (left, right), tree2, tree1 in tsinfer.tree_pairs(ts2, ts1): breakpoints.append(right) assert left >= tree1.interval[0] assert left >= tree2.interval[0] assert right <= tree1.interval[1] assert right <= tree2.interval[1] assert tree1.tree_sequence is ts1 assert tree2.tree_sequence is ts2 all_breakpoints = set(ts1.breakpoints()) | set(ts2.breakpoints()) assert breakpoints == sorted(all_breakpoints)
def test_many_trees_single_tree(self): n = 10 ts1 = msprime.simulate(n, random_seed=10) ts2 = msprime.simulate(n, recombination_rate=10, random_seed=10) self.assertEqual(ts1.num_trees, 1) self.assertGreater(ts2.num_trees, 1) trees2 = ts2.trees() count = 0 for (left, right), tree2, tree1 in tsinfer.tree_pairs(ts2, ts1): self.assertEqual((0, 1), tree1.interval) self.assertIs(tree1.tree_sequence, ts1) self.assertIs(tree2.tree_sequence, ts2) tree2p = next(trees2, None) if tree2p is not None: self.assertEqual(tree2.interval, tree2p.interval) self.assertEqual(tree2.parent_dict, tree2p.parent_dict) count += 1 self.assertEqual(count, ts2.num_trees)
def test_many_trees_single_tree(self): n = 10 ts1 = msprime.simulate(n, random_seed=10) ts2 = msprime.simulate(n, recombination_rate=10, random_seed=10) assert ts1.num_trees == 1 assert ts2.num_trees > 1 trees2 = ts2.trees() count = 0 for (_left, _right), tree2, tree1 in tsinfer.tree_pairs(ts2, ts1): assert (0, 1) == tree1.interval assert tree1.tree_sequence is ts1 assert tree2.tree_sequence is ts2 tree2p = next(trees2, None) if tree2p is not None: assert tree2.interval == tree2p.interval assert tree2.parent_dict == tree2p.parent_dict count += 1 assert count == ts2.num_trees
def test_different_lengths_error(self): ts1 = msprime.simulate(2, length=10, random_seed=1) ts2 = msprime.simulate(2, length=11, random_seed=1) self.assertRaises(ValueError, list, tsinfer.tree_pairs(ts1, ts2)) self.assertRaises(ValueError, list, tsinfer.tree_pairs(ts2, ts1))