1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#!/usr/bin/env python3
'''
A series of test for KmerAPI class.
'''
import sys
import os
import kmer_utils
import init_sys_path
import py_kmc_api as pka
def _py_kmer_api_from_string(kmer_str):
kmer = pka.KmerAPI(len(kmer_str))
kmer.from_string(kmer_str)
return kmer
def test_kmer_from_string_to_string():
''' Tests if KmerAPI object is created correctly from
string and then converted back to string. '''
kmers = ('A', 'C', 'GT', 'TGC', 'ACGGTTAGG',
'GCATCATGCAGTCTGAGCAACGTATGCTGAGCTGATGCTGACACTGATGCAAC')
for kmer_str in kmers:
kmer = _py_kmer_api_from_string(kmer_str)
assert kmer_str == str(kmer)
assert kmer_str == kmer.to_string()
def test_kmer_lt():
''' Tests if operator< (__lt__) works correctly. '''
kmer1_str = 'ACGACGACG'
kmer2_str = 'ACGACGACT'
kmer1 = _py_kmer_api_from_string(kmer1_str)
kmer2 = _py_kmer_api_from_string(kmer2_str)
assert kmer1 < kmer2
assert not kmer1 == kmer2
assert not kmer2 < kmer1
def test_kmer_eq():
''' Tests if operator== (__eq__) works correctly. '''
kmer_str = 'ACGACGACG'
kmer1 = _py_kmer_api_from_string(kmer_str)
kmer2 = _py_kmer_api_from_string(kmer_str)
assert kmer1 == kmer2
assert not kmer1 < kmer2
assert not kmer2 < kmer1
def test_ascii_symbol():
''' Tests if ascii symbol of k-mer is correctly returned by ascii_symbol method. '''
kmers = ('A', 'C', 'GT', 'TGC', 'ACGGTTAGG',
'GCATCATGCAGTCTGAGCAACGTATGCTGAGCTGATGCTGACACTGATGCAAC')
for kmer_str in kmers:
kmer = _py_kmer_api_from_string(kmer_str)
for i in range(len(kmer_str)):
assert kmer.get_asci_symbol(i) == kmer_str[i]
def test_get_num_symbol():
''' Tests if get_num_bybol ('A' -> 0, 'C' -> 1, 'G' -> 2, 'T' -> 3) works correctly. '''
kmers = ('A', 'C', 'GT', 'TGC', 'ACGGTTAGG',
'GCATCATGCAGTCTGAGCAACGTATGCTGAGCTGATGCTGACACTGATGCAAC')
mapping = {
'A': 0,
'C': 1,
'G': 2,
'T': 3,
}
for kmer_str in kmers:
kmer = _py_kmer_api_from_string(kmer_str)
for i in range(len(kmer_str)):
assert kmer.get_num_symbol(i) == mapping[kmer_str[i]]
def test_reverse():
''' Tests if conversion of k-mer to its reverse complement works correctly. '''
kmer_str = 'AAAAACGAAATTTA'
kmer = _py_kmer_api_from_string(kmer_str)
kmer.reverse()
kmer_str_rev = str(kmer)
assert kmer_str_rev == 'TAAATTTCGTTTTT'
def test_get_signature():
''' Test if valid signature is returned for k-mer. '''
kmer_str = 'ACGGATGCAGTGCTAGCGGTGGCC'
kmer = _py_kmer_api_from_string(kmer_str)
sig = kmer.get_signature(7)
assert sig == 1436
kmer_str = 'AAAAAAAAAAAAAAAAGC'
kmer = _py_kmer_api_from_string(kmer_str)
for sig_len in (5, 11):
assert kmer.get_signature(sig_len) == (1 << (2*sig_len))
|