def test_multiple_recombinations(self): ts = msprime.sim_ancestry(5, sequence_length=10, recombination_rate=10, random_seed=1) found = False for _, e_out, _ in ts.edge_diffs(): if len(e_out) > 4: found = True break assert found with pytest.raises(ValueError): tsinfer.insert_perfect_mutations(ts)
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_three_samples(self): for seed in range(10): ts = msprime.simulate(3, recombination_rate=1, random_seed=seed + 1, model="smc_prime") ts = tsinfer.insert_perfect_mutations(ts) self.verify(ts)
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_twenty_samples(self): for seed in range(5): ts = msprime.simulate(10, recombination_rate=0.1, random_seed=seed + 500, length=10, model="smc_prime") ts = tsinfer.insert_perfect_mutations(ts, delta=1 / 8192) self.verify(ts)
def test_multiple_recombinations(self): try: recomb_map = msprime.RecombinationMap.uniform_map(length=10, rate=10, discrete=True) except TypeError: # Fallback for older versions of msprime, which use num_loci recomb_map = msprime.RecombinationMap.uniform_map(length=10, rate=10, num_loci=10) ts = msprime.simulate(10, recombination_map=recomb_map, random_seed=1) found = False for _, e_out, _ in ts.edge_diffs(): if len(e_out) > 4: found = True break assert found with pytest.raises(ValueError): tsinfer.insert_perfect_mutations(ts)
def run_viz( n, L, rate, seed, mutation_rate=0, engine="C", perfect_ancestors=True, perfect_mutations=True, path_compression=False, time_chunking=True, error_rate=0, ): recomb_map = msprime.RecombinationMap.uniform_map(length=L, rate=rate, num_loci=L) ts = msprime.simulate( n, recombination_map=recomb_map, random_seed=seed, model="smc_prime", mutation_rate=mutation_rate, ) if perfect_mutations: ts = tsinfer.insert_perfect_mutations(ts, delta=1 / 512) else: ts = tsinfer.strip_singletons( tsinfer.insert_errors(ts, error_rate, seed)) print("num_sites = ", ts.num_sites) with open("tmp__NOBACKUP__/edges.svg", "w") as f: f.write(draw_edges(ts)) with open("tmp__NOBACKUP__/ancestors.svg", "w") as f: f.write(draw_ancestors(ts)) visualise( ts, rate, 0, engine=engine, box_size=26, perfect_ancestors=perfect_ancestors, path_compression=path_compression, time_chunking=time_chunking, )
def test_single_tree(self): for seed in range(10): ts = msprime.simulate(10, random_seed=seed + 1) ts = tsinfer.insert_perfect_mutations(ts) self.verify(ts)
def test_large_smc(self): ts = get_smc_simulation(50, L=1, recombination_rate=100, seed=1) ts = tsinfer.insert_perfect_mutations(ts) self.assertGreater(ts.num_trees, 100) self.verify_perfect_mutations(ts)
def test_small_smc(self): for seed in range(1, 10): ts = get_smc_simulation(5, L=1, recombination_rate=10, seed=seed) ts = tsinfer.insert_perfect_mutations(ts) self.assertGreater(ts.num_trees, 1) self.verify_perfect_mutations(ts)
def test_single_tree(self): ts = msprime.simulate(5, random_seed=234) ts = tsinfer.insert_perfect_mutations(ts) self.verify_perfect_mutations(ts)
def test_large_smc_perfect_mutations(self): for seed in range(1, 10): ts = get_smc_simulation(10, 100, 0.1, seed) ts = tsinfer.insert_perfect_mutations(ts) self.assertGreater(ts.num_trees, 1) self.verify_many_trees_dense_mutations(ts)
def test_small_smc_perfect_mutations(self): for seed in range(1, 10): ts = get_smc_simulation(5, 100, 0.02, seed) ts = tsinfer.insert_perfect_mutations(ts) assert ts.num_trees > 1 self.verify_many_trees_dense_mutations(ts)