1 /* Concurrent read version */
2 /*	20-June-1986	universal pam file */
3 
4 /* $Id: upam.h 1124 2013-03-13 20:24:57Z wrp $ */
5 /* $Revision: 1124 $  */
6 
7 /* modified to accomodate both lower and upper case amino acid numbers
8    as a result MAXSQ = 50
9 */
10 
11 
12 #ifndef UPAM_GBL_DEF
13 #define UPAM_GBL_DEF
14 
15 #define TERM 25
16 #define EOSEQ 0
17 #define MAXSQ 60	/* increased to accomodate ESS=57 */
18 #define MAXUC 28
19 #define MAXLC 56
20 
21 #define MAXHASH 32
22 #define NMAP MAXHASH+1
23 
24 struct std_pam_str {
25   char abbrev[6];	/* argument name */
26   char name[10];	/* canonical name */
27   int *pam;		/* data pointer */
28   float scale;		/* pam scale (ln(2)/2, ln(2)/3 */
29   float ulambda;	/* lambda (ungapped) */
30   float entropy;	/* bits/position */
31   float tfract_id;	/* target fract id */
32   int gdel, ggap;	/* gdel, ggap */
33 };
34 
35 #ifndef XTERNAL
36 
37 int pamoff=0;
38 
39 /*extern int gdelval, ggapval;*/
40 
41 /* char sqnam[]="aa"; */
42 /* char sqtype[]="protein"; */
43 
44 
45 /* this alphabet covers 56 values, so that libraries can include lower-case characters which will be re-mapped unless -S */
46 char *NCBIstdaa = "-ABCDEFGHIKLMNPQRSTVWXYZU*OJ";
47 char *NCBIstdaa_l = "-ABCDEFGHIKLMNPQRSTVWXYZU*OJ-ABCDEFGHIKLMNPQRSTVWXYZU*OJ";
48 char NCBIstdaa_n = 28;
49 
50 char *NCBIstdaa_ext = "-ABCDEFGHIKLMNPQRSTVWXYZU*OJ-abcdefghiklmnpqrstvwxyzu*oj";
51 char NCBIstdaa_ext_n = 56;
52 
53 /* the residue ordering used for the internal pam matrices */
54 char *pam_sq;
55 int pam_sq_n;
56 char *apam_sq  = "\0ARNDCQEGHILKMFPSTWYVBZX*";
57 int apam_sq_n = 25;
58 char *npam_sq =  "\0ACGTURYMWSKDHVBNX";
59 int npam_sq_n = 17;
60 
61 /* these values have been replaced by NCBIstdaa and *pam_sq */
62 /*
63 char aa[MAXSQ+1]  = {"\0ARNDCQEGHILKMFPSTWYVBZX*JARNDCQEGHILKMFPSTWYVBZX*J\0"};
64 char aax[MAXSQ+1] = {"\0ARNDCQEGHILKMFPSTWYVBZX*Jarndcqeghilkmfpstwyvbzx*j\0"};
65 */
66 char pssm_aa[26]  = {"\0ARNDCQEGHILKMFPSTWYVBZX*"};
67 
68 char othx[MAXSQ+1] = {"OUou\0"};
69 int noth = 2;
70 int nothx = 4;
71 
72 int naa = 25;	/* this should be calculated from aa[] */
73 int naax = 50;
74 
75 /* haa[] used to map all valid amino acid codes into a hash value;
76    now, there is an additional hash value - not-mapped - NM */
77 
78 /* this has been expanded to accomodate '*' */
79   /* 0 A R N D C Q E G H  I  L  K  M  F  P  S  T  W  Y  V B Z X    *    J */
80 /*
81 int haa[MAXSQ+1] = {
82   NMAP,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,3,7,NMAP,NMAP,10,
83        1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,3,7,NMAP,NMAP,10};
84 */
85 int h_NCBIstdaa[MAXSQ+1] = {
86   /* - A  B C D E F G H I  K  L  M  N  P  Q  R  S  T  V  W    X  Y  Z  U  *    O  J */
87   NMAP,1,13,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,NMAP,21, 5, 3,NMAP,10,11,
88   NMAP,1,13,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,NMAP,21, 5, 3,NMAP,10,11
89 };
90 
91 int h_NCBIstdaa_ext[MAXSQ+1] = {
92   /* - A  B C D E F G H I  K  L  M  N  P  Q  R  S  T  V  W    X  Y  Z  U  *    O  J */
93   NMAP,1,13,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,NMAP,21, 5, 3,NMAP,10,11,
94   NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,
95   NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,
96 };
97 
98 /*
99 int haax[MAXSQ+1] = {
100   NMAP, 1,2,3,4,5,6,7,8,9,
101   10,11,12,13,14,15,16,17,18,19,
102   20,3,7,NMAP,NMAP,10,NMAP,NMAP,NMAP,NMAP,
103   NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,
104   NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,
105   NMAP};
106 */
107 
108 /*
109   PAM 250 substitution matrix, scale = ln(2)/3 = 0.231049
110   Expected score = -0.844, Entropy = 0.354 bits
111   Lowest score = -8, Highest score = 17
112 */
113 int apam250[450] = {
114  2,
115 -2, 6,
116  0, 0, 2,
117  0,-1, 2, 4,
118 -2,-4,-4,-5,12,
119  0, 1, 1, 2,-5, 4,
120  0,-1, 1, 3,-5, 2, 4,
121  1,-3, 0, 1,-3,-1, 0, 5,
122 -1, 2, 2, 1,-3, 3, 1,-2, 6,
123 -1,-2,-2,-2,-2,-2,-2,-3,-2, 5,
124 -2,-3,-3,-4,-6,-2,-3,-4,-2, 2, 6,
125 -1, 3, 1, 0,-5, 1, 0,-2, 0,-2,-3, 5,
126 -1, 0,-2,-3,-5,-1,-2,-3,-2, 2, 4, 0, 6,
127 -4,-4,-4,-6,-4,-5,-5,-5,-2, 1, 2,-5, 0, 9,
128  1, 0,-1,-1,-3, 0,-1,-1, 0,-2,-3,-1,-2,-5, 6,
129  1, 0, 1, 0, 0,-1, 0, 1,-1,-1,-3, 0,-2,-3, 1, 2,
130  1,-1, 0, 0,-2,-1, 0, 0,-1, 0,-2, 0,-1,-3, 0, 1, 3,
131 -6, 2,-4,-7,-8,-5,-7,-7,-3,-5,-2,-3,-4, 0,-6,-2,-5,17,
132 -3,-4,-2,-4, 0,-4,-4,-5, 0,-1,-1,-4,-2, 7,-5,-3,-3, 0,10,
133  0,-2,-2,-2,-2,-2,-2,-1,-2, 4, 2,-2, 2,-1,-1,-1, 0,-6,-2, 4,
134  0,-1, 2, 3,-4, 1, 2, 0, 1,-2,-3, 1,-2,-5,-1, 0, 0,-5,-3,-2, 2,
135  0, 0, 1, 3,-5, 3, 3,-1, 2,-2,-3, 0,-2,-5, 0, 0,-1,-6,-4,-2, 2, 3,
136  0,-1, 0,-1,-3,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1, 0, 0,-4,-2,-1,-1,-1,-1,
137  0,-1, 0,-1,-3,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1, 0, 0,-4,-2,-1,-1,-1,-1, 8};
138 
139 /*
140  This matrix was produced by "pam" Version 1.0.6 [28-Jul-93]
141  PAM 120 substitution matrix, scale = ln(2)/2 = 0.346574
142  Expected score = -1.64, Entropy = 0.979 bits
143  Lowest score = -8, Highest score = 12
144 */
145 int apam120[450] = {
146   3,
147  -3, 6,
148   0,-1, 4,
149   0,-3, 2, 5,
150  -3,-4,-5,-7, 9,
151  -1, 1, 0, 1,-7, 6,
152   0,-3, 1, 3,-7, 2, 5,
153   1,-4, 0, 0,-5,-3,-1, 5,
154  -3, 1, 2, 0,-4, 3,-1,-4, 7,
155  -1,-2,-2,-3,-3,-3,-3,-4,-4, 6,
156  -3,-4,-4,-5,-7,-2,-4,-5,-3, 1, 5,
157  -2, 2, 1,-1,-7, 0,-1,-3,-2,-2,-4, 5,
158  -2,-1,-3,-4,-6,-1,-4,-4,-4, 1, 3, 0, 8,
159  -4,-4,-4,-7,-6,-6,-6,-5,-2, 0, 0,-6,-1, 8,
160   1,-1,-2,-2,-3, 0,-1,-2,-1,-3,-3,-2,-3,-5, 6,
161   1,-1, 1, 0,-1,-2,-1, 1,-2,-2,-4,-1,-2,-3, 1, 3,
162   1,-2, 0,-1,-3,-2,-2,-1,-3, 0,-3,-1,-1,-4,-1, 2, 4,
163  -7, 1,-5,-8,-8,-6,-8,-8,-5,-7,-5,-5,-7,-1,-7,-2,-6, 12,
164  -4,-6,-2,-5,-1,-5,-4,-6,-1,-2,-3,-6,-4, 4,-6,-3,-3,-1, 8,
165   0,-3,-3,-3,-2,-3,-3,-2,-3, 3, 1,-4, 1,-3,-2,-2, 0,-8,-3, 5,
166   0,-2, 3, 4,-6, 0, 3, 0, 1,-3,-4, 0,-4,-5,-2, 0, 0,-6,-3,-3, 4,
167  -1,-1, 0, 3,-7, 4, 4,-2, 1,-3,-3,-1,-2,-6,-1,-1,-2,-7,-5,-3, 2, 4,
168  -1,-2,-1,-2,-4,-1,-1,-2,-2,-1,-2,-2,-2,-3,-2,-1,-1,-5,-3,-1,-1,-1,-2,
169  -1,-2,-1,-2,-4,-1,-1,-2,-2,-1,-2,-2,-2,-3,-2,-1,-1,-5,-3,-1,-1,-1,-2, 6};
170 
171 /*
172 #
173 #  VTML_10
174 #
175 # This matrix was produced from: vtml_10qij.mat using robinson2.back background frequencies
176 #
177 # VTML_10 substitution matrix, Units = bits/2.0
178 # Expected score = -3.859581 bits; Entropy = 3.462930 bits
179 # Target fraction identity = 0.9107
180 # Lowest Score = -20, Highest Score= 12
181 #
182 */
183 int a_vt10[450] = {
184    7,
185   -9,   8,
186   -8,  -7,   9,
187   -8, -16,  -3,   8,
188   -5,  -9, -10, -18,  11,
189   -7,  -4,  -6,  -6, -17,   9,
190   -7, -14,  -7,  -3, -18,  -3,   8,
191   -6,  -9,  -7,  -8, -10, -10,  -8,   7,
192   -9,  -5,  -4,  -6,  -9,  -4,  -8,  -9,  11,
193   -9, -10, -11, -15,  -8, -12, -12, -19, -11,   8,
194   -9, -10, -11, -19, -17,  -8, -10, -13,  -8,  -3,   7,
195   -8,  -2,  -5,  -7, -17,  -4,  -4,  -9,  -7, -10, -10,   8,
196   -7,  -8,  -9, -11,  -7,  -6, -10, -12, -15,  -3,  -2,  -7,  11,
197  -10, -12, -13, -20, -17, -10, -18, -13,  -6,  -6,  -5, -18,  -4,   9,
198   -6,  -8, -10,  -8, -11,  -7,  -8, -10,  -8, -12,  -9,  -7, -12, -10,   8,
199   -4,  -7,  -4,  -7,  -5,  -6,  -6,  -6,  -6, -11, -10,  -7, -10,  -8,  -6,   7,
200   -5,  -8,  -5,  -8,  -8,  -7,  -7, -10,  -7,  -6,  -9,  -6,  -6, -10,  -8,  -3,   8,
201  -11, -10, -12, -12, -20, -19, -20, -11,  -8,  -8,  -8, -10, -16,  -4, -11, -10, -19,  12,
202  -10,  -9,  -8, -17,  -7, -16,  -9, -13,  -3,  -9,  -8, -10, -15,  -1, -19,  -8, -10,  -4,  10,
203   -5, -11, -11, -11,  -6,  -9,  -9, -12, -10,  -1,  -5,  -9,  -5,  -8, -10, -10,  -6, -17,  -9,   8,
204   -8, -11,   3,   2, -14,  -6,  -5,  -7,  -5, -13, -15,  -6, -10, -16,  -9,  -5,  -6, -12, -12, -11,   8,
205   -7,  -9,  -6,  -4, -17,   3,   2,  -9,  -6, -12,  -9,  -4,  -8, -14,  -7,  -6,  -7, -19, -12,  -9,  -4,   8,
206   -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   -1
207 };
208 
209 /*
210 #
211 #  VTML_20
212 #
213 # This matrix was produced from: vtml_20qij.mat using robinson2.back background frequencies
214 #
215 # VTML_20 substitution matrix, Units = bits/2.0
216 # Expected score = -2.889610 bits; Entropy = 2.921119 bits
217 # Target fraction identity = 0.8312
218 # Lowest Score = -16, Highest Score= 12
219 #
220 */
221 int a_vt20[450] = {
222    7,
223   -7,   8,
224   -6,  -5,   8,
225   -6, -12,  -1,   8,
226   -3,  -7,  -8, -14,  11,
227   -5,  -2,  -4,  -4, -13,   8,
228   -5, -10,  -5,  -1, -14,  -1,   7,
229   -4,  -7,  -5,  -6,  -8,  -8,  -6,   7,
230   -7,  -3,  -3,  -5,  -7,  -2,  -6,  -7,  10,
231   -7,  -8,  -9, -13,  -6, -10, -10, -15,  -9,   8,
232   -7,  -8,  -9, -15, -13,  -7,  -8, -11,  -7,  -1,   6,
233   -6,   0,  -3,  -5, -14,  -2,  -2,  -7,  -5,  -8,  -8,   8,
234   -5,  -6,  -7,  -9,  -5,  -5,  -8, -10, -12,  -1,   0,  -5,  10,
235   -8, -10, -10, -16, -13,  -8, -14, -11,  -5,  -4,  -3, -14,  -2,   9,
236   -4,  -6,  -8,  -6,  -9,  -5,  -6,  -8,  -6, -10,  -7,  -6, -10,  -8,   8,
237   -2,  -6,  -2,  -5,  -4,  -4,  -5,  -4,  -4,  -9,  -8,  -5,  -8,  -6,  -4,   7,
238   -3,  -6,  -4,  -6,  -6,  -5,  -6,  -8,  -5,  -4,  -7,  -4,  -4,  -8,  -6,  -1,   8,
239   -9,  -8, -10, -11, -16, -15, -16,  -9,  -6,  -6,  -6,  -8, -12,  -3,  -9,  -8, -15,  12,
240   -8,  -7,  -6, -14,  -5, -12,  -7, -10,  -1,  -7,  -6,  -8, -11,   1, -15,  -6,  -8,  -2,   9,
241   -3,  -9,  -9,  -9,  -4,  -7,  -7, -10,  -8,   1,  -3,  -8,  -3,  -6,  -8,  -8,  -4, -13,  -7,   7,
242   -6,  -8,   3,   3, -11,  -4,  -3,  -5,  -4, -11, -12,  -4,  -8, -13,  -7,  -3,  -5, -10, -10,  -9,   8,
243   -5,  -6,  -4,  -3, -13,   3,   3,  -7,  -4, -10,  -7,  -2,  -6, -11,  -5,  -4,  -5, -15,  -9,  -7,  -2,   7,
244   -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   -1
245 };
246 
247 /*
248 #
249 #  VTML_40
250 #
251 # This matrix was produced from: vtml_40qij.mat using robinson2.back background frequencies
252 #
253 # VTML_40 substitution matrix, Units = bits/2.0
254 # Expected score = -1.963330 bits; Entropy = 2.266217 bits
255 # Target fraction identity = 0.6968
256 # Lowest Score = -13, Highest Score= 12
257 #
258 */
259 int a_vt40[450] = {
260    6,
261   -5,   8,
262   -4,  -3,   8,
263   -4,  -8,   0,   7,
264   -1,  -5,  -6, -10,  11,
265   -3,   0,  -2,  -3, -10,   8,
266   -3,  -7,  -3,   1, -11,   0,   7,
267   -2,  -5,  -3,  -4,  -6,  -6,  -5,   7,
268   -5,  -1,  -1,  -3,  -5,   0,  -4,  -5,  10,
269   -5,  -6,  -7, -10,  -4,  -7,  -8, -12,  -7,   7,
270   -5,  -6,  -7, -11,  -9,  -5,  -7,  -9,  -5,   1,   6,
271   -4,   2,  -2,  -3, -10,  -1,  -1,  -5,  -3,  -6,  -6,   7,
272   -4,  -4,  -5,  -7,  -3,  -3,  -6,  -8,  -8,   0,   1,  -4,   9,
273   -6,  -8,  -8, -13, -10,  -7, -11,  -9,  -3,  -2,  -1, -10,  -1,   9,
274   -3,  -5,  -6,  -4,  -7,  -4,  -4,  -6,  -4,  -8,  -5,  -4,  -7,  -7,   8,
275    0,  -4,  -1,  -3,  -2,  -3,  -3,  -3,  -3,  -6,  -6,  -3,  -6,  -5,  -3,   6,
276   -1,  -4,  -2,  -4,  -4,  -3,  -4,  -6,  -3,  -3,  -5,  -3,  -2,  -6,  -4,   0,   7,
277   -7,  -6,  -8,  -9, -12, -12, -12,  -7,  -4,  -4,  -4,  -7,  -9,  -1,  -7,  -6, -11,  12,
278   -6,  -5,  -4, -10,  -3,  -9,  -5,  -8,   0,  -5,  -4,  -6,  -7,   2, -11,  -5,  -6,   0,   9,
279   -1,  -7,  -7,  -7,  -2,  -5,  -6,  -8,  -6,   3,  -1,  -6,  -1,  -4,  -6,  -6,  -2, -10,  -5,   7,
280   -4,  -5,   4,   3,  -8,  -2,  -1,  -3,  -2,  -8,  -9,  -2,  -6, -10,  -5,  -2,  -3,  -8,  -7,  -7,   7,
281   -3,  -4,  -2,  -1, -10,   4,   3,  -5,  -2,  -7,  -6,  -1,  -4,  -9,  -4,  -3,  -3, -12,  -7,  -5,   0,   7,
282   -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   -1
283 };
284 
285 /*
286 #
287 #  VTML_80
288 #
289 # This matrix was produced from: vtml_80qij.mat using robinson2.back background frequencies
290 #
291 # VTML_80 substitution matrix, Units = bits/2.0
292 # Expected score = -1.137019 bits; Entropy = 1.390771 bits
293 # Target fraction identity = 0.5024
294 # Lowest Score = -9, Highest Score= 12
295 #
296 */
297 int a_vt80[450] = {
298    5,
299   -3,   7,
300   -2,  -1,   7,
301   -2,  -5,   1,   7,
302    0,  -4,  -4,  -7,  10,
303   -2,   1,  -1,  -1,  -6,   6,
304   -2,  -3,  -1,   2,  -7,   1,   6,
305   -1,  -3,  -1,  -2,  -4,  -4,  -3,   6,
306   -3,   0,   0,  -1,  -3,   0,  -2,  -4,   9,
307   -3,  -5,  -5,  -7,  -2,  -5,  -5,  -8,  -4,   6,
308   -3,  -4,  -5,  -8,  -6,  -3,  -5,  -7,  -3,   2,   5,
309   -2,   3,  -1,  -2,  -6,   0,   0,  -3,  -1,  -4,  -4,   6,
310   -2,  -3,  -4,  -5,  -2,  -2,  -4,  -6,  -5,   2,   2,  -2,   8,
311   -4,  -5,  -6,  -9,  -6,  -5,  -7,  -7,  -1,  -1,   0,  -7,   0,   8,
312   -1,  -3,  -4,  -3,  -5,  -2,  -2,  -4,  -3,  -5,  -4,  -2,  -5,  -5,   7,
313    1,  -2,   0,  -1,  -1,  -2,  -1,  -1,  -1,  -4,  -4,  -1,  -4,  -3,  -1,   5,
314    0,  -2,  -1,  -2,  -2,  -2,  -2,  -4,  -2,  -1,  -3,  -1,  -1,  -4,  -3,   1,   6,
315   -5,  -4,  -6,  -7,  -9,  -8,  -8,  -5,  -2,  -2,  -2,  -5,  -5,   1,  -6,  -5,  -8,  12,
316   -4,  -3,  -3,  -7,  -2,  -6,  -4,  -6,   2,  -3,  -2,  -4,  -4,   3,  -8,  -3,  -4,   1,   8,
317    0,  -4,  -5,  -5,  -1,  -4,  -4,  -6,  -4,   3,   0,  -4,   0,  -2,  -4,  -4,  -1,  -6,  -4,   6,
318   -2,  -3,   4,   4,  -5,  -1,   0,  -1,   0,  -6,  -6,  -1,  -4,  -7,  -3,   0,  -1,  -6,  -5,  -5,   7,
319   -2,  -1,  -1,   0,  -6,   4,   3,  -3,  -1,  -5,  -4,   0,  -3,  -6,  -2,  -1,  -2,  -8,  -5,  -4,   0,   6,
320   -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   -1
321 };
322 
323 /*
324 #
325 #  VTML_120
326 #
327 # This matrix was produced from: vtml_120qij.mat using robinson2.back background frequencies
328 #
329 # VTML_120 substitution matrix, Units = bits/2.0
330 # Expected score = -0.723803 bits; Entropy = 0.938201 bits
331 # Target fraction identity = 0.3748
332 # Lowest Score = -7, Highest Score= 11
333 #
334 */
335 int a_vt120[450] = {
336    4,
337   -2,   6,
338   -1,  -1,   6,
339   -1,  -3,   2,   6,
340    0,  -3,  -3,  -5,   9,
341   -1,   1,   0,   0,  -5,   5,
342   -1,  -2,   0,   2,  -5,   1,   5,
343    0,  -2,  -1,  -1,  -3,  -3,  -2,   6,
344   -2,   0,   1,  -1,  -3,   1,  -1,  -3,   8,
345   -2,  -3,  -4,  -5,  -1,  -4,  -4,  -6,  -3,   5,
346   -2,  -3,  -4,  -6,  -4,  -3,  -4,  -5,  -2,   2,   5,
347   -1,   3,   0,  -1,  -5,   1,   1,  -2,   0,  -3,  -3,   5,
348   -1,  -2,  -3,  -4,  -1,  -2,  -3,  -5,  -3,   2,   2,  -2,   7,
349   -3,  -4,  -4,  -7,  -5,  -4,  -5,  -5,   0,   0,   1,  -5,   1,   7,
350   -1,  -2,  -2,  -2,  -4,  -1,  -2,  -3,  -2,  -4,  -3,  -1,  -4,  -4,   7,
351    1,  -1,   1,  -1,   0,  -1,  -1,  -1,  -1,  -3,  -3,  -1,  -2,  -2,  -1,   4,
352    0,  -2,   0,  -1,  -1,  -1,  -1,  -2,  -1,   0,  -2,  -1,  -1,  -3,  -2,   1,   5,
353   -4,  -3,  -5,  -6,  -7,  -6,  -6,  -4,  -1,  -2,  -2,  -4,  -4,   2,  -5,  -4,  -6,  11,
354   -3,  -2,  -2,  -5,  -1,  -4,  -3,  -5,   2,  -2,  -1,  -3,  -3,   4,  -6,  -2,  -3,   2,   8,
355    0,  -3,  -4,  -4,   0,  -3,  -3,  -4,  -3,   3,   1,  -3,   1,  -1,  -3,  -3,   0,  -4,  -2,   5,
356   -1,  -2,   4,   4,  -4,   0,   1,  -1,   0,  -4,  -5,   0,  -3,  -5,  -2,   0,   0,  -5,  -3,  -4,   6,
357   -1,   0,   0,   0,  -5,   3,   3,  -2,   0,  -4,  -3,   1,  -2,  -4,  -1,  -1,  -1,  -6,  -3,  -3,   0,   5,
358   -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   -1
359 };
360 
361 /*
362 #     VTML160
363 #
364 # This matrix was produced with scripts written by
365 # Tobias Mueller and Sven Rahmann [June-2001].
366 #
367 # VTML160 substitution matrix, Units = Third-Bits
368 # Expected Score = -1.297840 Third-Bits
369 # Lowest Score = -7, Highest Score = 16
370 #
371 # Entropy H = 0.562489 Bits
372 #
373 # 30-Jun-2001
374 */
375 int a_vt160[450] = {
376   5,
377  -2, 7,
378  -1, 0, 7,
379  -1,-3, 3, 7,
380   1,-3,-3,-5,13,
381  -1, 2, 0, 1,-4, 6,
382  -1,-1, 0, 3,-5, 2, 6,
383   0,-3, 0,-1,-2,-3,-2, 8,
384  -2, 1, 1, 0,-2, 2,-1,-3, 9,
385  -1,-4,-4,-6,-1,-4,-5,-7,-4, 6,
386  -2,-3,-4,-6,-4,-2,-4,-6,-3, 3, 6,
387  -1, 4, 0, 0,-4, 2, 1,-2, 0,-4,-3, 5,
388  -1,-2,-3,-5,-1,-1,-3,-5,-3, 2, 4,-2, 8,
389  -3,-5,-5,-7,-4,-4,-6,-6, 0, 0, 2,-5, 1, 9,
390   0,-2,-2,-1,-3,-1,-1,-3,-2,-4,-3,-1,-4,-5, 9,
391   1,-1, 1, 0, 1, 0, 0, 0,-1,-3,-3,-1,-3,-3, 0, 4,
392   1,-1, 0,-1, 0,-1,-1,-2,-1,-1,-2,-1,-1,-3,-1, 2, 5,
393  -5,-4,-5,-7,-7,-6,-7,-5,-1,-2,-1,-5,-4, 3,-5,-4,-6,16,
394  -3,-3,-2,-5,-1,-4,-3,-5, 3,-2,-1,-3,-2, 6,-6,-2,-3, 4,10,
395   0,-4,-4,-4, 1,-3,-3,-5,-3, 4, 2,-3, 1,-1,-3,-2, 0,-5,-3, 5,
396  -1,-2, 5, 6,-4, 0, 2,-1, 0,-5,-5, 0,-4,-6,-2, 1, 0,-6,-3,-4, 5,
397  -1, 0, 0, 3,-5, 4, 5,-2, 0,-4,-3, 2,-3,-5,-1, 0,-1,-7,-4,-3, 2, 5,
398   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
399  -7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7, 6};
400 
401 /*
402 #
403 #  VTML_200
404 #
405 # This matrix was produced from: vtml_200qij.mat using vtml_P.mat background frequencies
406 #
407 # VTML_200 substitution matrix, Units = bits/3.0
408 # Expected score = -0.358430 bits; Entropy = 0.412084 bits
409 # Target fraction identity = 0.2295
410 # Lowest Score = -6, Highest Score= 15
411 #
412 */
413 int a_vt200[450] = {
414   4,
415  -2,  7,
416  -1,  0,  6,
417  -1, -2,  3,  6,
418   1, -3, -2, -4, 12,
419  -1,  2,  1,  1, -3,  5,
420  -1, -1,  1,  3, -4,  2,  5,
421   0, -2,  0, -1, -2, -2, -1,  8,
422  -2,  1,  1,  0, -2,  2,  0, -2,  8,
423  -1, -3, -4, -5,  0, -3, -4, -6, -3,  5,
424  -2, -3, -4, -5, -3, -2, -4, -5, -2,  3,  5,
425  -1,  4,  1,  0, -4,  2,  1, -2,  0, -3, -3,  5,
426  -1, -2, -3, -4, -1, -1, -3, -4, -3,  2,  3, -2,  6,
427  -3, -4, -4, -6, -3, -3, -5, -5,  0,  0,  2, -5,  1,  8,
428   0, -1, -2, -1, -3, -1, -1, -2, -2, -4, -3, -1, -3, -4,  9,
429   1, -1,  1,  0,  1,  0,  0,  0,  0, -3, -3,  0, -2, -3,  0,  4,
430   1, -1,  0, -1,  0,  0, -1, -2, -1, -1, -2,  0, -1, -3, -1,  2,  4,
431  -4, -3, -5, -6, -6, -6, -6, -5, -1, -2, -1, -4, -3,  3, -4, -4, -5, 15,
432  -3, -2, -2, -4,  0, -3, -3, -5,  3, -2, -1, -3, -2,  5, -5, -2, -3,  4,  9,
433   0, -3, -3, -4,  1, -2, -3, -4, -3,  4,  2, -3,  2, -1, -3, -2,  0, -4, -2,  4,
434  -1, -1,  4,  4, -3,  1,  2,  0,  0, -4, -4,  0, -3, -5, -1,  0,  0, -5, -3, -3,  6,
435  -1,  0,  1,  2, -3,  3,  3, -1,  1, -3, -3,  1, -2, -4, -1,  0,  0, -6, -3, -2,  2,  5,
436  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  -1
437 };
438 
439 /*
440   Matrix made by matblas from blosum50.iij
441   BLOSUM Clustered Scoring Matrix in 1/3 Bit Units
442   Blocks Database = /data/blocks_5.0/blocks.dat
443   Cluster Percentage: >= 50
444   Entropy =   0.4808, Expected =  -0.3573
445 */
446 /*
447  A  R  N  D  C  Q  E  G  H  I  L  K  M  F  P  S  T  W  Y  V  B  Z  X  * */
448 int abl50[450] = {
449   5,
450  -2, 7,
451  -1,-1, 7,
452  -2,-2, 2, 8,
453  -1,-4,-2,-4,13,
454  -1, 1, 0, 0,-3, 7,
455  -1, 0, 0, 2,-3, 2, 6,
456   0,-3, 0,-1,-3,-2,-3, 8,
457  -2, 0, 1,-1,-3, 1, 0,-2,10,
458  -1,-4,-3,-4,-2,-3,-4,-4,-4, 5,
459  -2,-3,-4,-4,-2,-2,-3,-4,-3, 2, 5,
460  -1, 3, 0,-1,-3, 2, 1,-2, 0,-3,-3, 6,
461  -1,-2,-2,-4,-2, 0,-2,-3,-1, 2, 3,-2, 7,
462  -3,-3,-4,-5,-2,-4,-3,-4,-1, 0, 1,-4, 0, 8,
463  -1,-3,-2,-1,-4,-1,-1,-2,-2,-3,-4,-1,-3,-4,10,
464   1,-1, 1, 0,-1, 0,-1, 0,-1,-3,-3, 0,-2,-3,-1, 5,
465   0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 2, 5,
466  -3,-3,-4,-5,-5,-1,-3,-3,-3,-3,-2,-3,-1, 1,-4,-4,-3,15,
467  -2,-1,-2,-3,-3,-1,-2,-3, 2,-1,-1,-2, 0, 4,-3,-2,-2, 2, 8,
468   0,-3,-3,-4,-1,-3,-3,-4,-4, 4, 1,-3, 1,-1,-3,-2, 0,-3,-1, 5,
469  -2,-1, 4, 5,-3, 0, 1,-1, 0,-4,-4, 0,-3,-4,-2, 0, 0,-5,-3,-4, 5,
470  -1, 0, 0, 1,-3, 4, 5,-2, 0,-3,-3, 1,-1,-4,-1, 0,-1,-2,-2,-3, 2, 5,
471  -1,-1,-1,-1,-2,-1,-1,-2,-1,-1,-1,-1,-1,-2,-2,-1, 0,-3,-1,-1,-1,-1,-1,
472  -1,-1,-1,-1,-2,-1,-1,-2,-1,-1,-1,-1,-1,-2,-2,-1, 0,-3,-1,-1,-1,-1,-1, 7};
473 
474 /*
475   A   R   N   D   C   Q   E   G   H   I   L   K   M   F   P   S   T   W   Y   V   B   Z   X   * */
476 int a_md10[450]= {
477  11,	/* A */
478 -12, 12,	/* R */
479 -12,-13, 13,	/* N */
480 -11,-18, -3, 12,	/* D */
481 -13,-10,-14,-20, 17,	/* C */
482 -13, -5,-11,-13,-19, 13,	/* Q */
483 -10,-15,-12, -2,-22, -5, 12,	/* E */
484  -8, -9,-11, -9,-12,-16, -9, 11,	/* G */
485 -16, -5, -5,-10,-12, -3,-15,-16, 16,	/* H */
486 -13,-17,-14,-19,-17,-20,-19,-21,-18, 12,	/* I */
487 -15,-14,-19,-21,-16,-12,-20,-21,-13, -7, 10,	/* L */
488 -14, -2, -6,-15,-21, -6, -8,-15,-13,-17,-18, 12,	/* K */
489 -13,-14,-15,-18,-15,-14,-18,-19,-15, -4, -4,-12, 16,	/* M */
490 -18,-22,-19,-22,-11,-22,-23,-22,-14,-11, -6,-23,-14, 14,	/* F */
491  -7,-12,-17,-18,-18, -8,-17,-16,-10,-19,-10,-16,-17,-17, 13,	/* P */
492  -5,-10, -4,-12, -7,-13,-15, -7,-11,-14,-13,-13,-15,-11, -6, 11,	/* S */
493  -4,-12, -7,-14,-14,-13,-15,-14,-13, -7,-16,-10, -7,-19, -9, -4, 12,	/* T */
494 -21, -9,-21,-21,-10,-17,-21,-13,-21,-21,-13,-21,-17,-13,-21,-15,-18, 18,	/* W */
495 -20,-17,-12,-13, -7,-16,-21,-20, -3,-15,-16,-20,-17, -3,-20,-12,-17,-12, 15,	/* Y */
496  -6,-17,-17,-15,-12,-17,-14,-13,-19, -1, -8,-18, -5,-12,-16,-14,-10,-16,-18, 11,	/* V */
497 -12,-15,  5,  5,-17,-12, -7,-10, -7,-16,-20,-11,-17,-21,-17, -8,-10,-22,-13,-16, 13,	/* B */
498 -16,-18,-17, -8,-32,  1,  9,-17,-17,-29,-26,-11,-24,-34,-21,-21,-21,-29,-29,-22, -9, 13, /* Z */
499  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,	/* X */
500  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9};	/* * */
501 
502 int a_md20[450] = {
503  10,
504 -10, 12,
505  -9,-10, 13,
506  -8,-14, -1, 12,
507 -10, -7,-11,-16, 17,
508 -10, -3, -8, -9,-16, 13,
509  -7,-11, -9,  1,-19, -3, 11,
510  -5, -6, -8, -6, -9,-12, -7, 11,
511 -12, -3, -2, -7, -9,  0,-12,-13, 15,
512 -10,-14,-11,-16,-14,-16,-16,-17,-14, 12,
513 -12,-11,-15,-18,-13, -9,-17,-18,-10, -4, 10,
514 -11,  0, -4,-12,-17, -3, -5,-12, -9,-14,-15, 12,
515  -9,-11,-12,-15,-12,-11,-15,-16,-12, -1, -2, -9, 15,
516 -15,-19,-16,-19, -8,-18,-20,-19,-11, -8, -4,-19,-10, 13,
517  -5, -9,-13,-15,-14, -5,-14,-12, -7,-15, -7,-13,-14,-14, 12,
518  -2, -8, -1, -9, -4,-10,-12, -5, -8,-11,-10,-10,-12, -8, -3, 10,
519  -1, -9, -4,-11,-10,-10,-12,-11,-10, -4,-12, -7, -4,-15, -7, -1, 11,
520 -17, -6,-18,-18, -7,-14,-18,-10,-17,-17,-10,-17,-14,-10,-18,-12,-15, 18,
521 -16,-14, -9,-11, -4,-12,-18,-17,  0,-12,-12,-17,-14,  0,-16, -9,-13, -9, 14,
522  -3,-14,-14,-12, -9,-14,-11,-11,-15,  2, -5,-15, -2, -9,-13,-11, -7,-13,-14, 11,
523  -9,-12,  6,  6,-14, -9, -4, -7, -4,-13,-17, -8,-13,-18,-14, -5, -7,-19,-10,-13, 12,
524 -12,-13,-13, -4,-27,  4, 10,-13,-12,-24,-21, -6,-20,-29,-17,-17,-17,-24,-24,-18, -6, 12,
525  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
526  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9 };
527 
528 int a_md40[450] = {
529   9,
530  -7, 11,
531  -6, -6, 12,
532  -6,-10,  1, 11,
533  -7, -5, -8,-13, 16,
534  -7,  0, -5, -6,-12, 12,
535  -5, -8, -5,  3,-15,  0, 11,
536  -3, -4, -5, -4, -7, -9, -4, 10,
537  -9,  0,  0, -4, -6,  2, -8,-10, 14,
538  -6,-10, -8,-12,-11,-12,-12,-13,-11, 11,
539  -9, -9,-12,-14,-10, -6,-13,-14, -7, -1,  9,
540  -8,  3, -1, -8,-12, -1, -3, -9, -6,-11,-12, 11,
541  -6, -8, -9,-12, -9, -8,-11,-12, -9,  1,  1, -7, 14,
542 -11,-15,-12,-15, -5,-14,-16,-15, -7, -5, -1,-16, -7, 13,
543  -2, -6, -9,-11,-11, -3,-11, -9, -4,-11, -5,-10,-10,-11, 12,
544   0, -5,  1, -6, -2, -7, -8, -2, -6, -8, -7, -7, -8, -6, -1,  9,
545   1, -6, -2, -8, -7, -7, -8, -7, -7, -2, -9, -5, -2,-11, -4,  1, 10,
546 -14, -4,-14,-15, -4,-11,-15, -7,-13,-13, -8,-13,-11, -7,-14, -9,-12, 18,
547 -13,-10, -6, -8, -2, -9,-14,-13,  2, -9, -9,-13,-11,  2,-13, -7,-10, -6, 14,
548  -1,-11,-10, -9, -7,-11, -8, -8,-12,  4, -2,-12,  0, -6, -9, -7, -4,-10,-11, 10,
549  -6, -8,  6,  6,-10, -6, -1, -4, -2,-10,-13, -5,-10,-14,-10, -3, -5,-15, -7,-10, 11,
550  -8, -8, -8,  0,-21,  6, 10, -8, -7,-18,-16, -3,-15,-23,-12,-12,-12,-19,-18,-14, -3, 11,
551  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
552  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9};
553 
554 /*
555   Matrix made by matblas from blosum62.iij
556   * column uses minimum score
557   BLOSUM Clustered Scoring Matrix in 1/2 Bit Units
558   Blocks Database = /data/blocks_5.0/blocks.dat
559   Cluster Percentage: >= 62
560   Entropy =   0.6979, Expected =  -0.5209
561 */
562 
563 int abl62[450] = {
564   4,
565  -1, 5,
566  -2, 0, 6,
567  -2,-2, 1, 6,
568   0,-3,-3,-3, 9,
569  -1, 1, 0, 0,-3, 5,
570  -1, 0, 0, 2,-4, 2, 5,
571   0,-2, 0,-1,-3,-2,-2, 6,
572  -2, 0, 1,-1,-3, 0, 0,-2, 8,
573  -1,-3,-3,-3,-1,-3,-3,-4,-3, 4,
574  -1,-2,-3,-4,-1,-2,-3,-4,-3, 2, 4,
575  -1, 2, 0,-1,-3, 1, 1,-2,-1,-3,-2, 5,
576  -1,-1,-2,-3,-1, 0,-2,-3,-2, 1, 2,-1, 5,
577  -2,-3,-3,-3,-2,-3,-3,-3,-1, 0, 0,-3, 0, 6,
578  -1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4, 7,
579   1,-1, 1, 0,-1, 0, 0, 0,-1,-2,-2, 0,-1,-2,-1, 4,
580   0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 1, 5,
581  -3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1, 1,-4,-3,-2,11,
582  -2,-2,-2,-3,-2,-1,-2,-3, 2,-1,-1,-2,-1, 3,-3,-2,-2, 2, 7,
583   0,-3,-3,-3,-1,-2,-2,-3,-3, 3, 1,-2, 1,-1,-2,-2, 0,-3,-1, 4,
584  -2,-1, 3, 4,-3, 0, 1,-1, 0,-3,-4, 0,-3,-3,-2, 0,-1,-4,-3,-3, 4,
585  -1, 0, 0, 1,-3, 3, 4,-2, 0,-3,-3, 1,-1,-3,-1, 0,-1,-3,-2,-2, 1, 4,
586   0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2, 0, 0,-2,-1,-1,-1,-1,-1,
587   0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2, 0, 0,-2,-1,-1,-1,-1,-1, 6};
588 
589 /* blosum80 in 1/2 bit units (previous versions had 1/3 bit units) */
590 /*
591   Matrix made by matblas from blosum80.iij
592   * column uses minimum score
593   BLOSUM Clustered Scoring Matrix in 1/2 Bit Units
594   Blocks Database = /data/blocks_5.0/blocks.dat
595   Cluster Percentage: >= 80
596   Entropy =   0.9868, Expected =  -0.7442
597 */
598 
599 int abl80[450] = {
600   5,
601  -2, 6,
602  -2,-1, 6,
603  -2,-2, 1, 6,
604  -1,-4,-3,-4, 9,
605  -1, 1, 0,-1,-4, 6,
606  -1,-1,-1, 1,-5, 2, 6,
607   0,-3,-1,-2,-4,-2,-3, 6,
608  -2, 0, 0,-2,-4, 1, 0,-3, 8,
609  -2,-3,-4,-4,-2,-3,-4,-5,-4, 5,
610  -2,-3,-4,-5,-2,-3,-4,-4,-3, 1, 4,
611  -1, 2, 0,-1,-4, 1, 1,-2,-1,-3,-3, 5,
612  -1,-2,-3,-4,-2, 0,-2,-4,-2, 1, 2,-2, 6,
613  -3,-4,-4,-4,-3,-4,-4,-4,-2,-1, 0,-4, 0, 6,
614  -1,-2,-3,-2,-4,-2,-2,-3,-3,-4,-3,-1,-3,-4, 8,
615   1,-1, 0,-1,-2, 0, 0,-1,-1,-3,-3,-1,-2,-3,-1, 5,
616   0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-2,-1,-1,-2,-2, 1, 5,
617  -3,-4,-4,-6,-3,-3,-4,-4,-3,-3,-2,-4,-2, 0,-5,-4,-4,11,
618  -2,-3,-3,-4,-3,-2,-3,-4, 2,-2,-2,-3,-2, 3,-4,-2,-2, 2, 7,
619   0,-3,-4,-4,-1,-3,-3,-4,-4, 3, 1,-3, 1,-1,-3,-2, 0,-3,-2, 4,
620  -2,-2, 4, 4,-4, 0, 1,-1,-1,-4,-4,-1,-3,-4,-2, 0,-1,-5,-3,-4, 4,
621  -1, 0, 0, 1,-4, 3, 4,-3, 0,-4,-3, 1,-2,-4,-2, 0,-1,-4,-3,-3, 0, 4,
622  -1,-1,-1,-2,-3,-1,-1,-2,-2,-2,-2,-1,-1,-2,-2,-1,-1,-3,-2,-1,-2,-1,-1,
623  -1,-1,-1,-2,-3,-1,-1,-2,-2,-2,-2,-1,-1,-2,-2,-1,-1,-3,-2,-1,-2,-1,-1, 6};
624 
625 /* OPTIMA_5 matrix: Kann et al. (2000) Proteins 41:498-503 */
626 
627 int aopt5[450] = {
628   7,
629  -2,11,
630  -4, 1,12,
631  -4,-4, 4,13,
632   1,-6,-6,-6,20,
633  -1, 2, 0, 0,-6, 9,
634  -2, 0, 1, 4,-8, 4, 8,
635   1,-4, 1,-2,-6,-4,-5,13,
636  -4, 1, 2,-2,-6, 0, 0,-4,17,
637  -1,-6,-6,-7,-1,-6,-7,-8,-6, 7,
638  -1,-4,-7,-9,-1,-5,-6,-8,-5, 6, 6,
639  -2, 6, 0,-1,-6, 3, 3,-4,-1,-6,-4, 7,
640  -2,-2,-4,-6,-2, 0,-4,-6,-4, 2, 5,-2,10,
641  -4,-6,-6,-7,-4,-6,-6,-6,-2, 1, 3,-6, 0,11,
642  -1,-4,-4,-1,-6,-2,-1,-4,-4,-6,-7,-2,-4,-8,15,
643   2,-2, 2, 1,-2, 0, 0, 0,-2,-4,-4, 1,-2,-4,-2, 7,
644   0,-2, 0,-2,-2,-2,-1,-3,-4,-2,-3,-2,-1,-4,-2, 4, 9,
645  -6,-6,-8,-8,-4,-4,-6,-4,-4,-6,-3,-6,-2, 3,-8,-6,-4,22,
646  -4,-3,-4,-4,-4,-2,-4,-6, 4,-2, 0,-4,-2, 7,-6,-4,-4, 4,14,
647   1,-7,-6,-6,-1,-4,-6,-6,-6, 7, 3,-5, 2, 0,-4,-5, 1,-6,-2, 8,
648  -4,-1, 8,10,-6, 0, 3, 0, 1,-7,-8, 0,-5,-6,-2, 1,-1,-8,-4,-6, 9,
649  -1, 1, 0, 3,-7, 6, 6,-4, 0,-6,-6, 3,-2,-6,-2, 0,-1,-5,-3,-5, 2, 6,
650  -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,
651  -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10};
652 
653 /*	DNA alphabet
654 
655 	A, C, G, T, U   1-4, 5
656 	R, Y            6, 7
657 	M (A or C)	8
658 	W (A or T)	9
659 	S (C or G)	10
660 	K (G or T)	11
661 	D (not C)	12
662 	H (not G)	13
663 	V (not T)	14
664 	B (not A)	15
665 	N		16
666 	X 		17
667 */
668 
669 char nt[MAXSQ+1] ={"\0ACGTURYMWSKDHVBNXACGTURYMWSKDHVBNX\0"};
670 char ntx[MAXSQ+1]={"\0ACGTURYMWSKDHVBNXacgturymwskdhvbnx\0"};
671 char ntc[MAXSQ+1]={"\0TGCAAYRKWSMHDBVNXtgcaayrkwsmhdbvnx\0"};
672 
673 /* nt complement to encoding */
674                      /* A:T C:G G:C T:A U:A */
675 int gc_nt[MAXSQ+1]={ 0,  4,  3,  2,  1,  1,
676                      /* R:Y Y:R M:K W:W */
677  		         7,  6, 11,  9,
678                      /* S:S K:M D:H H:D */
679 		        10,  8, 13, 12,
680                      /* B:V V:B N:N X:X */
681 		        15, 14, 16, 16};
682 
683 int nnt = 17;
684 int nntx = 34;
685 
686 int hnt[MAXSQ+1] = {
687   NMAP,0,1,2,3,3,0,1,0,0,1,2,0,0,0,1,NMAP,
688   NMAP,0,1,2,3,3,0,1,0,0,1,2,0,0,0,1,NMAP,NMAP};
689 int hntx[MAXSQ+1] = {
690   NMAP,0,1,2,3,3,0,1,0,0,1,2,0,0,0,1,NMAP,
691   NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,
692   NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP,NMAP};
693 
694 int npam[450] = {
695 /*       A  C  G  T  U  R  Y  M  W  S  K  D  H  V  B  N  X  */
696 	 5,						/* A */
697 	-4, 5,						/* C */
698 	-4,-4, 5,					/* G */
699 	-4,-4,-4, 5,					/* T */
700 	-4,-4,-4, 5, 5,					/* U */
701 	 2,-1, 2,-1,-1, 2,				/* R (A G)*/
702 	-1, 2,-1, 2, 2,-2, 2,				/* Y (C T)*/
703 	 2, 2,-1,-1,-1,-1,-1, 2,			/* M (A C)*/
704 	 2,-1,-1, 2, 2, 1, 1, 1, 2,			/* W (A T)*/
705 	-1, 2, 2,-1,-1, 1, 1, 1,-1, 2,			/* S (C G)*/
706 	-1,-1, 2, 2, 2, 1, 1,-1, 1, 1, 2,		/* K (G T)*/
707 	 1,-2, 1, 1, 1, 1,-1,-1, 1,-1, 1, 1,		/* D (!C) */
708 	 1, 1,-2, 1, 1,-1, 1, 1, 1,-1,-1,-1, 1,		/* H (!G) */
709 	 1, 1, 1,-2,-2, 1,-1, 1,-1, 1,-1,-1,-1, 1,	/* V (!T) */
710 	-2, 1, 1, 1, 1,-1, 1,-1,-1, 1, 1,-1,-1,-1, 1,	/* B (!A) */
711 	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* N */
712 	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; /* X */
713 /*       A  C  G  T  U  R  Y  M  W  S  K  D  H  V  B  N  */
714 
715 int *pam;			/* Pam matrix- 1D */
716 /* int *pam12; */
717 /* int *pam12x; */
718 int pamh1[MAXSQ+1];		/* used for kfact replacement */
719 
720 /* according to Reese and Pearson (2002) Bioinformatics 18:1500-1507
721 the most effective gap penalties for matrices in 1/3 bit united are:
722  open = 25 - 0.1 * Pam_distance; ext = 5
723 */
724 
725 /* 16-Nov-2010 modified for modern gap open/gap extend
726  */
727 
728 
729 /* must be ordered by entropy to adjust scoring matrix for query
730    length */
731 
732 #include <math.h>
733 #ifndef M_LN2
734 #define M_LN2 0.69314718055994530942
735 #endif
736 
737 #define BIT2_SCALE M_LN2/2.0
738 #define BIT3_SCALE M_LN2/3.0
739 #define BIT5_SCALE M_LN2/5.0
740 
741 /* abbrev, name, matrix, scale, ulambda, entropy, tfract_id, gopen, gext */
742 struct std_pam_str std_pams[] = {
743   {"VT10", "VT10",   a_vt10,  BIT2_SCALE, 0.2299, 3.4474, 0.9107, -16, -2},
744   {"P10",  "MD10",   a_md10,  BIT3_SCALE, 0.2299, 3.4474, 0.9107, -23, -4},
745   {"M10",  "MD10",   a_md10,  BIT3_SCALE, 0.2299, 3.4474, 0.9107, -23, -4},
746   {"MD10", "MD10",   a_md10,  BIT3_SCALE, 0.2299, 3.46293, 0.9107, -23, -4},
747   {"VT20", "VT20",   a_vt20,  BIT2_SCALE, 0.2300, 2.921119, 0.8312, -15, -2},
748   {"P20",  "MD20",   a_md20,  BIT3_SCALE, 0.2300, 2.9397, 0.822, -22, -4},
749   {"M20",  "MD20",   a_md20,  BIT3_SCALE, 0.2300, 2.9397, 0.822, -22, -4},
750   {"MD20", "MD20",   a_md20,  BIT3_SCALE, 0.2300, 2.9397, 0.822, -22, -4},
751   {"VT40", "VT40",   a_vt40,  BIT2_SCALE, 0.2305, 2.266217, 0.6968, -14, -2},
752   {"P40",  "MD40",   a_md40,  BIT3_SCALE, 0.2305, 2.2284, 0.679, -21, -4},
753   {"M40",  "MD40",   a_md40,  BIT3_SCALE, 0.2305, 2.2284, 0.679, -21, -4},
754   {"MD40", "MD40",   a_md40,  BIT3_SCALE, 0.2305, 2.2284, 0.679, -21, -4},
755   {"VT80", "VT80",   a_vt80,  BIT2_SCALE, 0.2305, 1.390771, 0.5024, -14, -2},
756   {"BL80", "BL80",    abl80,  BIT2_SCALE, 0.2259, 0.9128, 0.392, -10, -2},
757   {"VT120","VT120", a_vt120,  BIT2_SCALE, 0.3416, 0.938201, 0.3748,  -10, -1},
758   {"P120","PAM120", apam120,  BIT3_SCALE, 0.3416, 0.9062, 0.353,  -14, -3},
759   {"BL62", "BL62",    abl62,  BIT2_SCALE, 0.3716, 0.6979, 0.302, -11, -1},
760   {"BP62", "BL62",    abl62,  BIT2_SCALE, 0.3716, 0.6979, 0.302, -11, -1},
761   {"VT160","VT160", a_vt160,  BIT3_SCALE, 0.2263, 0.617215, 0.2884, -12, -2},
762   {"BL50", "BL50",    abl50,  BIT3_SCALE, 0.2318, 0.4850, 0.273, -10, -2},
763   {"OPT5","OPTIMA5",  aopt5,  BIT5_SCALE, 0.1432, 0.4560, 0.262, -18, -2},
764   {"VT200","VTM200",a_vt200,  BIT3_SCALE, 0.2252, 0.4121, 0.2295, -10, -2},
765   {"P250", "PAM250",apam250,  BIT3_SCALE, 0.2252, 0.3207, 0.185, -10, -2},
766   {"\0",   "\0",       NULL,  0.0,         0.0,    0.0,   0.0,   0,  0}
767 };
768 
769 /* Robinson & Robinson counts (based on old aa[] ordering) */
770 long rrcounts[25] = {
771   0,
772   35155,	/* A */
773   23105,	/* R */
774   20212,	/* N */
775   24161,	/* D */
776   8669,		/* C */
777   19208,	/* Q */
778   28354,	/* E */
779   33229,	/* G */
780   9906,		/* H */
781   23161,	/* I */
782   40625,	/* L */
783   25872,	/* K */
784   10101,	/* M */
785   17367,	/* F */
786   23435,	/* P */
787   32070,	/* S */
788   26311,	/* T */
789   5990,		/* W */
790   14488,	/* Y */
791   29012,	/* V */
792   0,		/* B */
793   0,		/* Z */
794   0,		/* X */
795   0 		/* * */
796 };
797 
798 long rrtotal = 450431;
799 #else
800 
801 /* extern char sqnam[]; */
802 /* extern char sqtype[]; */
803 /* extern int gdelval, ggapval; */
804 extern int pamoff;
805 
806 extern char *NCBIstdaa;
807 extern char *NCBIstdaa_l;
808 extern char NCBIstdaa_n;
809 extern char *NCBIstdaa_ext;
810 extern char NCBIstdaa_ext_n;
811 extern char *pam_sq;
812 extern char *apam_sq;
813 extern char *npam_sq;
814 extern int  pam_sq_n;
815 extern int  apam_sq_n;
816 extern int  npam_sq_n;
817 
818 /*
819 extern char aa[MAXSQ+1];
820 extern char aax[MAXSQ+1];
821 */
822 extern char pssm_aa[26];
823 extern char othx[MAXSQ+1];
824 extern char nt[MAXSQ+1];
825 extern char ntx[MAXSQ+1];
826 extern char ntc[MAXSQ+1];
827 extern int gc_nt[MAXSQ+1];
828 
829 extern  int naa;
830 extern  int naax;
831 extern  int noth;
832 extern  int nothx;
833 extern  int nnt;
834 extern  int nntx;
835 
836 extern int h_NCBIstdaa[MAXSQ+1];
837 extern int h_NCBIstdaa_ext[MAXSQ+1];
838 /*
839 extern  int haa[MAXSQ+1];
840 extern  int haax[MAXSQ+1];
841 */
842 extern  int hnt[MAXSQ+1];
843 extern  int hntx[MAXSQ+1];
844 /* extern  int had[MAXSQ+1]; */
845 
846 extern  int apam250[450];
847 extern  int apam120[450];
848 extern  int a_vt10[450];
849 extern  int a_vt20[450];
850 extern  int a_vt40[450];
851 extern  int a_vt80[450];
852 extern  int a_vt120[450];
853 extern  int a_vt160[450];
854 extern  int a_vt200[450];
855 extern	int a_md10[450];
856 extern  int a_md20[450];
857 extern  int a_md40[450];
858 extern  int abl50[450];
859 extern  int abl62[450];
860 extern  int abl80[450];
861 extern  int aopt5[450];
862 extern	int npam[450];
863 extern	int *pam;
864 /* extern  int *pam12; */
865 /* extern  int *pam12x; */
866 extern	int pamh1[MAXSQ+1];
867 extern  long rrcounts[25];
868 extern  long rrtotal;
869 
870 extern struct std_pam_str std_pams[];
871 #endif
872 #endif
873