Newer
Older
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
import unittest
import urllib.request
import os
import zipfile
from Bio.SeqRecord import SeqRecord
class AlignmentSeqTestCase(unittest.TestCase):
def setUp(self):
balibase_zippath = "balibase.zip"
balibase_path = "balibase"
testfile_path = os.path.join(
balibase_path,
"RV11.unaligned", "BBS11001.fasta")
if not os.path.isdir(balibase_path):
os.mkdir(balibase_path)
if not os.path.isfile(testfile_path):
if not os.path.isfile(balibase_zippath):
print("Fetching balibase archive from moodle...")
urllib.request.urlretrieve(
"https://moodle.polytechnique.fr/mod/resource/view.php?id=38570",
balibase_zippath)
with zipfile.ZipFile(balibase_zippath) as balibase_zip:
balibase_zip.extractall()
def test_simple_align(self):
from alignementseq import align
score_fn = lambda a,b : -2 if a == '' or b == '' else -1 if a != b else 1
cases = [
("CHAT", "CAT", 1, "CHAT", "C-AT"),
("CHAT", "CGAT", 2, "CHAT", "CGAT"),
("CHAT", "AT", -2, "CHAT", "--AT")
]
for s1, s2, exp_score, exp_r1, exp_r2 in cases:
score, r1, r2 = align(SeqRecord(s1), SeqRecord(s2), score_fn)
self.assertEqual(score, exp_score)
self.assertEqual(r1.seq, exp_r1)
self.assertEqual(r2.seq, exp_r2)
if __name__ == '__main__':
unittest.main()