Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_keep_multichar_muts(self):
ts = msprime.simulate(12, random_seed=3)
ts = msprime.mutate(ts, rate=1, random_seed=1)
self.assertGreater(ts.num_sites, 2)
tables = ts.dump_tables()
tables.sites.clear()
tables.mutations.clear()
for site in ts.sites():
tables.sites.add_row(position=site.position, ancestral_state="A" * site.id)
for mutation in site.mutations:
tables.mutations.add_row(
site=site.id, node=mutation.node, derived_state="T" * site.id)
original = tables.tree_sequence()
updated = msprime.mutate(original, rate=1, random_seed=1, keep=True)
self.verify_sites(original, updated)
def verify(self, ts, rate, random_seed):
no_keep = msprime.mutate(ts, rate=rate, random_seed=random_seed)
self.assertGreater(no_keep.num_sites, 0)
keep = msprime.mutate(ts, rate=rate, random_seed=random_seed, keep=True)
# Can assume there's no collisions here, very unlikely.
self.assertEqual(ts.num_sites + no_keep.num_sites, keep.num_sites)
# Mutations are all infinite sites, so must be equal
self.assertEqual(ts.num_mutations + no_keep.num_mutations, keep.num_mutations)
old = set(site.position for site in ts.sites())
new = set(site.position for site in no_keep.sites())
both = set(site.position for site in keep.sites())
self.assertEqual(old | new, both)
self.verify_sites(ts, keep)
def test_mutate(self):
ts = msprime.simulate(5, random_seed=1)
ts = msprime.mutate(
ts, rate=2, random_seed=1, start_time=0, end_time=100, keep=False)
decoded = self.decode(ts.provenance(1).record)
self.assertEqual(decoded.schema_version, "1.0.0")
self.assertEqual(decoded.parameters.command, "mutate")
self.assertEqual(decoded.parameters.random_seed, 1)
self.assertEqual(decoded.parameters.rate, 2)
self.assertEqual(decoded.parameters.start_time, 0)
self.assertEqual(decoded.parameters.end_time, 100)
self.assertEqual(decoded.parameters.keep, False)
def test_mutate_numpy(self):
ts = msprime.simulate(5, random_seed=1)
ts = msprime.mutate(
ts,
rate=np.array([2])[0],
random_seed=np.array([1])[0],
start_time=np.array([0])[0],
end_time=np.array([100][0]),
keep=np.array([False][0]))
decoded = self.decode(ts.provenance(1).record)
self.assertEqual(decoded.schema_version, "1.0.0")
self.assertEqual(decoded.parameters.command, "mutate")
self.assertEqual(decoded.parameters.random_seed, 1)
self.assertEqual(decoded.parameters.rate, 2)
self.assertEqual(decoded.parameters.start_time, 0)
self.assertEqual(decoded.parameters.end_time, 100)
self.assertEqual(decoded.parameters.keep, False)
def test_mutate(self):
ts = msprime.simulate(5, random_seed=1)
ts = msprime.mutate(ts, rate=1, random_seed=1)
prov = json.loads(ts.provenance(1).record)
tskit.validate_provenance(prov)
self.assertEqual(prov["parameters"]["command"], "mutate")
def test_keep(self):
ts = msprime.simulate(10, random_seed=1)
for keep in [True, False]:
mutated = msprime.mutate(ts, rate=1, keep=keep)
record = json.loads(mutated.provenance(mutated.num_provenances - 1).record)
self.assertEqual(record["parameters"]["command"], "mutate")
self.assertEqual(record["parameters"]["keep"], keep)
def verify(self, ts, rate, random_seed):
no_keep = msprime.mutate(ts, rate=rate, random_seed=random_seed)
self.assertGreater(no_keep.num_sites, 0)
keep = msprime.mutate(ts, rate=rate, random_seed=random_seed, keep=True)
# Can assume there's no collisions here, very unlikely.
self.assertEqual(ts.num_sites + no_keep.num_sites, keep.num_sites)
# Mutations are all infinite sites, so must be equal
self.assertEqual(ts.num_mutations + no_keep.num_mutations, keep.num_mutations)
old = set(site.position for site in ts.sites())
new = set(site.position for site in no_keep.sites())
both = set(site.position for site in keep.sites())
self.assertEqual(old | new, both)
self.verify_sites(ts, keep)
end = root_time - length / 2
tsm = msprime.mutate(ts, rate=rate, end_time=end)
self.verify_mutations(tsm, None, end)
start = leaf_time + length / 4
end = root_time - length / 2
tsm = msprime.mutate(ts, rate=rate, start_time=start, end_time=end)
self.verify_mutations(tsm, start, end)
start = root_time - length / 2
end = root_time
tsm = msprime.mutate(ts, rate=rate, start_time=start, end_time=end)
self.verify_mutations(tsm, start, end)
tsm = msprime.mutate(ts, rate=rate, start_time=start)
self.verify_mutations(tsm, start, None)
def test_alphabet_nucleotide(self):
ts = msprime.simulate(10, random_seed=2)
mutated = msprime.mutate(
ts, rate=1, random_seed=2, model=msprime.InfiniteSites(msprime.NUCLEOTIDES))
self.verify_nucleotides_alphabet(mutated)
def mutate_simplify(ts, mu, samples, seed):
subsamples = ts.samples()[samples]
return msprime.mutate(ts, mu, random_seed=seed, keep=True).simplify(subsamples)