Mentions légales du service

Skip to content
Snippets Groups Projects
Commit c7741197 authored by PAPERMAN Charles's avatar PAPERMAN Charles
Browse files

Merge branch '7-test-stringology' into 'main'

Add tests for the stringology of vizitig

Closes #7

See merge request pydisk/examples/vizitig!5
parents c0ae052a d9f19e93
No related branches found
No related tags found
1 merge request!5Add tests for the stringology of vizitig
...@@ -34,4 +34,4 @@ def get_canonical(kmer: str) -> str: ...@@ -34,4 +34,4 @@ def get_canonical(kmer: str) -> str:
def is_canonical(kmer: str) -> bool: def is_canonical(kmer: str) -> bool:
rc = reverse_complement(kmer) rc = reverse_complement(kmer)
return kmer < rc return kmer <= rc
from pytest import mark
from vizitig import stringology
sequences_and_revcomp = [
("ATCGTAGCTGATCG", "CGATCAGCTACGAT"),
("ATCGTAGCTGATC", "GATCAGCTACGAT"),
("ATCGTAGCTGAT", "ATCAGCTACGAT"),
("ATCGTAGCTG", "CAGCTACGAT"),
("AAAAAAAAAA","TTTTTTTTTT"),
("ACTGCATATGCAGT", "ACTGCATATGCAGT")
]
kmers_and_canonical = [
("CGATCAGCTACGAT", "ATCGTAGCTGATCG"),
("ATCGTAGCTGATC", "ATCGTAGCTGATC"),
("ATCGTAGCTGAT", "ATCAGCTACGAT"),
("CAGCTACGAT", "ATCGTAGCTG"),
("AAAAAAAAAA","AAAAAAAAAA"),
("ACTGCATATGCAGT", "ACTGCATATGCAGT")
]
kmers = [
"CGATCAGCTACGAT",
"ATCGTAGCTGATC",
"ATCGTAGCTGAT",
"CAGCTACGAT",
"AAAAAAAAAA",
"ACTGCATATGCAGT"
]
@mark.parametrize("seq, rseq", sequences_and_revcomp)
def test_reverse_complement1(seq, rseq):
assert stringology.reverse_complement(seq) == rseq
def test_is_canonical1():
assert stringology.is_canonical('ACGT')
def test_is_canonical2():
assert stringology.is_canonical('CGTA')
def test_is_canonical3():
assert not stringology.is_canonical('TACG')
def test_enum_kmer():
assert list(stringology.enum_kmer('ACTG', 1)) == [i for i in 'ACTG']
def test_enum_canonical_kmer():
assert list(stringology.enum_canonical_kmer('ACTG', 2)) == ['AC', 'AG', 'CA']
@mark.parametrize("kmer, c_kmer", kmers_and_canonical)
def test_get_canonical1(kmer, c_kmer):
assert stringology.get_canonical(kmer) == c_kmer
@mark.parametrize("kmer", kmers)
def test_enum_kmer_returns_right_kmer_count(kmer):
for m in range(len(kmer)):
assert len(list(stringology.enum_kmer(kmer, m))) + m - 1 == len(kmer)
@mark.parametrize("kmer", kmers)
def test_enum_canonical_kmer_returns_right_kmer_count(kmer):
for m in range(len(kmer)):
assert len(list(stringology.enum_canonical_kmer(kmer, m))) + m - 1 == len(kmer)
@mark.parametrize("kmer", kmers)
def test_canonicality_of_enum_canonical_kmer(kmer):
for m in range(len(kmer)):
assert all(stringology.is_canonical(kmer2) for kmer2 in stringology.enum_canonical_kmer(kmer, m))
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment