def test_single_tree_perfect_mutations(self): ts = msprime.simulate(5, random_seed=234) ts = tsinfer.insert_perfect_mutations(ts) A = tsinfer.get_ancestral_haplotypes(ts) B = self.get_matrix(ts) self.assertTrue(np.array_equal(A, B)) self.verify_single_tree(ts, A)
def test_many_trees_perfect_mutations(self): ts = get_smc_simulation(10, 100, 0.1, 1234) self.assertGreater(ts.num_trees, 1) ts = tsinfer.insert_perfect_mutations(ts) A = tsinfer.get_ancestral_haplotypes(ts) B = self.get_matrix(ts) self.assertTrue(np.array_equal(A, B)) self.verify_haplotypes(ts, A)
def test_many_trees(self): ts = msprime.simulate( 8, recombination_rate=10, mutation_rate=10, random_seed=234) self.assertGreater(ts.num_trees, 1) self.assertGreater(ts.num_sites, 1) A = tsinfer.get_ancestral_haplotypes(ts) B = self.get_matrix(ts) self.assertTrue(np.array_equal(A, B)) self.verify_haplotypes(ts, A)
def verify_single_tree_dense_mutations(self, ts): A = tsinfer.get_ancestral_haplotypes(ts) A = A[ts.num_samples:][::-1] n, m = A.shape ancestors, start, end, focal_sites = tsinfer.get_ancestor_descriptors(A) self.assertTrue(np.array_equal(A, ancestors[-n:])) self.assertEqual(start, [0 for _ in range(ancestors.shape[0])]) self.assertTrue(end, [m for _ in range(ancestors.shape[0])]) for j in range(1, ancestors.shape[0]): self.assertGreaterEqual(len(focal_sites[j]), 0) for site in focal_sites[j]: self.assertEqual(ancestors[j, site], 1)
def verify_single_tree_dense_mutations(self, ts): A = tsinfer.get_ancestral_haplotypes(ts) A = A[ts.num_samples:][::-1] n, m = A.shape ancestors, start, end, focal_sites = tsinfer.get_ancestor_descriptors( A) assert np.array_equal(A, ancestors[-n:]) assert start == [0 for _ in range(ancestors.shape[0])] assert end, [m for _ in range(ancestors.shape[0])] for j in range(1, ancestors.shape[0]): assert len(focal_sites[j]) >= 0 for site in focal_sites[j]: assert ancestors[j, site] == 1
def verify_many_trees_dense_mutations(self, ts): A = tsinfer.get_ancestral_haplotypes(ts) A = A[ts.num_samples:][::-1] tsinfer.get_ancestor_descriptors(A) ancestors, start, end, focal_sites = tsinfer.get_ancestor_descriptors(A) n, m = ancestors.shape self.assertEqual(m, ts.num_sites) self.assertTrue(np.all(ancestors[0, :] == 0)) for a, s, e, focal in zip(ancestors[1:], start[1:], end[1:], focal_sites[1:]): self.assertTrue(0 <= s < e <= m) self.assertTrue(np.all(a[:s] == tskit.MISSING_DATA)) self.assertTrue(np.all(a[e:] == tskit.MISSING_DATA)) self.assertTrue(np.all(a[s:e] != tskit.MISSING_DATA)) for site in focal: self.assertEqual(a[site], 1)
def test_single_tree(self): ts = msprime.simulate(5, mutation_rate=10, random_seed=234) A = tsinfer.get_ancestral_haplotypes(ts) B = self.get_matrix(ts) assert np.array_equal(A, B) self.verify_single_tree(ts, A)