1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from numpy import int16, zeros
24 from unittest import TestCase
25
26
27 from lib.sequence_alignment.msa import central_star
28
29
31 """Unit tests for the lib.sequence_alignment.msa relax module."""
32
34 """Test the central star multiple sequence alignment function lib.sequence_alignment.msa.central_star().
35
36 This uses the sequences:
37
38 - 'TEEQVDADGGT',
39 - 'ADQLTEEQVDADGNGTIDFPEFLTMMARKM',
40 - 'LTEEQMINEVDAGNGTIDFPEFLTMMAR'.
41
42 The result should be::
43
44 Pairwise protein alignment.
45 Substitution matrix: BLOSUM62
46 Gap opening penalty: 5.0
47 Gap extend penalty: 1.0
48
49 Input sequence 1: TEEQVDADGGT
50 Input sequence 2: ADQLTEEQVDADGNGTIDFPEFLTMMARKM
51
52 Aligned sequence 1: ----TEEQVDADG-GT--------------
53 Aligned sequence 2: ADQLTEEQVDADGNGTIDFPEFLTMMARKM
54 ********* **
55
56
57 Pairwise protein alignment.
58 Substitution matrix: BLOSUM62
59 Gap opening penalty: 5.0
60 Gap extend penalty: 1.0
61
62 Input sequence 1: TEEQVDADGGT
63 Input sequence 2: LTEEQMINEVDAGNGTIDFPEFLTMMAR
64
65 Aligned sequence 1: -TEEQ----VDADGGT------------
66 Aligned sequence 2: LTEEQMINEVDAGNGTIDFPEFLTMMAR
67 **** *** **
68
69 ----TEEQ----VDADG-GT--------------
70 ADQLTEEQ----VDADGNGTIDFPEFLTMMARKM
71 ---LTEEQMINEVDA-GNGTIDFPEFLTMMAR--
72 """
73
74
75 seq1 = 'TEEQVDADGGT'
76 seq2 = 'ADQLTEEQVDADGNGTIDFPEFLTMMARKM'
77 seq3 = 'LTEEQMINEVDAGNGTIDFPEFLTMMAR'
78
79
80 strings, gaps = central_star([seq1, seq2, seq3], matrix='BLOSUM62', gap_open_penalty=5.0, gap_extend_penalty=1.0)
81 print(strings[0])
82 print(strings[1])
83 print(strings[2])
84 print(gaps)
85
86
87 self.assertEqual(strings[0], '----TEEQ----VDADG-GT--------------')
88 self.assertEqual(strings[1], 'ADQLTEEQ----VDADGNGTIDFPEFLTMMARKM')
89 self.assertEqual(strings[2], '---LTEEQMINEVDA-GNGTIDFPEFLTMMAR--')
90
91
92 real_gaps = zeros((3, 34), int16)
93 for i in (list(range(4)) + list(range(8, 12)) + [17] + list(range(20, 34))):
94 real_gaps[0, i] = 1
95 for i in range(8, 12):
96 real_gaps[1, i] = 1
97 for i in (list(range(3)) + [15, 32, 33]):
98 real_gaps[2, i] = 1
99 for i in range(3):
100 for j in range(34):
101 self.assertEqual(gaps[i, j], real_gaps[i][j])
102