def alignment_example(sequence_length, include_reference=True): ts = msprime.sim_ancestry( samples=5, sequence_length=sequence_length, random_seed=123 ) ts = msprime.sim_mutations(ts, rate=0.1, random_seed=1234) tables = ts.dump_tables() if include_reference: tables.reference_sequence.data = tskit.random_nucleotides( ts.sequence_length, seed=1234 ) ts = tables.tree_sequence() assert ts.num_sites > 5 return ts
def test_length_bad_type(self, length): with pytest.raises(TypeError, match="argument must be a string"): tskit.random_nucleotides(length)
def test_length_bad_value(self, length): with pytest.raises(ValueError, match="must be an integer"): tskit.random_nucleotides(length)
def test_no_seed_different_values(self): s1 = tskit.random_nucleotides(20) s2 = tskit.random_nucleotides(20) assert s1 != s2
def test_different_seed_not_equal(self): s1 = tskit.random_nucleotides(20, seed=1) s2 = tskit.random_nucleotides(20, seed=2) assert s1 != s2
def test_seed_equality(self, seed): s1 = tskit.random_nucleotides(10, seed=seed) s2 = tskit.random_nucleotides(10, seed=seed) assert s1 == s2
def test_seed_keyword_only(self): with pytest.raises(TypeError, match="1 positional"): tskit.random_nucleotides(10, 42)
def test_length_required(self): with pytest.raises(TypeError, match="required positional"): tskit.random_nucleotides()
def test_length_keyword(self): s1 = tskit.random_nucleotides(length=10, seed=42) s2 = tskit.random_nucleotides(length=10, seed=42) assert s1 == s2
def test_default_alphabet(self): s = tskit.random_nucleotides(100, seed=42) assert "".join(sorted(set(s))) == "ACGT"
def test_length(self, length): s = tskit.random_nucleotides(length, seed=42) assert len(s) == length assert isinstance(s, str)