OpenStructure
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
mat.py
Go to the documentation of this file.
1 from ost.seq.alg import SubstWeightMatrix
2 
3 def _InitMatrix(data):
4  """
5  Initialise a new substitution weight matrix with the weights in data. data
6  must be a 24x24 array of ints.
7  """
9  # string of valid amino acid one letter codes
10  chars='ABCDEFGHIKLMNPQRSTVWXYZ'
11  for i, row in enumerate(data):
12  for j, weight in enumerate(row):
13  mat.SetWeight(chars[i], chars[j], weight)
14  return mat
15 
16 _RAW_BLOSUM45_DATA=(
17  ( 5, -1, -1, -2, -1, -2, 0, -2, -1, -1, -1, -1, -1, -1, -1, -2, 1, 0, 0, -2, 0, -2, -1),
18  (-1, 4, -2, 5, 1, -3, -1, 0, -3, 0, -3, -2, 4, -2, 0, -1, 0, 0, -3, -4, -1, -2, 2),
19  (-1, -2, 12, -3, -3, -2, -3, -3, -3, -3, -2, -2, -2, -4, -3, -3, -1, -1, -1, -5, -2, -3, -3),
20  (-2, 5, -3, 7, 2, -4, -1, 0, -4, 0, -3, -3, 2, -1, 0, -1, 0, -1, -3, -4, -1, -2, 1),
21  (-1, 1, -3, 2, 6, -3, -2, 0, -3, 1, -2, -2, 0, 0, 2, 0, 0, -1, -3, -3, -1, -2, 4),
22  (-2, -3, -2, -4, -3, 8, -3, -2, 0, -3, 1, 0, -2, -3, -4, -2, -2, -1, 0, 1, -1, 3, -3),
23  ( 0, -1, -3, -1, -2, -3, 7, -2, -4, -2, -3, -2, 0, -2, -2, -2, 0, -2, -3, -2, -1, -3, -2),
24  (-2, 0, -3, 0, 0, -2, -2, 10, -3, -1, -2, 0, 1, -2, 1, 0, -1, -2, -3, -3, -1, 2, 0),
25  (-1, -3, -3, -4, -3, 0, -4, -3, 5, -3, 2, 2, -2, -2, -2, -3, -2, -1, 3, -2, -1, 0, -3),
26  (-1, 0, -3, 0, 1, -3, -2, -1, -3, 5, -3, -1, 0, -1, 1, 3, -1, -1, -2, -2, -1, -1, 1),
27  (-1, -3, -2, -3, -2, 1, -3, -2, 2, -3, 5, 2, -3, -3, -2, -2, -3, -1, 1, -2, -1, 0, -2),
28  (-1, -2, -2, -3, -2, 0, -2, 0, 2, -1, 2, 6, -2, -2, 0, -1, -2, -1, 1, -2, -1, 0, -1),
29  (-1, 4, -2, 2, 0, -2, 0, 1, -2, 0, -3, -2, 6, -2, 0, 0, 1, 0, -3, -4, -1, -2, 0),
30  (-1, -2, -4, -1, 0, -3, -2, -2, -2, -1, -3, -2, -2, 9, -1, -2, -1, -1, -3, -3, -1, -3, -1),
31  (-1, 0, -3, 0, 2, -4, -2, 1, -2, 1, -2, 0, 0, -1, 6, 1, 0, -1, -3, -2, -1, -1, 4),
32  (-2, -1, -3, -1, 0, -2, -2, 0, -3, 3, -2, -1, 0, -2, 1, 7, -1, -1, -2, -2, -1, -1, 0),
33  ( 1, 0, -1, 0, 0, -2, 0, -1, -2, -1, -3, -2, 1, -1, 0, -1, 4, 2, -1, -4, 0, -2, 0),
34  ( 0, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, 0, -1, -1, -1, 2, 5, 0, -3, 0, -1, -1),
35  ( 0, -3, -1, -3, -3, 0, -3, -3, 3, -2, 1, 1, -3, -3, -3, -2, -1, 0, 5, -3, -1, -1, -3),
36  (-2, -4, -5, -4, -3, 1, -2, -3, -2, -2, -2, -2, -4, -3, -2, -2, -4, -3, -3, 15, -2, 3, -2),
37  ( 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -2, -1, -1, -1),
38  (-2, -2, -3, -2, -2, 3, -3, 2, 0, -1, 0, 0, -2, -3, -1, -1, -2, -1, -1, 3, -1, 8, -2),
39  (-1, 2, -3, 1, 4, -3, -2, 0, -3, 1, -2, -1, 0, -1, 4, 0, 0, -1, -3, -2, -1, -2, 4),
40 )
41 
42 _RAW_BLOSUM62_DATA=(
43  ( 4, -2, 0, -2, -1, -2, 0, -2, -1, -1, -1, -1, -2, -1, -1, -1, 1, 0, 0, -3, 0, -2, -1),
44  (-2, 4, -3, 4, 1, -3, -1, 0, -3, 0, -4, -3, 3, -2, 0, -1, 0, -1, -3, -4, -1, -3, 1),
45  ( 0, -3, 9, -3, -4, -2, -3, -3, -1, -3, -1, -1, -3, -3, -3, -3, -1, -1, -1, -2, -2, -2, -3),
46  (-2, 4, -3, 6, 2, -3, -1, -1, -3, -1, -4, -3, 1, -1, 0, -2, 0, -1, -3, -4, -1, -3, 1),
47  (-1, 1, -4, 2, 5, -3, -2, 0, -3, 1, -3, -2, 0, -1, 2, 0, 0, -1, -2, -3, -1, -2, 4),
48  (-2, -3, -2, -3, -3, 6, -3, -1, 0, -3, 0, 0, -3, -4, -3, -3, -2, -2, -1, 1, -1, 3, -3),
49  ( 0, -1, -3, -1, -2, -3, 6, -2, -4, -2, -4, -3, 0, -2, -2, -2, 0, -2, -3, -2, -1, -3, -2),
50  (-2, 0, -3, -1, 0, -1, -2, 8, -3, -1, -3, -2, 1, -2, 0, 0, -1, -2, -3, -2, -1, 2, 0),
51  (-1, -3, -1, -3, -3, 0, -4, -3, 4, -3, 2, 1, -3, -3, -3, -3, -2, -1, 3, -3, -1, -1, -3),
52  (-1, 0, -3, -1, 1, -3, -2, -1, -3, 5, -2, -1, 0, -1, 1, 2, 0, -1, -2, -3, -1, -2, 1),
53  (-1, -4, -1, -4, -3, 0, -4, -3, 2, -2, 4, 2, -3, -3, -2, -2, -2, -1, 1, -2, -1, -1, -3),
54  (-1, -3, -1, -3, -2, 0, -3, -2, 1, -1, 2, 5, -2, -2, 0, -1, -1, -1, 1, -1, -1, -1, -1),
55  (-2, 3, -3, 1, 0, -3, 0, 1, -3, 0, -3, -2, 6, -2, 0, 0, 1, 0, -3, -4, -1, -2, 0),
56  (-1, -2, -3, -1, -1, -4, -2, -2, -3, -1, -3, -2, -2, 7, -1, -2, -1, -1, -2, -4, -2, -3, -1),
57  (-1, 0, -3, 0, 2, -3, -2, 0, -3, 1, -2, 0, 0, -1, 5, 1, 0, -1, -2, -2, -1, -1, 3),
58  (-1, -1, -3, -2, 0, -3, -2, 0, -3, 2, -2, -1, 0, -2, 1, 5, -1, -1, -3, -3, -1, -2, 0),
59  ( 1, 0, -1, 0, 0, -2, 0, -1, -2, 0, -2, -1, 1, -1, 0, -1, 4, 1, -2, -3, 0, -2, 0),
60  ( 0, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, 0, -1, -1, -1, 1, 5, 0, -2, 0, -2, -1),
61  ( 0, -3, -1, -3, -2, -1, -3, -3, 3, -2, 1, 1, -3, -2, -2, -3, -2, 0, 4, -3, -1, -1, -2),
62  (-3, -4, -2, -4, -3, 1, -2, -2, -3, -3, -2, -1, -4, -4, -2, -3, -3, -2, -3, 11, -2, 2, -3),
63  ( 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, 0, 0, -1, -2, -1, -1, -1),
64  (-2, -3, -2, -3, -2, 3, -3, 2, -1, -2, -1, -1, -2, -3, -1, -2, -2, -2, -1, 2, -1, 7, -2),
65  (-1, 1, -3, 1, 4, -3, -2, 0, -3, 1, -3, -1, 0, -1, 3, 0, 0, -1, -2, -3, -1, -2, 4),
66 )
67 
68 _RAW_BLOSUM80_DATA=(
69  ( 7, -3, -1, -3, -2, -4, 0, -3, -3, -1, -3, -2, -3, -1, -2, -3, 2, 0, -1, -5, -1, -4, -2),
70  (-3, 6, -6, 6, 1, -6, -2, -1, -6, -1, -7, -5, 5, -4, -1, -2, 0, -1, -6, -8, -3, -5, 0),
71  (-1, -6, 13, -7, -7, -4, -6, -7, -2, -6, -3, -3, -5, -6, -5, -6, -2, -2, -2, -5, -4, -5, -7),
72  (-3, 6, -7, 10, 2, -6, -3, -2, -7, -2, -7, -6, 2, -3, -1, -3, -1, -2, -6, -8, -3, -6, 1),
73  (-2, 1, -7, 2, 8, -6, -4, 0, -6, 1, -6, -4, -1, -2, 3, -1, -1, -2, -4, -6, -2, -5, 6),
74  (-4, -6, -4, -6, -6, 10, -6, -2, -1, -5, 0, 0, -6, -6, -5, -5, -4, -4, -2, 0, -3, 4, -6),
75  ( 0, -2, -6, -3, -4, -6, 9, -4, -7, -3, -7, -5, -1, -5, -4, -4, -1, -3, -6, -6, -3, -6, -4),
76  (-3, -1, -7, -2, 0, -2, -4, 12, -6, -1, -5, -4, 1, -4, 1, 0, -2, -3, -5, -4, -2, 3, 0),
77  (-3, -6, -2, -7, -6, -1, -7, -6, 7, -5, 2, 2, -6, -5, -5, -5, -4, -2, 4, -5, -2, -3, -6),
78  (-1, -1, -6, -2, 1, -5, -3, -1, -5, 8, -4, -3, 0, -2, 2, 3, -1, -1, -4, -6, -2, -4, 1),
79  (-3, -7, -3, -7, -6, 0, -7, -5, 2, -4, 6, 3, -6, -5, -4, -4, -4, -3, 1, -4, -2, -2, -5),
80  (-2, -5, -3, -6, -4, 0, -5, -4, 2, -3, 3, 9, -4, -4, -1, -3, -3, -1, 1, -3, -2, -3, -3),
81  (-3, 5, -5, 2, -1, -6, -1, 1, -6, 0, -6, -4, 9, -4, 0, -1, 1, 0, -5, -7, -2, -4, -1),
82  (-1, -4, -6, -3, -2, -6, -5, -4, -5, -2, -5, -4, -4, 12, -3, -3, -2, -3, -4, -7, -3, -6, -2),
83  (-2, -1, -5, -1, 3, -5, -4, 1, -5, 2, -4, -1, 0, -3, 9, 1, -1, -1, -4, -4, -2, -3, 5),
84  (-3, -2, -6, -3, -1, -5, -4, 0, -5, 3, -4, -3, -1, -3, 1, 9, -2, -2, -4, -5, -2, -4, 0),
85  ( 2, 0, -2, -1, -1, -4, -1, -2, -4, -1, -4, -3, 1, -2, -1, -2, 7, 2, -3, -6, -1, -3, -1),
86  ( 0, -1, -2, -2, -2, -4, -3, -3, -2, -1, -3, -1, 0, -3, -1, -2, 2, 8, 0, -5, -1, -3, -2),
87  (-1, -6, -2, -6, -4, -2, -6, -5, 4, -4, 1, 1, -5, -4, -4, -4, -3, 0, 7, -5, -2, -3, -4),
88  (-5, -8, -5, -8, -6, 0, -6, -4, -5, -6, -4, -3, -7, -7, -4, -5, -6, -5, -5, 16, -5, 3, -5),
89  (-1, -3, -4, -3, -2, -3, -3, -2, -2, -2, -2, -2, -2, -3, -2, -2, -1, -1, -2, -5, -2, -3, -1),
90  (-4, -5, -5, -6, -5, 4, -6, 3, -3, -4, -2, -3, -4, -6, -3, -4, -3, -3, -3, 3, -3, 11, -4),
91  (-2, 0, -7, 1, 6, -6, -4, 0, -6, 1, -5, -3, -1, -2, 5, 0, -1, -2, -4, -5, -1, -4, 6),
92 )
93 
94 _RAW_BLOSUM100_DATA=(
95  ( 8, -4, -2, -5, -3, -5, -1, -4, -4, -2, -4, -3, -4, -2, -2, -3, 1, -1, -2, -6, -2, -5, -2),
96  (-4, 6, -7, 6, 0, -7, -3, -2, -8, -2, -8, -7, 5, -5, -2, -4, -1, -2, -7, -9, -4, -6, 0),
97  (-2, -7, 14, -8, -9, -4, -7, -8, -3, -8, -5, -4, -5, -8, -7, -8, -3, -3, -3, -7, -5, -6, -8),
98  (-5, 6, -8, 10, 2, -8, -4, -3, -8, -3, -8, -8, 1, -5, -2, -5, -2, -4, -8,-10, -4, -7, 0),
99  (-3, 0, -9, 2, 10, -8, -6, -2, -7, 0, -7, -5, -2, -4, 2, -2, -2, -3, -5, -8, -3, -7, 7),
100  (-5, -7, -4, -8, -8, 11, -8, -4, -2, -6, 0, -1, -7, -7, -6, -6, -5, -5, -3, 0, -4, 4, -7),
101  (-1, -3, -7, -4, -6, -8, 9, -6, -9, -5, -8, -7, -2, -6, -5, -6, -2, -5, -8, -7, -4, -8, -5),
102  (-4, -2, -8, -3, -2, -4, -6, 13, -7, -3, -6, -5, 0, -5, 1, -1, -3, -4, -7, -5, -4, 1, -1),
103  (-4, -8, -3, -8, -7, -2, -9, -7, 8, -6, 2, 1, -7, -7, -6, -7, -5, -3, 4, -6, -3, -4, -7),
104  (-2, -2, -8, -3, 0, -6, -5, -3, -6, 10, -6, -4, -1, -3, 2, 3, -2, -3, -5, -8, -3, -5, 0),
105  (-4, -8, -5, -8, -7, 0, -8, -6, 2, -6, 8, 3, -7, -7, -5, -6, -6, -4, 0, -5, -3, -4, -6),
106  (-3, -7, -4, -8, -5, -1, -7, -5, 1, -4, 3, 12, -5, -5, -2, -4, -4, -2, 0, -4, -3, -5, -4),
107  (-4, 5, -5, 1, -2, -7, -2, 0, -7, -1, -7, -5, 11, -5, -1, -2, 0, -1, -7, -8, -3, -5, -2),
108  (-2, -5, -8, -5, -4, -7, -6, -5, -7, -3, -7, -5, -5, 12, -4, -5, -3, -4, -6, -8, -4, -7, -4),
109  (-2, -2, -7, -2, 2, -6, -5, 1, -6, 2, -5, -2, -1, -4, 11, 0, -2, -3, -5, -5, -2, -4, 5),
110  (-3, -4, -8, -5, -2, -6, -6, -1, -7, 3, -6, -4, -2, -5, 0, 10, -3, -3, -6, -7, -3, -5, -1),
111  ( 1, -1, -3, -2, -2, -5, -2, -3, -5, -2, -6, -4, 0, -3, -2, -3, 9, 2, -4, -7, -2, -5, -2),
112  (-1, -2, -3, -4, -3, -5, -5, -4, -3, -3, -4, -2, -1, -4, -3, -3, 2, 9, -1, -7, -2, -5, -3),
113  (-2, -7, -3, -8, -5, -3, -8, -7, 4, -5, 0, 0, -7, -6, -5, -6, -4, -1, 8, -5, -3, -5, -5),
114  (-6, -9, -7, 10, -8, 0, -7, -5, -6, -8, -5, -4, -8, -8, -5, -7, -7, -7, -5, 17, -6, 2, -7),
115  (-2, -4, -5, -4, -3, -4, -4, -4, -3, -3, -3, -3, -3, -4, -2, -3, -2, -2, -3, -6, -3, -4, -2),
116  (-5, -6, -6, -7, -7, 4, -8, 1, -4, -5, -4, -5, -5, -7, -4, -5, -5, -5, -5, 2, -4, 12, -6),
117  (-2, 0, -8, 0, 7, -7, -5, -1, -7, 0, -6, -4, -2, -4, 5, -1, -2, -3, -5, -7, -2, -6, 6),
118 )
119 
120 BLOSUM45=_InitMatrix(_RAW_BLOSUM45_DATA)
121 BLOSUM62=_InitMatrix(_RAW_BLOSUM62_DATA)
122 BLOSUM80=_InitMatrix(_RAW_BLOSUM80_DATA)
123 BLOSUM100=_InitMatrix(_RAW_BLOSUM100_DATA)
124 
125 __all__=['BLOSUM45','BLOSUM62','BLOSUM80','BLOSUM100']