1 /* ===========================================================================
2 *
3 * PUBLIC DOMAIN NOTICE
4 * National Center for Biotechnology Information
5 *
6 * This software/database is a "United States Government Work" under the
7 * terms of the United States Copyright Act. It was written as part of
8 * the author's official duties as a United States Government employee and
9 * thus cannot be copyrighted. This software/database is freely available
10 * to the public for use. The National Library of Medicine and the U.S.
11 * Government have not placed any restriction on its use or reproduction.
12 *
13 * Although all reasonable efforts have been taken to ensure the accuracy
14 * and reliability of the software and data, the NLM and the U.S.
15 * Government do not and cannot warrant the performance or results that
16 * may be obtained by using this software or data. The NLM and the U.S.
17 * Government disclaim all warranties, express or implied, including
18 * warranties of performance, merchantability or fitness for any particular
19 * purpose.
20 *
21 * Please cite the author in any work or product based on this material.
22 *
23 * ===========================================================================*/
24
25 /** @file matrix_frequency_data.c
26 * Joint probabilities for specific matrices.
27 *
28 * @author Yi-Kuo Yu, Alejandro Schaffer, E. Michael Gertz
29 */
30
31 #include <stdlib.h>
32 #include <algo/blast/core/ncbi_std.h>
33 #include <algo/blast/composition_adjustment/composition_constants.h>
34 #include <algo/blast/composition_adjustment/matrix_frequency_data.h>
35
36
37 /*
38 * Joint and background probabilities for the BLOSUM series of
39 * matrices.
40 *
41 * These data are the actual joint probabilities originally used to
42 * generate the BLOSUM matrices, printed at full precision (because we
43 * can.) The blocks data was obtained from
44 *
45 * ftp://ftp.ncbi.nih.gov/repository/blocks/unix/blosum/blocks_5.0.dat.Z
46 *
47 * and used to generate the joint probabilities for the BLOSUM
48 * matrices, using a small modification to the 'blosum' program
49 * supplied in
50 *
51 * ftp://ftp.ncbi.nih.gov/repository/blocks/unix/blosum/blosum.tar.Z
52 *
53 * The 'blosum' program generates files that contain joint
54 * probabilities, e.g. 'blosum62.qij', but these probabilities are by
55 * default printed at low accuracy. We modified the print statements
56 * the generate blosum??.qij to print at full precision. The specific
57 * modification to the Oct 18, 1992 version of the file blosum.c is
58 *
59 * 229c229
60 * < fprintf(fout, "%.4f ", (double) fij / totpairs);
61 * ---
62 * > fprintf(fout, "%.16e ", (double) fij / totpairs);
63 *
64 * Internally, the 'blosum' program uses exactly the higher-precision
65 * values that we print out to compute matrices.
66 */
67
68
69 /** Joint probabilities for BLOSUM45 */
70 static const double
71 BLOSUM45_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
72 {
73 {1.8067859192199651e-02, 2.8632970280029189e-03, 2.5852716092104864e-03,
74 2.6802872542729885e-03, 1.4721761726112878e-03, 2.4357016851740214e-03,
75 3.7509741193044975e-03, 6.3392371060867767e-03, 1.2691974410907309e-03,
76 3.6179059863255059e-03, 5.2267067349121834e-03, 3.6916191127573101e-03,
77 1.6118871872377726e-03, 2.1340510849853227e-03, 2.3620871424910785e-03,
78 6.2253573100243412e-03, 4.1104541288450981e-03, 5.9150588019808183e-04,
79 1.6885104821419373e-03, 5.5306101689579796e-03},
80 {2.8632970280029189e-03, 1.2981201352308378e-02, 1.9658257815459023e-03,
81 2.0049066095474076e-03, 5.7991132007379289e-04, 2.4961427104605001e-03,
82 3.0703156814048727e-03, 2.2360083825481514e-03, 1.2617224002813071e-03,
83 1.5810689324881372e-03, 2.9473459585734607e-03, 6.0953893700066292e-03,
84 1.0175430650195330e-03, 1.4313644854523438e-03, 1.2956809668774457e-03,
85 2.5563801601305607e-03, 1.9632608045077912e-03, 4.0556397557578358e-04,
86 1.4263902102458958e-03, 2.1140813134646885e-03},
87 {2.5852716092104864e-03, 1.9658257815459023e-03, 7.8501470034711886e-03,
88 3.1259558053206788e-03, 6.6941554412093584e-04, 1.5524817804651980e-03,
89 2.1724722312522963e-03, 3.3237456813136586e-03, 1.2666696726132058e-03,
90 1.4625067095661482e-03, 1.8988677499765833e-03, 2.8106528553236663e-03,
91 7.1583261905988334e-04, 1.1127971670944336e-03, 1.1422087671867729e-03,
92 3.0730446623880589e-03, 2.4501354524355920e-03, 2.1811180797041274e-04,
93 8.5687995159461643e-04, 1.6162116532974411e-03},
94 {2.6802872542729885e-03, 2.0049066095474076e-03, 3.1259558053206788e-03,
95 1.3237563732845571e-02, 6.2265374552703391e-04, 1.7098653558570117e-03,
96 4.7436012699642992e-03, 2.7602948240886133e-03, 1.2034182798676748e-03,
97 1.3552305161392132e-03, 2.1559462215056625e-03, 2.8090778444402500e-03,
98 6.1643397738889020e-04, 9.9489940177469407e-04, 1.5334105263610980e-03,
99 2.8268709927001139e-03, 2.2865632447178858e-03, 2.4814784831918892e-04,
100 1.0831280925706914e-03, 1.7172231262216453e-03},
101 {1.4721761726112878e-03, 5.7991132007379289e-04, 6.6941554412093584e-04,
102 6.2265374552703391e-04, 9.4412874076739879e-03, 4.1042025902182758e-04,
103 7.4458585782220040e-04, 9.8139056130103924e-04, 2.8594866937112776e-04,
104 7.8981156978924646e-04, 1.4823588205010103e-03, 7.7106114710675307e-04,
105 3.5586318613686682e-04, 6.5657489327527010e-04, 4.1203914885321426e-04,
106 1.1459765491404468e-03, 1.0139516933242551e-03, 1.0481557906271918e-04,
107 3.8818429938079952e-04, 1.1756651305043552e-03},
108 {2.4357016851740214e-03, 2.4961427104605001e-03, 1.5524817804651980e-03,
109 1.7098653558570117e-03, 4.1042025902182758e-04, 5.6843729268296912e-03,
110 3.1938622849651262e-03, 1.8500970336630773e-03, 1.0245276847880554e-03,
111 1.2849197264462630e-03, 2.1618326111720785e-03, 2.8660992672576535e-03,
112 8.4702447612542125e-04, 7.3960293189886505e-04, 1.0946565407497567e-03,
113 2.3989430846357322e-03, 1.4716698819858265e-03, 3.0973861280282215e-04,
114 1.0059662375582828e-03, 1.3753940441066036e-03},
115 {3.7509741193044975e-03, 3.0703156814048727e-03, 2.1724722312522963e-03,
116 4.7436012699642992e-03, 7.4458585782220040e-04, 3.1938622849651262e-03,
117 1.3069658477215567e-02, 2.5107356320500625e-03, 1.3852382529276910e-03,
118 1.7450831790645173e-03, 3.1086857110181228e-03, 4.4504838476236725e-03,
119 8.9571496470550454e-04, 1.3425662787911086e-03, 2.2536863740022671e-03,
120 3.2415108480856065e-03, 2.5397857261280324e-03, 4.0327648497408492e-04,
121 1.2098752538504236e-03, 2.2567534430266742e-03},
122 {6.3392371060867767e-03, 2.2360083825481514e-03, 3.3237456813136586e-03,
123 2.7602948240886133e-03, 9.8139056130103924e-04, 1.8500970336630773e-03,
124 2.5107356320500625e-03, 2.8511624448995753e-02, 1.2310524422167546e-03,
125 1.9327062043969442e-03, 3.1643945035180797e-03, 3.0499894759105127e-03,
126 1.0995162153881082e-03, 1.6723363525115967e-03, 2.2429535327172330e-03,
127 4.8536849682850143e-03, 2.7272360099530155e-03, 5.9271120428223316e-04,
128 1.3911803421160626e-03, 2.5146676607186078e-03},
129 {1.2691974410907309e-03, 1.2617224002813071e-03, 1.2666696726132058e-03,
130 1.2034182798676748e-03, 2.8594866937112776e-04, 1.0245276847880554e-03,
131 1.3852382529276910e-03, 1.2310524422167546e-03, 5.8487547639124796e-03,
132 6.9585846800609714e-04, 1.5573467613102150e-03, 1.3245694120032801e-03,
133 5.7090651699323862e-04, 7.8182832078834081e-04, 6.9844962409397991e-04,
134 1.2960325177514280e-03, 9.1931607877249958e-04, 1.4976351019639964e-04,
135 1.2330522291934879e-03, 7.9246698200683503e-04},
136 {3.6179059863255059e-03, 1.5810689324881372e-03, 1.4625067095661482e-03,
137 1.3552305161392132e-03, 7.8981156978924646e-04, 1.2849197264462630e-03,
138 1.7450831790645173e-03, 1.9327062043969442e-03, 6.9585846800609714e-04,
139 1.2388694439401509e-02, 9.2647566985432136e-03, 1.9773203824746490e-03,
140 2.2593292403687306e-03, 3.0575457844642532e-03, 1.6077385068018789e-03,
141 2.3421848303183976e-03, 2.7542711781141610e-03, 4.6749463838911354e-04,
142 1.8956764459114616e-03, 9.4267822167510788e-03},
143 {5.2267067349121834e-03, 2.9473459585734607e-03, 1.8988677499765833e-03,
144 2.1559462215056625e-03, 1.4823588205010103e-03, 2.1618326111720785e-03,
145 3.1086857110181228e-03, 3.1643945035180797e-03, 1.5573467613102150e-03,
146 9.2647566985432136e-03, 2.6346530417480200e-02, 3.1142098082328640e-03,
147 4.0711638827261041e-03, 5.6719761997807835e-03, 1.9088185348168649e-03,
148 3.1873279813785520e-03, 3.8426846085017905e-03, 8.4082046153240706e-04,
149 3.0567323782711214e-03, 8.7503010016331175e-03},
150 {3.6916191127573101e-03, 6.0953893700066292e-03, 2.8106528553236663e-03,
151 2.8090778444402500e-03, 7.7106114710675307e-04, 2.8660992672576535e-03,
152 4.4504838476236725e-03, 3.0499894759105127e-03, 1.3245694120032801e-03,
153 1.9773203824746490e-03, 3.1142098082328640e-03, 1.1978396089560937e-02,
154 1.1104403771137466e-03, 1.4742483750212233e-03, 1.9968025222690676e-03,
155 3.2668812435946099e-03, 2.7862613227875948e-03, 4.5043772800615431e-04,
156 1.4940888302424689e-03, 2.4843185667476147e-03},
157 {1.6118871872377726e-03, 1.0175430650195330e-03, 7.1583261905988334e-04,
158 6.1643397738889020e-04, 3.5586318613686682e-04, 8.4702447612542125e-04,
159 8.9571496470550454e-04, 1.0995162153881082e-03, 5.7090651699323862e-04,
160 2.2593292403687306e-03, 4.0711638827261041e-03, 1.1104403771137466e-03,
161 2.5874360305861857e-03, 1.2371987255888946e-03, 6.8765677463444332e-04,
162 1.0131873446874034e-03, 1.1327846844696357e-03, 2.1265849704555571e-04,
163 8.6680034269080448e-04, 2.1688399348504966e-03},
164 {2.1340510849853227e-03, 1.4313644854523438e-03, 1.1127971670944336e-03,
165 9.9489940177469407e-04, 6.5657489327527010e-04, 7.3960293189886505e-04,
166 1.3425662787911086e-03, 1.6723363525115967e-03, 7.8182832078834081e-04,
167 3.0575457844642532e-03, 5.6719761997807835e-03, 1.4742483750212233e-03,
168 1.2371987255888946e-03, 1.2391203870190888e-02, 8.9236221263296761e-04,
169 1.7312816295078565e-03, 1.7453918151105632e-03, 8.4095245274993082e-04,
170 3.4263744717066835e-03, 3.0946984716836139e-03},
171 {2.3620871424910785e-03, 1.2956809668774457e-03, 1.1422087671867729e-03,
172 1.5334105263610980e-03, 4.1203914885321426e-04, 1.0946565407497567e-03,
173 2.2536863740022671e-03, 2.2429535327172330e-03, 6.9844962409397991e-04,
174 1.6077385068018789e-03, 1.9088185348168649e-03, 1.9968025222690676e-03,
175 6.8765677463444332e-04, 8.9236221263296761e-04, 1.6004098119159461e-02,
176 1.9539606804874826e-03, 1.9148086102650892e-03, 2.9896951765680344e-04,
177 6.8907122080648483e-04, 1.6099029423219423e-03},
178 {6.2253573100243412e-03, 2.5563801601305607e-03, 3.0730446623880589e-03,
179 2.8268709927001139e-03, 1.1459765491404468e-03, 2.3989430846357322e-03,
180 3.2415108480856065e-03, 4.8536849682850143e-03, 1.2960325177514280e-03,
181 2.3421848303183976e-03, 3.1873279813785520e-03, 3.2668812435946099e-03,
182 1.0131873446874034e-03, 1.7312816295078565e-03, 1.9539606804874826e-03,
183 1.0412392255159685e-02, 4.7291383160678064e-03, 3.5033107367116276e-04,
184 1.4588588725561497e-03, 3.1161052123834937e-03},
185 {4.1104541288450981e-03, 1.9632608045077912e-03, 2.4501354524355920e-03,
186 2.2865632447178858e-03, 1.0139516933242551e-03, 1.4716698819858265e-03,
187 2.5397857261280324e-03, 2.7272360099530155e-03, 9.1931607877249958e-04,
188 2.7542711781141610e-03, 3.8426846085017905e-03, 2.7862613227875948e-03,
189 1.1327846844696357e-03, 1.7453918151105632e-03, 1.9148086102650892e-03,
190 4.7291383160678064e-03, 8.6497284024982021e-03, 3.1868671219664247e-04,
191 1.3184355271303671e-03, 3.8213223234837145e-03},
192 {5.9150588019808183e-04, 4.0556397557578358e-04, 2.1811180797041274e-04,
193 2.4814784831918892e-04, 1.0481557906271918e-04, 3.0973861280282215e-04,
194 4.0327648497408492e-04, 5.9271120428223316e-04, 1.4976351019639964e-04,
195 4.6749463838911354e-04, 8.4082046153240706e-04, 4.5043772800615431e-04,
196 2.1265849704555571e-04, 8.4095245274993082e-04, 2.9896951765680344e-04,
197 3.5033107367116276e-04, 3.1868671219664247e-04, 5.3077625858668461e-03,
198 8.1328347217338593e-04, 4.4278005713663357e-04},
199 {1.6885104821419373e-03, 1.4263902102458958e-03, 8.5687995159461643e-04,
200 1.0831280925706914e-03, 3.8818429938079952e-04, 1.0059662375582828e-03,
201 1.2098752538504236e-03, 1.3911803421160626e-03, 1.2330522291934879e-03,
202 1.8956764459114616e-03, 3.0567323782711214e-03, 1.4940888302424689e-03,
203 8.6680034269080448e-04, 3.4263744717066835e-03, 6.8907122080648483e-04,
204 1.4588588725561497e-03, 1.3184355271303671e-03, 8.1328347217338593e-04,
205 6.5658130332894053e-03, 1.9130855013886519e-03},
206 {5.5306101689579796e-03, 2.1140813134646885e-03, 1.6162116532974411e-03,
207 1.7172231262216453e-03, 1.1756651305043552e-03, 1.3753940441066036e-03,
208 2.2567534430266742e-03, 2.5146676607186078e-03, 7.9246698200683503e-04,
209 9.4267822167510788e-03, 8.7503010016331175e-03, 2.4843185667476147e-03,
210 2.1688399348504966e-03, 3.0946984716836139e-03, 1.6099029423219423e-03,
211 3.1161052123834937e-03, 3.8213223234837145e-03, 4.4278005713663357e-04,
212 1.9130855013886519e-03, 1.4058608660834061e-02}};
213
214 /** Background frequencies for BLOSUM45 */
215 static const double
216 BLOSUM45_bg[COMPO_NUM_TRUE_AA] =
217 {7.8254696826829992e-02, 5.2293400508515497e-02, 4.1869234505207159e-02,
218 4.9715478669430609e-02, 2.3504091554598174e-02, 3.5913319135963809e-02,
219 5.8088865918176615e-02, 7.4985562582061308e-02, 2.4796120028184831e-02,
220 6.1906885653760506e-02, 9.3758807045384390e-02, 6.0002347578480664e-02,
221 2.5078218042817218e-02, 4.6429254925009635e-02, 4.2599362265185327e-02,
222 6.1179450532953900e-02, 5.2495886521295561e-02, 1.3367812099806363e-02,
223 3.3781387194819178e-02, 6.9979818411519248e-02};
224
225
226 /** Joint probabilities for BLOSUM50 */
227 static const double
228 BLOSUM50_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
229 {
230 {1.9177376165900414e-02, 2.7240376714546557e-03, 2.4031492992281512e-03,
231 2.5950400141435646e-03, 1.5161141503466080e-03, 2.1916331677173605e-03,
232 3.4448278914639618e-03, 6.2251471153775524e-03, 1.2127849526349368e-03,
233 3.5067963781079273e-03, 4.8064175187919377e-03, 3.3118156445774184e-03,
234 1.5929928229676674e-03, 2.0111462534334831e-03, 2.2367690269707355e-03,
235 6.2077372467778114e-03, 3.9182728585714704e-03, 4.8631739510959277e-04,
236 1.5289255743243066e-03, 5.4421693501580945e-03},
237 {2.7240376714546557e-03, 1.5249518561669190e-02, 1.9839339217171100e-03,
238 1.8569646551144466e-03, 5.0841145558634812e-04, 2.5241992415035875e-03,
239 2.9346714600391238e-03, 2.0330929248566329e-03, 1.2916661377324677e-03,
240 1.4850904029213015e-03, 2.8200506536265085e-03, 6.3631786906688794e-03,
241 8.8044244163237157e-04, 1.1827555704613821e-03, 1.1291633722052721e-03,
242 2.5480707779992882e-03, 2.0755623893205866e-03, 3.8597740102525838e-04,
243 1.2968650803478032e-03, 1.9767324973351923e-03},
244 {2.4031492992281512e-03, 1.9839339217171100e-03, 1.0064274648985122e-02,
245 3.4938528463521034e-03, 5.8526580393535813e-04, 1.5772225567522585e-03,
246 2.2654955215314441e-03, 3.1227790949497000e-03, 1.5032392778514345e-03,
247 1.2604525924282989e-03, 1.7212395367610532e-03, 2.6781179272946298e-03,
248 6.5072987349609041e-04, 9.2077070726659231e-04, 1.0780835837505738e-03,
249 3.1777703084905646e-03, 2.5607235691682607e-03, 2.2470939491808472e-04,
250 9.0102455753719311e-04, 1.4642269583191670e-03},
251 {2.5950400141435646e-03, 1.8569646551144466e-03, 3.4938528463521034e-03,
252 1.6142284245400377e-02, 4.9055796014848500e-04, 1.7355972391605227e-03,
253 4.8092932462930728e-03, 2.8256049847966923e-03, 1.1224039610689225e-03,
254 1.2187267471037043e-03, 1.8320202151810498e-03, 2.6483031701007680e-03,
255 5.4518900860208049e-04, 8.3372775443144032e-04, 1.4911089792375384e-03,
256 2.8168184837142236e-03, 2.2443557004503045e-03, 2.1629521399451062e-04,
257 8.6838200454238037e-04, 1.6071086977600263e-03},
258 {1.5161141503466080e-03, 5.0841145558634812e-04, 5.8526580393535813e-04,
259 4.9055796014848500e-04, 9.0790816399874165e-03, 3.7509694198458956e-04,
260 5.7443167694834051e-04, 8.6416125741413223e-04, 2.8532822032727102e-04,
261 8.3949095461630769e-04, 1.3866946702884293e-03, 5.9394346268641564e-04,
262 3.7056882781629923e-04, 6.0643258121975913e-04, 3.6775301298071699e-04,
263 1.1014893301583900e-03, 9.6593119839638185e-04, 9.5473415415687051e-05,
264 4.0265275985100583e-04, 1.3071530803028910e-03},
265 {2.1916331677173605e-03, 2.5241992415035875e-03, 1.5772225567522585e-03,
266 1.7355972391605227e-03, 3.7509694198458956e-04, 5.7288780946700701e-03,
267 3.2946407159359019e-03, 1.6542835961738131e-03, 1.0434512306085959e-03,
268 1.1246276733803604e-03, 1.8792097500823605e-03, 2.8672107479796771e-03,
269 8.1749695236423632e-04, 7.0039848968711364e-04, 1.0716022846036992e-03,
270 2.2199500917807818e-03, 1.4976248429072652e-03, 3.4211307677156259e-04,
271 8.6801232355735846e-04, 1.4099696811263587e-03},
272 {3.4448278914639618e-03, 2.9346714600391238e-03, 2.2654955215314441e-03,
273 4.8092932462930728e-03, 5.7443167694834051e-04, 3.2946407159359019e-03,
274 1.4137738860962050e-02, 2.2506310350989874e-03, 1.2713631289270268e-03,
275 1.5027392767795753e-03, 2.5813459827982222e-03, 4.3484287857007489e-03,
276 8.3289745544177065e-04, 1.2381529956170115e-03, 1.9357892959573676e-03,
277 2.9614835299989701e-03, 2.4465955340418752e-03, 4.2400226067181517e-04,
278 1.2320532047293646e-03, 1.9587224017250621e-03},
279 {6.2251471153775524e-03, 2.0330929248566329e-03, 3.1227790949497000e-03,
280 2.8256049847966923e-03, 8.6416125741413223e-04, 1.6542835961738131e-03,
281 2.2506310350989874e-03, 3.1590334199549770e-02, 1.0972793065146165e-03,
282 1.7523277816042203e-03, 2.6606416500206632e-03, 2.7990435215878512e-03,
283 9.3546770862675606e-04, 1.4703871152100261e-03, 1.8725532583338258e-03,
284 4.3892726706643180e-03, 2.4867404596474229e-03, 5.1106914401047939e-04,
285 1.1558215242534139e-03, 2.1542687026690753e-03},
286 {1.2127849526349368e-03, 1.2916661377324677e-03, 1.5032392778514345e-03,
287 1.1224039610689225e-03, 2.8532822032727102e-04, 1.0434512306085959e-03,
288 1.2713631289270268e-03, 1.0972793065146165e-03, 6.3804882118271523e-03,
289 6.5152626785360663e-04, 1.2931025418026663e-03, 1.3522962310675180e-03,
290 4.5805146362189403e-04, 8.9702000483341665e-04, 5.8791282749163360e-04,
291 1.2089586814863836e-03, 8.5349236685497410e-04, 1.6088475111162087e-04,
292 1.2994388028749182e-03, 7.4034388655116329e-04},
293 {3.5067963781079273e-03, 1.4850904029213015e-03, 1.2604525924282989e-03,
294 1.2187267471037043e-03, 8.3949095461630769e-04, 1.1246276733803604e-03,
295 1.5027392767795753e-03, 1.7523277816042203e-03, 6.5152626785360663e-04,
296 1.3999757001274281e-02, 1.0390816757632199e-02, 1.7363767070665819e-03,
297 2.2467399442463766e-03, 3.0498186875911964e-03, 1.3390359572833434e-03,
298 2.0791955470136677e-03, 2.9182353019045755e-03, 4.5881135439627285e-04,
299 1.7726237165460320e-03, 1.0732172589653342e-02},
300 {4.8064175187919377e-03, 2.8200506536265085e-03, 1.7212395367610532e-03,
301 1.8320202151810498e-03, 1.3866946702884293e-03, 1.8792097500823605e-03,
302 2.5813459827982222e-03, 2.6606416500206632e-03, 1.2931025418026663e-03,
303 1.0390816757632199e-02, 3.0409269773873687e-02, 2.6510115013545226e-03,
304 4.1722701893507309e-03, 5.8008510370760203e-03, 1.7339408813938210e-03,
305 2.9030148705129709e-03, 3.8403853123581615e-03, 7.8809411669902049e-04,
306 2.7481481703784771e-03, 9.1689424893657400e-03},
307 {3.3118156445774184e-03, 6.3631786906688794e-03, 2.6781179272946298e-03,
308 2.6483031701007680e-03, 5.9394346268641564e-04, 2.8672107479796771e-03,
309 4.3484287857007489e-03, 2.7990435215878512e-03, 1.3522962310675180e-03,
310 1.7363767070665819e-03, 2.6510115013545226e-03, 1.2999587798271149e-02,
311 9.6710745846319019e-04, 1.2387025901401758e-03, 1.8070838729286381e-03,
312 3.0739875836290694e-03, 2.5875240617244397e-03, 3.6617320485888769e-04,
313 1.2944286682925433e-03, 2.1916787299081464e-03},
314 {1.5929928229676674e-03, 8.8044244163237157e-04, 6.5072987349609041e-04,
315 5.4518900860208049e-04, 3.7056882781629923e-04, 8.1749695236423632e-04,
316 8.3289745544177065e-04, 9.3546770862675606e-04, 4.5805146362189403e-04,
317 2.2467399442463766e-03, 4.1722701893507309e-03, 9.6710745846319019e-04,
318 2.8637130884961001e-03, 1.2334264856852042e-03, 5.4319510273222540e-04,
319 9.8962843407290630e-04, 1.1386579188117374e-03, 2.5453642381012927e-04,
320 7.4966082446689317e-04, 2.1431247883570799e-03},
321 {2.0111462534334831e-03, 1.1827555704613821e-03, 9.2077070726659231e-04,
322 8.3372775443144032e-04, 6.0643258121975913e-04, 7.0039848968711364e-04,
323 1.2381529956170115e-03, 1.4703871152100261e-03, 8.9702000483341665e-04,
324 3.0498186875911964e-03, 5.8008510370760203e-03, 1.2387025901401758e-03,
325 1.2334264856852042e-03, 1.5352527520022995e-02, 7.3889079577318679e-04,
326 1.5819841076161790e-03, 1.4517880681388670e-03, 8.8872966327839206e-04,
327 3.9057132596179516e-03, 2.9949355095799514e-03},
328 {2.2367690269707355e-03, 1.1291633722052721e-03, 1.0780835837505738e-03,
329 1.4911089792375384e-03, 3.6775301298071699e-04, 1.0716022846036992e-03,
330 1.9357892959573676e-03, 1.8725532583338258e-03, 5.8791282749163360e-04,
331 1.3390359572833434e-03, 1.7339408813938210e-03, 1.8070838729286381e-03,
332 5.4319510273222540e-04, 7.3889079577318679e-04, 1.7056411057608904e-02,
333 1.8468214541146135e-03, 1.6196921560667427e-03, 2.3541955953234630e-04,
334 6.4111850267928403e-04, 1.5531163167895289e-03},
335 {6.2077372467778114e-03, 2.5480707779992882e-03, 3.1777703084905646e-03,
336 2.8168184837142236e-03, 1.1014893301583900e-03, 2.2199500917807818e-03,
337 2.9614835299989701e-03, 4.3892726706643180e-03, 1.2089586814863836e-03,
338 2.0791955470136677e-03, 2.9030148705129709e-03, 3.0739875836290694e-03,
339 9.8962843407290630e-04, 1.5819841076161790e-03, 1.8468214541146135e-03,
340 1.1119087492164673e-02, 4.7130010640939217e-03, 3.1984588103465904e-04,
341 1.2969411223575139e-03, 2.9238790831836834e-03},
342 {3.9182728585714704e-03, 2.0755623893205866e-03, 2.5607235691682607e-03,
343 2.2443557004503045e-03, 9.6593119839638185e-04, 1.4976248429072652e-03,
344 2.4465955340418752e-03, 2.4867404596474229e-03, 8.5349236685497410e-04,
345 2.9182353019045755e-03, 3.8403853123581615e-03, 2.5875240617244397e-03,
346 1.1386579188117374e-03, 1.4517880681388670e-03, 1.6196921560667427e-03,
347 4.7130010640939217e-03, 9.9511225720898735e-03, 3.6462369214353146e-04,
348 1.2243502023766173e-03, 4.0630285182107874e-03},
349 {4.8631739510959277e-04, 3.8597740102525838e-04, 2.2470939491808472e-04,
350 2.1629521399451062e-04, 9.5473415415687051e-05, 3.4211307677156259e-04,
351 4.2400226067181517e-04, 5.1106914401047939e-04, 1.6088475111162087e-04,
352 4.5881135439627285e-04, 7.8809411669902049e-04, 3.6617320485888769e-04,
353 2.5453642381012927e-04, 8.8872966327839206e-04, 2.3541955953234630e-04,
354 3.1984588103465904e-04, 3.6462369214353146e-04, 5.8917653327232667e-03,
355 8.1035438644761436e-04, 4.8135675107584730e-04},
356 {1.5289255743243066e-03, 1.2968650803478032e-03, 9.0102455753719311e-04,
357 8.6838200454238037e-04, 4.0265275985100583e-04, 8.6801232355735846e-04,
358 1.2320532047293646e-03, 1.1558215242534139e-03, 1.2994388028749182e-03,
359 1.7726237165460320e-03, 2.7481481703784771e-03, 1.2944286682925433e-03,
360 7.4966082446689317e-04, 3.9057132596179516e-03, 6.4111850267928403e-04,
361 1.2969411223575139e-03, 1.2243502023766173e-03, 8.1035438644761436e-04,
362 7.7325651605433090e-03, 1.7646048865917325e-03},
363 {5.4421693501580945e-03, 1.9767324973351923e-03, 1.4642269583191670e-03,
364 1.6071086977600263e-03, 1.3071530803028910e-03, 1.4099696811263587e-03,
365 1.9587224017250621e-03, 2.1542687026690753e-03, 7.4034388655116329e-04,
366 1.0732172589653342e-02, 9.1689424893657400e-03, 2.1916787299081464e-03,
367 2.1431247883570799e-03, 2.9949355095799514e-03, 1.5531163167895289e-03,
368 2.9238790831836834e-03, 4.0630285182107874e-03, 4.8135675107584730e-04,
369 1.7646048865917325e-03, 1.6356187478795130e-02}};
370
371 /** Background frequencies for BLOSUM50 */
372 static const double
373 BLOSUM50_bg[COMPO_NUM_TRUE_AA] =
374 {7.6539470498057649e-02, 5.3250385307217402e-02, 4.3637061980733187e-02,
375 5.1393635127596211e-02, 2.2316032400410832e-02, 3.4923218698747475e-02,
376 5.6445304260661695e-02, 7.3850907051359951e-02, 2.4711032253042223e-02,
377 6.4065361639403171e-02, 9.5587467619348249e-02, 5.7876000358301254e-02,
378 2.4385897213061735e-02, 4.8098159196680347e-02, 4.0885461298433984e-02,
379 5.9478937760864596e-02, 5.2921707787277797e-02, 1.3706552419028580e-02,
380 3.3493684732315711e-02, 7.2433722397458003e-02};
381
382
383 /** Joint probabilities for BLOSUM62 */
384 static const double
385 BLOSUM62_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
386 {
387 {2.1497573378347484e-02, 2.3470224274721213e-03, 1.9493235258876179e-03,
388 2.1674844853066858e-03, 1.5903351423026848e-03, 1.9242657898716525e-03,
389 2.9879059292799641e-03, 5.8158526388051033e-03, 1.1076584657559144e-03,
390 3.1880644746334580e-03, 4.4186245468471547e-03, 3.3466571942021082e-03,
391 1.3412107617355408e-03, 1.6360627863999076e-03, 2.1568959784943114e-03,
392 6.2524987419815400e-03, 3.7180506975672363e-03, 4.0281679108936688e-04,
393 1.2999956675626666e-03, 5.0679056444508912e-03},
394 {2.3470224274721213e-03, 1.7757465118386322e-02, 1.9786027128591904e-03,
395 1.5865480081162602e-03, 3.9365984789376245e-04, 2.4858611089731411e-03,
396 2.6933867548771758e-03, 1.7221140903704937e-03, 1.2407382229440791e-03,
397 1.2435878276496955e-03, 2.4193952633248727e-03, 6.2339060289407083e-03,
398 8.0309461712520876e-04, 9.3181986323789834e-04, 9.5783034332718700e-04,
399 2.2660898636037261e-03, 1.7802796534180537e-03, 2.6571979312581875e-04,
400 9.2634607111251918e-04, 1.5810185245264004e-03},
401 {1.9493235258876179e-03, 1.9786027128591904e-03, 1.4140291972553610e-02,
402 3.7201973506001745e-03, 4.3845466068066216e-04, 1.5304436972610567e-03,
403 2.2097156829738759e-03, 2.8591871815612977e-03, 1.4301072616183181e-03,
404 9.9437221166923172e-04, 1.3690958423974782e-03, 2.4402105140841090e-03,
405 5.2943633069226512e-04, 7.5004227978192801e-04, 8.6016459857770028e-04,
406 3.1466019144814608e-03, 2.2360795375444384e-03, 1.6159545671597605e-04,
407 7.0048422794024819e-04, 1.2014015528772706e-03},
408 {2.1674844853066858e-03, 1.5865480081162602e-03, 3.7201973506001745e-03,
409 2.1274574617480089e-02, 3.9909227141697264e-04, 1.6481246723433428e-03,
410 4.9158017471929655e-03, 2.5221102126636373e-03, 9.5384849402143984e-04,
411 1.2347404942429857e-03, 1.5202051791453383e-03, 2.4453087721980561e-03,
412 4.6429229320514104e-04, 7.6023722413111566e-04, 1.2373315413524663e-03,
413 2.8035127901697272e-03, 1.8961512776990257e-03, 1.6218020183662784e-04,
414 5.9842263937853702e-04, 1.3158365660538270e-03},
415 {1.5903351423026848e-03, 3.9365984789376245e-04, 4.3845466068066216e-04,
416 3.9909227141697264e-04, 1.1931352277704348e-02, 3.0937204045913537e-04,
417 3.8338775043186374e-04, 7.6951976030099293e-04, 2.2976387481074697e-04,
418 1.0956590131781735e-03, 1.5682982157153873e-03, 5.0124929379033781e-04,
419 3.7717165634097634e-04, 5.1389991547056834e-04, 3.6111795849154795e-04,
420 1.0432626586831986e-03, 9.3041313726939057e-04, 1.4474923964368156e-04,
421 3.4603772624580643e-04, 1.3606607271146112e-03},
422 {1.9242657898716525e-03, 2.4858611089731411e-03, 1.5304436972610567e-03,
423 1.6481246723433428e-03, 3.0937204045913537e-04, 7.3292255467189687e-03,
424 3.5385780499965817e-03, 1.3683038039160171e-03, 1.0489026828741754e-03,
425 8.9102936026571569e-04, 1.6174411456311808e-03, 3.0968229715707327e-03,
426 7.3993258722701268e-04, 5.4255147972143906e-04, 8.4668181752066874e-04,
427 1.8931125300036275e-03, 1.3796838284921874e-03, 2.2737931366728891e-04,
428 6.7584155312457842e-04, 1.1660966117775285e-03},
429 {2.9879059292799641e-03, 2.6933867548771758e-03, 2.2097156829738759e-03,
430 4.9158017471929655e-03, 3.8338775043186374e-04, 3.5385780499965817e-03,
431 1.6133927472163669e-02, 1.9380952488713059e-03, 1.3667885452189439e-03,
432 1.2192061706431622e-03, 2.0030316026648431e-03, 4.1322603720305197e-03,
433 6.7909745467514783e-04, 8.5179405867513139e-04, 1.4216207127018586e-03,
434 2.9539180653600089e-03, 2.0493063257644955e-03, 2.6488552587183780e-04,
435 8.7044186256788659e-04, 1.6987763526262680e-03},
436 {5.8158526388051033e-03, 1.7221140903704937e-03, 2.8591871815612977e-03,
437 2.5221102126636373e-03, 7.6951976030099293e-04, 1.3683038039160171e-03,
438 1.9380952488713059e-03, 3.7804346453413303e-02, 9.5813607255887238e-04,
439 1.3849118546156933e-03, 2.0864716056392773e-03, 2.5392537741810947e-03,
440 7.3281559749652399e-04, 1.1976708695723554e-03, 1.3641171883713547e-03,
441 3.8342830901664762e-03, 2.1858459940987062e-03, 4.0740829083805248e-04,
442 8.3467413018106177e-04, 1.8218235950233687e-03},
443 {1.1076584657559144e-03, 1.2407382229440791e-03, 1.4301072616183181e-03,
444 9.5384849402143984e-04, 2.2976387481074697e-04, 1.0489026828741754e-03,
445 1.3667885452189439e-03, 9.5813607255887238e-04, 9.2802502369336622e-03,
446 5.8089627083019206e-04, 9.8696608463236094e-04, 1.1873625842258938e-03,
447 3.8264639620910225e-04, 8.1041076335565583e-04, 4.7770135861914477e-04,
448 1.1052034635193162e-03, 7.4371746073077327e-04, 1.5168037757411286e-04,
449 1.5213771111755425e-03, 6.4882907765797669e-04},
450 {3.1880644746334580e-03, 1.2435878276496955e-03, 9.9437221166923172e-04,
451 1.2347404942429857e-03, 1.0956590131781735e-03, 8.9102936026571569e-04,
452 1.2192061706431622e-03, 1.3849118546156933e-03, 5.8089627083019206e-04,
453 1.8441526588740136e-02, 1.1382470627796603e-02, 1.5655862274689192e-03,
454 2.5081290988482057e-03, 3.0458868657559346e-03, 1.0068164685944146e-03,
455 1.7225081689171561e-03, 2.6953622613315018e-03, 3.6183761166072852e-04,
456 1.3821121844492116e-03, 1.1972663837662637e-02},
457 {4.4186245468471547e-03, 2.4193952633248727e-03, 1.3690958423974782e-03,
458 1.5202051791453383e-03, 1.5682982157153873e-03, 1.6174411456311808e-03,
459 2.0030316026648431e-03, 2.0864716056392773e-03, 9.8696608463236094e-04,
460 1.1382470627796603e-02, 3.7141460156350926e-02, 2.4634345023228079e-03,
461 4.9293545515183088e-03, 5.4151301166464015e-03, 1.4146090399381900e-03,
462 2.4277107072013821e-03, 3.3238031308707055e-03, 7.3206640617832933e-04,
463 2.2096734692836624e-03, 9.4786263030457313e-03},
464 {3.3466571942021082e-03, 6.2339060289407083e-03, 2.4402105140841090e-03,
465 2.4453087721980561e-03, 5.0124929379033781e-04, 3.0968229715707327e-03,
466 4.1322603720305197e-03, 2.5392537741810947e-03, 1.1873625842258938e-03,
467 1.5655862274689192e-03, 2.4634345023228079e-03, 1.6113385590544604e-02,
468 9.0876633395557617e-04, 9.4875149773685364e-04, 1.5773020912564391e-03,
469 3.1016069999481111e-03, 2.3467014804084987e-03, 2.7198500003555514e-04,
470 9.9908866586876396e-04, 1.9360424083099779e-03},
471 {1.3412107617355408e-03, 8.0309461712520876e-04, 5.2943633069226512e-04,
472 4.6429229320514104e-04, 3.7717165634097634e-04, 7.3993258722701268e-04,
473 6.7909745467514783e-04, 7.3281559749652399e-04, 3.8264639620910225e-04,
474 2.5081290988482057e-03, 4.9293545515183088e-03, 9.0876633395557617e-04,
475 4.0477309321969848e-03, 1.1901770463553603e-03, 4.0824445213456919e-04,
476 8.5603787638552766e-04, 1.0095451907679563e-03, 1.9872537223131380e-04,
477 5.7145288352831449e-04, 2.3123361470140736e-03},
478 {1.6360627863999076e-03, 9.3181986323789834e-04, 7.5004227978192801e-04,
479 7.6023722413111566e-04, 5.1389991547056834e-04, 5.4255147972143906e-04,
480 8.5179405867513139e-04, 1.1976708695723554e-03, 8.1041076335565583e-04,
481 3.0458868657559346e-03, 5.4151301166464015e-03, 9.4875149773685364e-04,
482 1.1901770463553603e-03, 1.8277684015431908e-02, 5.2528021756783813e-04,
483 1.1939618185901600e-03, 1.1624184369750680e-03, 8.4917468952377874e-04,
484 4.2392005745634370e-03, 2.5763052227920180e-03},
485 {2.1568959784943114e-03, 9.5783034332718700e-04, 8.6016459857770028e-04,
486 1.2373315413524663e-03, 3.6111795849154795e-04, 8.4668181752066874e-04,
487 1.4216207127018586e-03, 1.3641171883713547e-03, 4.7770135861914477e-04,
488 1.0068164685944146e-03, 1.4146090399381900e-03, 1.5773020912564391e-03,
489 4.0824445213456919e-04, 5.2528021756783813e-04, 1.9066033679132538e-02,
490 1.6662567934883051e-03, 1.3511005665728870e-03, 1.4152209821874487e-04,
491 4.5224391125285910e-04, 1.2451325046931832e-03},
492 {6.2524987419815400e-03, 2.2660898636037261e-03, 3.1466019144814608e-03,
493 2.8035127901697272e-03, 1.0432626586831986e-03, 1.8931125300036275e-03,
494 2.9539180653600089e-03, 3.8342830901664762e-03, 1.1052034635193162e-03,
495 1.7225081689171561e-03, 2.4277107072013821e-03, 3.1016069999481111e-03,
496 8.5603787638552766e-04, 1.1939618185901600e-03, 1.6662567934883051e-03,
497 1.2585947097159817e-02, 4.7004857686835334e-03, 2.8731729176487776e-04,
498 1.0299846310599138e-03, 2.3587292053265561e-03},
499 {3.7180506975672363e-03, 1.7802796534180537e-03, 2.2360795375444384e-03,
500 1.8961512776990257e-03, 9.3041313726939057e-04, 1.3796838284921874e-03,
501 2.0493063257644955e-03, 2.1858459940987062e-03, 7.4371746073077327e-04,
502 2.6953622613315018e-03, 3.3238031308707055e-03, 2.3467014804084987e-03,
503 1.0095451907679563e-03, 1.1624184369750680e-03, 1.3511005665728870e-03,
504 4.7004857686835334e-03, 1.2514818886617953e-02, 2.8575770858467209e-04,
505 9.4161039895612720e-04, 3.6402328079338207e-03},
506 {4.0281679108936688e-04, 2.6571979312581875e-04, 1.6159545671597605e-04,
507 1.6218020183662784e-04, 1.4474923964368156e-04, 2.2737931366728891e-04,
508 2.6488552587183780e-04, 4.0740829083805248e-04, 1.5168037757411286e-04,
509 3.6183761166072852e-04, 7.3206640617832933e-04, 2.7198500003555514e-04,
510 1.9872537223131380e-04, 8.4917468952377874e-04, 1.4152209821874487e-04,
511 2.8731729176487776e-04, 2.8575770858467209e-04, 6.4699301717154852e-03,
512 8.8744160259272527e-04, 3.5578318710317554e-04},
513 {1.2999956675626666e-03, 9.2634607111251918e-04, 7.0048422794024819e-04,
514 5.9842263937853702e-04, 3.4603772624580643e-04, 6.7584155312457842e-04,
515 8.7044186256788659e-04, 8.3467413018106177e-04, 1.5213771111755425e-03,
516 1.3821121844492116e-03, 2.2096734692836624e-03, 9.9908866586876396e-04,
517 5.7145288352831449e-04, 4.2392005745634370e-03, 4.5224391125285910e-04,
518 1.0299846310599138e-03, 9.4161039895612720e-04, 8.8744160259272527e-04,
519 1.0246100213822419e-02, 1.5489827890922993e-03},
520 {5.0679056444508912e-03, 1.5810185245264004e-03, 1.2014015528772706e-03,
521 1.3158365660538270e-03, 1.3606607271146112e-03, 1.1660966117775285e-03,
522 1.6987763526262680e-03, 1.8218235950233687e-03, 6.4882907765797669e-04,
523 1.1972663837662637e-02, 9.4786263030457313e-03, 1.9360424083099779e-03,
524 2.3123361470140736e-03, 2.5763052227920180e-03, 1.2451325046931832e-03,
525 2.3587292053265561e-03, 3.6402328079338207e-03, 3.5578318710317554e-04,
526 1.5489827890922993e-03, 1.9631915140537640e-02}};
527
528 /** Background frequencies for BLOSUM62 */
529 static const double
530 BLOSUM62_bg[COMPO_NUM_TRUE_AA] =
531 {7.4216205067993410e-02, 5.1614486141284638e-02, 4.4645808512757915e-02,
532 5.3626000838554413e-02, 2.4687457167944848e-02, 3.4259650591416023e-02,
533 5.4311925684587502e-02, 7.4146941452644999e-02, 2.6212984805266227e-02,
534 6.7917367618953756e-02, 9.8907868497150955e-02, 5.8155682303079680e-02,
535 2.4990197579643110e-02, 4.7418459742284751e-02, 3.8538003320306206e-02,
536 5.7229029476494421e-02, 5.0891364550287033e-02, 1.3029956129972148e-02,
537 3.2281512313758580e-02, 7.2919098205619245e-02};
538
539
540 /** Joint probabilities for BLOSUM80 */
541 static const double
542 BLOSUM80_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
543 {
544 {2.5190801261944146e-02, 2.0340063576029794e-03, 1.5934450456787860e-03,
545 1.7567882204091898e-03, 1.5342531535382758e-03, 1.7000666571091031e-03,
546 2.7868757423594017e-03, 5.3312141672192219e-03, 9.4989551434358397e-04,
547 2.6511420856442343e-03, 3.6482390472164553e-03, 2.8776040054767438e-03,
548 1.1106592033970583e-03, 1.3579821676123010e-03, 2.1407549535065536e-03,
549 6.3814552201747433e-03, 3.5676984041129148e-03, 3.2555946863964375e-04,
550 1.1044305938818220e-03, 4.6043558088638440e-03},
551 {2.0340063576029794e-03, 2.0957619284835711e-02, 1.6758487367421928e-03,
552 1.2888167784480715e-03, 3.3826512646630144e-04, 2.3643445818728338e-03,
553 2.2882006533010476e-03, 1.4590947777562337e-03, 1.1860735000568496e-03,
554 1.0137588625981279e-03, 1.8206526954490602e-03, 6.0560763047425702e-03,
555 6.2337540140620625e-04, 6.8229547250252861e-04, 8.5854176274829876e-04,
556 2.0042877649097124e-03, 1.5124193439838248e-03, 2.1495826193954981e-04,
557 7.3405490506437917e-04, 1.3053875072860433e-03},
558 {1.5934450456787860e-03, 1.6758487367421928e-03, 1.6571102507116985e-02,
559 3.6538256029687933e-03, 3.7275314562150083e-04, 1.3857458787672526e-03,
560 1.9028611939066358e-03, 2.5087252791082940e-03, 1.2287120285654496e-03,
561 7.4457563298143141e-04, 1.0685540535108611e-03, 2.2109484306704398e-03,
562 4.0104114114639772e-04, 5.5233725060967317e-04, 6.5378230775305264e-04,
563 2.8681766931253736e-03, 1.9573168921473445e-03, 1.3788261408849363e-04,
564 5.7618561566013431e-04, 9.3483242504674316e-04},
565 {1.7567882204091898e-03, 1.2888167784480715e-03, 3.6538256029687933e-03,
566 2.6192308612565114e-02, 3.3106691118318270e-04, 1.3768335120404338e-03,
567 4.7855109048933571e-03, 2.2232114513351937e-03, 8.1024112807968755e-04,
568 7.7107432004201270e-04, 1.0524113745173926e-03, 1.9891158615195038e-03,
569 3.3025592590943029e-04, 5.9228818844263222e-04, 9.2722402594094192e-04,
570 2.3761553355682980e-03, 1.6423964465390574e-03, 1.1250313032631603e-04,
571 4.5827153005301055e-04, 9.6057858837385150e-04},
572 {1.5342531535382758e-03, 3.3826512646630144e-04, 3.7275314562150083e-04,
573 3.3106691118318270e-04, 1.7242275829262476e-02, 2.8646474074708189e-04,
574 2.8282275916935814e-04, 6.0199758435290119e-04, 1.6234838273827443e-04,
575 1.1265997431595498e-03, 1.4150540356314203e-03, 3.8133934535800398e-04,
576 3.5227309589971249e-04, 5.3668272671786679e-04, 2.9686417147468063e-04,
577 9.5169015207393563e-04, 8.7056289887733830e-04, 1.2638354788184329e-04,
578 3.0970164723884082e-04, 1.3402441983659027e-03},
579 {1.7000666571091031e-03, 2.3643445818728338e-03, 1.3857458787672526e-03,
580 1.3768335120404338e-03, 2.8646474074708189e-04, 9.4347765835274943e-03,
581 3.4983547675341785e-03, 1.0949548858705770e-03, 1.1246735029182945e-03,
582 6.9825772263661188e-04, 1.3621164757556699e-03, 2.8087671852638188e-03,
583 7.2881923779495811e-04, 4.5182331847654853e-04, 6.9151715980429068e-04,
584 1.6537440549432947e-03, 1.2213788117405877e-03, 1.9879174677422644e-04,
585 5.4136767114461271e-04, 1.0117238998697397e-03},
586 {2.7868757423594017e-03, 2.2882006533010476e-03, 1.9028611939066358e-03,
587 4.7855109048933571e-03, 2.8282275916935814e-04, 3.4983547675341785e-03,
588 2.0820161672110919e-02, 1.6705768658803739e-03, 1.2497919872780897e-03,
589 9.6840513155216357e-04, 1.4960914225340589e-03, 3.5721908719380593e-03,
590 5.7149419172049785e-04, 6.3988473796368903e-04, 1.2122196186289647e-03,
591 2.6389347134212079e-03, 1.8749387967046983e-03, 1.9036380224872525e-04,
592 6.3290036404780182e-04, 1.4751061012869160e-03},
593 {5.3312141672192219e-03, 1.4590947777562337e-03, 2.5087252791082940e-03,
594 2.2232114513351937e-03, 6.0199758435290119e-04, 1.0949548858705770e-03,
595 1.6705768658803739e-03, 4.6339669111671353e-02, 7.5449961042330647e-04,
596 9.4996724611759150e-04, 1.6066592192185663e-03, 2.0310505314366269e-03,
597 5.3609624387219209e-04, 8.9864424405597940e-04, 1.0176342727297918e-03,
598 3.4421697217907042e-03, 1.8920241991862482e-03, 2.9373791998702517e-04,
599 6.1327956332154923e-04, 1.4084342214988788e-03},
600 {9.4989551434358397e-04, 1.1860735000568496e-03, 1.2287120285654496e-03,
601 8.1024112807968755e-04, 1.6234838273827443e-04, 1.1246735029182945e-03,
602 1.2497919872780897e-03, 7.5449961042330647e-04, 1.0381617825381334e-02,
603 4.4036371570812095e-04, 7.9508382719793930e-04, 1.0307766502203480e-03,
604 2.6842308809614442e-04, 6.8472295590456679e-04, 4.0762982846324675e-04,
605 9.6226821486916257e-04, 6.8751986685796880e-04, 1.4371608217276840e-04,
606 1.6115232208711219e-03, 5.3755732656986873e-04},
607 {2.6511420856442343e-03, 1.0137588625981279e-03, 7.4457563298143141e-04,
608 7.7107432004201270e-04, 1.1265997431595498e-03, 6.9825772263661188e-04,
609 9.6840513155216357e-04, 9.4996724611759150e-04, 4.4036371570812095e-04,
610 2.1961426293375986e-02, 1.1130703369690390e-02, 1.1532712305851239e-03,
611 2.4830606782385335e-03, 2.6597759616518901e-03, 7.3360010098323712e-04,
612 1.4571406164888326e-03, 2.3588073239766052e-03, 3.3397592349852914e-04,
613 1.2624333898651637e-03, 1.2271122820238527e-02},
614 {3.6482390472164553e-03, 1.8206526954490602e-03, 1.0685540535108611e-03,
615 1.0524113745173926e-03, 1.4150540356314203e-03, 1.3621164757556699e-03,
616 1.4960914225340589e-03, 1.6066592192185663e-03, 7.9508382719793930e-04,
617 1.1130703369690390e-02, 4.4208543625750947e-02, 1.9460828295282577e-03,
618 5.1637253946183711e-03, 5.2243696624605148e-03, 1.1528201208432873e-03,
619 2.0991567569779157e-03, 2.7981964830167271e-03, 6.3277768036502599e-04,
620 2.0134515231625665e-03, 8.8913964764739482e-03},
621 {2.8776040054767438e-03, 6.0560763047425702e-03, 2.2109484306704398e-03,
622 1.9891158615195038e-03, 3.8133934535800398e-04, 2.8087671852638188e-03,
623 3.5721908719380593e-03, 2.0310505314366269e-03, 1.0307766502203480e-03,
624 1.1532712305851239e-03, 1.9460828295282577e-03, 1.8992311051287718e-02,
625 7.1570376147636942e-04, 7.2977429729635017e-04, 1.2494764855845110e-03,
626 2.5724600423967150e-03, 2.0209702186968510e-03, 1.9168209136920497e-04,
627 7.8006357431686252e-04, 1.4847749228956784e-03},
628 {1.1106592033970583e-03, 6.2337540140620625e-04, 4.0104114114639772e-04,
629 3.3025592590943029e-04, 3.5227309589971249e-04, 7.2881923779495811e-04,
630 5.7149419172049785e-04, 5.3609624387219209e-04, 2.6842308809614442e-04,
631 2.4830606782385335e-03, 5.1637253946183711e-03, 7.1570376147636942e-04,
632 5.3068580972096564e-03, 1.0285774291964053e-03, 3.3805426284931307e-04,
633 6.9732452132326552e-04, 9.2870717652810894e-04, 1.9855470215781828e-04,
634 4.6842552580683944e-04, 2.1900560317616967e-03},
635 {1.3579821676123010e-03, 6.8229547250252861e-04, 5.5233725060967317e-04,
636 5.9228818844263222e-04, 5.3668272671786679e-04, 4.5182331847654853e-04,
637 6.3988473796368903e-04, 8.9864424405597940e-04, 6.8472295590456679e-04,
638 2.6597759616518901e-03, 5.2243696624605148e-03, 7.2977429729635017e-04,
639 1.0285774291964053e-03, 2.1050081047094053e-02, 4.2695305789420819e-04,
640 9.9526342159352650e-04, 1.0513746746114907e-03, 7.4360162788489814e-04,
641 4.5643669065202081e-03, 2.2374943285650862e-03},
642 {2.1407549535065536e-03, 8.5854176274829876e-04, 6.5378230775305264e-04,
643 9.2722402594094192e-04, 2.9686417147468063e-04, 6.9151715980429068e-04,
644 1.2122196186289647e-03, 1.0176342727297918e-03, 4.0762982846324675e-04,
645 7.3360010098323712e-04, 1.1528201208432873e-03, 1.2494764855845110e-03,
646 3.3805426284931307e-04, 4.2695305789420819e-04, 2.2132147568842062e-02,
647 1.4255613382498733e-03, 1.0735194808918437e-03, 9.8582208625861730e-05,
648 3.4299989987846913e-04, 1.0356422797820938e-03},
649 {6.3814552201747433e-03, 2.0042877649097124e-03, 2.8681766931253736e-03,
650 2.3761553355682980e-03, 9.5169015207393563e-04, 1.6537440549432947e-03,
651 2.6389347134212079e-03, 3.4421697217907042e-03, 9.6226821486916257e-04,
652 1.4571406164888326e-03, 2.0991567569779157e-03, 2.5724600423967150e-03,
653 6.9732452132326552e-04, 9.9526342159352650e-04, 1.4255613382498733e-03,
654 1.6728326838562371e-02, 4.7707748874885403e-03, 2.2457429196472549e-04,
655 9.2159836957901727e-04, 2.0684030169239110e-03},
656 {3.5676984041129148e-03, 1.5124193439838248e-03, 1.9573168921473445e-03,
657 1.6423964465390574e-03, 8.7056289887733830e-04, 1.2213788117405877e-03,
658 1.8749387967046983e-03, 1.8920241991862482e-03, 6.8751986685796880e-04,
659 2.3588073239766052e-03, 2.7981964830167271e-03, 2.0209702186968510e-03,
660 9.2870717652810894e-04, 1.0513746746114907e-03, 1.0735194808918437e-03,
661 4.7707748874885403e-03, 1.5594999664688735e-02, 2.0707952088013908e-04,
662 8.2888908190237710e-04, 3.2712773918631040e-03},
663 {3.2555946863964375e-04, 2.1495826193954981e-04, 1.3788261408849363e-04,
664 1.1250313032631603e-04, 1.2638354788184329e-04, 1.9879174677422644e-04,
665 1.9036380224872525e-04, 2.9373791998702517e-04, 1.4371608217276840e-04,
666 3.3397592349852914e-04, 6.3277768036502599e-04, 1.9168209136920497e-04,
667 1.9855470215781828e-04, 7.4360162788489814e-04, 9.8582208625861730e-05,
668 2.2457429196472549e-04, 2.0707952088013908e-04, 8.7238920952867408e-03,
669 1.0281252180987448e-03, 3.6291275126003661e-04},
670 {1.1044305938818220e-03, 7.3405490506437917e-04, 5.7618561566013431e-04,
671 4.5827153005301055e-04, 3.0970164723884082e-04, 5.4136767114461271e-04,
672 6.3290036404780182e-04, 6.1327956332154923e-04, 1.6115232208711219e-03,
673 1.2624333898651637e-03, 2.0134515231625665e-03, 7.8006357431686252e-04,
674 4.6842552580683944e-04, 4.5643669065202081e-03, 3.4299989987846913e-04,
675 9.2159836957901727e-04, 8.2888908190237710e-04, 1.0281252180987448e-03,
676 1.4809695895202394e-02, 1.2479627747244684e-03},
677 {4.6043558088638440e-03, 1.3053875072860433e-03, 9.3483242504674316e-04,
678 9.6057858837385150e-04, 1.3402441983659027e-03, 1.0117238998697397e-03,
679 1.4751061012869160e-03, 1.4084342214988788e-03, 5.3755732656986873e-04,
680 1.2271122820238527e-02, 8.8913964764739482e-03, 1.4847749228956784e-03,
681 2.1900560317616967e-03, 2.2374943285650862e-03, 1.0356422797820938e-03,
682 2.0684030169239110e-03, 3.2712773918631040e-03, 3.6291275126003661e-04,
683 1.2479627747244684e-03, 2.4557979462295820e-02}};
684
685 /** Background frequencies for BLOSUM80 */
686 static const double
687 BLOSUM80_bg[COMPO_NUM_TRUE_AA] =
688 {7.2647227078731003e-02, 5.0418078079712533e-02, 4.2998652475215837e-02,
689 5.3630877849155469e-02, 2.8859643195758448e-02, 3.3634522394591609e-02,
690 5.4557686298480158e-02, 7.6673641116832586e-02, 2.5417438256716121e-02,
691 6.7169462169032662e-02, 9.9526086073919384e-02, 5.4794439692059750e-02,
692 2.4441485110408976e-02, 4.7108293477054419e-02, 3.8215524905474578e-02,
693 5.7239465972425123e-02, 5.0130851564694504e-02, 1.4489654685450317e-02,
694 3.4849727270340386e-02, 7.3197242333946158e-02};
695
696
697 /** Joint probabilities for BLOSUM90 */
698 static const double
699 BLOSUM90_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
700 {
701 {2.8941466476520718e-02, 1.8963172918503119e-03, 1.4296539454877236e-03,
702 1.6120541525071418e-03, 1.4378045557717186e-03, 1.5518753295389346e-03,
703 2.6715149842246304e-03, 4.9176944070822995e-03, 8.3429471034916194e-04,
704 2.2806166994472367e-03, 3.1400426239163565e-03, 2.5717145234657262e-03,
705 9.7190459199705012e-04, 1.1707482997247202e-03, 1.9972723941546994e-03,
706 6.1234827650497045e-03, 3.4990592936902896e-03, 3.1628263576966828e-04,
707 9.5781456962094815e-04, 4.2309560726043610e-03},
708 {1.8963172918503119e-03, 2.2892163644406403e-02, 1.4545259958564671e-03,
709 1.1118856442462741e-03, 3.0043550945087249e-04, 2.0799816656266574e-03,
710 1.9867845182036542e-03, 1.2814494483589008e-03, 1.0659803319010067e-03,
711 8.7747376727426759e-04, 1.5563382766215293e-03, 5.6726070720652388e-03,
712 5.5601248568691477e-04, 6.0014287440373390e-04, 7.7860213318230740e-04,
713 1.7926007027022699e-03, 1.3337993839260983e-03, 1.8822355540425045e-04,
714 6.3568077704304765e-04, 1.1439035919666126e-03},
715 {1.4296539454877236e-03, 1.4545259958564671e-03, 1.7753653137209658e-02,
716 3.4122251157479486e-03, 3.5262434817793110e-04, 1.2595133876871906e-03,
717 1.7189800468094042e-03, 2.1939494568804173e-03, 1.1268322842671913e-03,
718 6.2771773800865524e-04, 9.0162895039764071e-04, 1.9751605656395136e-03,
719 3.4437514139917542e-04, 4.5695294787233016e-04, 5.6210182826678802e-04,
720 2.6415583911000790e-03, 1.8096241176560255e-03, 1.1361193219385239e-04,
721 5.3166878528705414e-04, 7.8744578895086331e-04},
722 {1.6120541525071418e-03, 1.1118856442462741e-03, 3.4122251157479486e-03,
723 2.8905985529761216e-02, 2.8205144393017687e-04, 1.2470706135571605e-03,
724 4.8098591474193932e-03, 2.0787428065125128e-03, 7.3570523495442291e-04,
725 6.1360733950558593e-04, 8.9746213145538078e-04, 1.7935339070485811e-03,
726 2.8515554540729039e-04, 4.9706948686116547e-04, 8.3650620447870902e-04,
727 2.1902661040309438e-03, 1.4770487412630099e-03, 9.6154148977656466e-05,
728 4.1238640135342840e-04, 8.1983005205147035e-04},
729 {1.4378045557717186e-03, 3.0043550945087249e-04, 3.5262434817793110e-04,
730 2.8205144393017687e-04, 1.8963924833314688e-02, 2.4062393656260663e-04,
731 2.4018396300677406e-04, 5.1191591124580998e-04, 1.4262451141854431e-04,
732 1.0187249201952210e-03, 1.2204913461061227e-03, 3.4081454298601579e-04,
733 3.0855994042178013e-04, 5.4061743869703049e-04, 2.6341296370767072e-04,
734 9.0081780182465609e-04, 8.3760722742725604e-04, 1.1402385673074935e-04,
735 3.0875531409262481e-04, 1.2790175783090351e-03},
736 {1.5518753295389346e-03, 2.0799816656266574e-03, 1.2595133876871906e-03,
737 1.2470706135571605e-03, 2.4062393656260663e-04, 1.1258473852655668e-02,
738 3.3929068022966746e-03, 1.0135072388571143e-03, 1.0428112436817220e-03,
739 6.2154432511249121e-04, 1.2200582014470405e-03, 2.6612615004061048e-03,
740 6.9614541817054399e-04, 4.3847028249800182e-04, 6.3169039064483155e-04,
741 1.5347331351459369e-03, 1.1633090191045159e-03, 1.8118969468635933e-04,
742 4.8090269093961543e-04, 8.6038475380201306e-04},
743 {2.6715149842246304e-03, 1.9867845182036542e-03, 1.7189800468094042e-03,
744 4.8098591474193932e-03, 2.4018396300677406e-04, 3.3929068022966746e-03,
745 2.4082550387620767e-02, 1.5173914448105995e-03, 1.0609424122148584e-03,
746 8.6556272233095357e-04, 1.2693446983220930e-03, 3.1728712431242272e-03,
747 4.8675933771578960e-04, 5.2592632830518644e-04, 1.1283633992741310e-03,
748 2.4358395159902540e-03, 1.7460695145653721e-03, 1.7186658965667723e-04,
749 5.3762929629223334e-04, 1.3537458445130380e-03},
750 {4.9176944070822995e-03, 1.2814494483589008e-03, 2.1939494568804173e-03,
751 2.0787428065125128e-03, 5.1191591124580998e-04, 1.0135072388571143e-03,
752 1.5173914448105995e-03, 5.2105577140795424e-02, 6.6116372972342219e-04,
753 7.9279793619671047e-04, 1.4084669216931525e-03, 1.8091800840455807e-03,
754 4.5905141534639837e-04, 7.2640563736237702e-04, 9.1606958049118977e-04,
755 3.2250721573096343e-03, 1.6376154647606311e-03, 2.8505580568873712e-04,
756 5.3377971995623207e-04, 1.1777891482397749e-03},
757 {8.3429471034916194e-04, 1.0659803319010067e-03, 1.1268322842671913e-03,
758 7.3570523495442291e-04, 1.4262451141854431e-04, 1.0428112436817220e-03,
759 1.0609424122148584e-03, 6.6116372972342219e-04, 1.1500733945516558e-02,
760 3.8185691425617459e-04, 6.9827301155994540e-04, 9.0371184948679912e-04,
761 2.4699125636645672e-04, 5.9147458541551113e-04, 3.8444740537595942e-04,
762 8.5932297611334600e-04, 6.0598617290751988e-04, 1.4705149603278306e-04,
763 1.4431522344877262e-03, 4.5696999458730438e-04},
764 {2.2806166994472367e-03, 8.7747376727426759e-04, 6.2771773800865524e-04,
765 6.1360733950558593e-04, 1.0187249201952210e-03, 6.2154432511249121e-04,
766 8.6556272233095357e-04, 7.9279793619671047e-04, 3.8185691425617459e-04,
767 2.4545975084797667e-02, 1.0187721075530867e-02, 1.0015355309232945e-03,
768 2.3855654456497641e-03, 2.3760161494061206e-03, 6.6596344099825570e-04,
769 1.2754928334842836e-03, 2.1146482135048364e-03, 2.8885067061466341e-04,
770 1.1275668044226116e-03, 1.2010991497586472e-02},
771 {3.1400426239163565e-03, 1.5563382766215293e-03, 9.0162895039764071e-04,
772 8.9746213145538078e-04, 1.2204913461061227e-03, 1.2200582014470405e-03,
773 1.2693446983220930e-03, 1.4084669216931525e-03, 6.9827301155994540e-04,
774 1.0187721075530867e-02, 4.7314665506091480e-02, 1.6493087064879096e-03,
775 4.9150964217477052e-03, 4.7389371254676835e-03, 1.0204208998598171e-03,
776 1.9093387711173759e-03, 2.5387072113370619e-03, 5.5567682513643440e-04,
777 1.7591338828767365e-03, 8.0719383241327648e-03},
778 {2.5717145234657262e-03, 5.6726070720652388e-03, 1.9751605656395136e-03,
779 1.7935339070485811e-03, 3.4081454298601579e-04, 2.6612615004061048e-03,
780 3.1728712431242272e-03, 1.8091800840455807e-03, 9.0371184948679912e-04,
781 1.0015355309232945e-03, 1.6493087064879096e-03, 2.1110006225715187e-02,
782 6.5644301788968489e-04, 6.8011754565553524e-04, 1.1433484348853926e-03,
783 2.2696044144588988e-03, 1.8742456882945837e-03, 1.4351856033992664e-04,
784 6.5878172544710722e-04, 1.2879210940900179e-03},
785 {9.7190459199705012e-04, 5.5601248568691477e-04, 3.4437514139917542e-04,
786 2.8515554540729039e-04, 3.0855994042178013e-04, 6.9614541817054399e-04,
787 4.8675933771578960e-04, 4.5905141534639837e-04, 2.4699125636645672e-04,
788 2.3855654456497641e-03, 4.9150964217477052e-03, 6.5644301788968489e-04,
789 6.7525741637165784e-03, 9.2071349348378116e-04, 2.9821836819244002e-04,
790 6.2250823423415716e-04, 8.5497291624530018e-04, 1.8480270544289832e-04,
791 4.1789997362558619e-04, 2.0390401916086623e-03},
792 {1.1707482997247202e-03, 6.0014287440373390e-04, 4.5695294787233016e-04,
793 4.9706948686116547e-04, 5.4061743869703049e-04, 4.3847028249800182e-04,
794 5.2592632830518644e-04, 7.2640563736237702e-04, 5.9147458541551113e-04,
795 2.3760161494061206e-03, 4.7389371254676835e-03, 6.8011754565553524e-04,
796 9.2071349348378116e-04, 2.2759929778368840e-02, 3.8203945097730409e-04,
797 9.0070409285055049e-04, 9.3733303528124379e-04, 7.0215975437974915e-04,
798 4.5967694652672827e-03, 1.9728777259904423e-03},
799 {1.9972723941546994e-03, 7.7860213318230740e-04, 5.6210182826678802e-04,
800 8.3650620447870902e-04, 2.6341296370767072e-04, 6.3169039064483155e-04,
801 1.1283633992741310e-03, 9.1606958049118977e-04, 3.8444740537595942e-04,
802 6.6596344099825570e-04, 1.0204208998598171e-03, 1.1433484348853926e-03,
803 2.9821836819244002e-04, 3.8203945097730409e-04, 2.4044365492630580e-02,
804 1.3333728667143045e-03, 9.5861529112551574e-04, 1.0367126137135345e-04,
805 2.9369391163915916e-04, 9.1754627765824664e-04},
806 {6.1234827650497045e-03, 1.7926007027022699e-03, 2.6415583911000790e-03,
807 2.1902661040309438e-03, 9.0081780182465609e-04, 1.5347331351459369e-03,
808 2.4358395159902540e-03, 3.2250721573096343e-03, 8.5932297611334600e-04,
809 1.2754928334842836e-03, 1.9093387711173759e-03, 2.2696044144588988e-03,
810 6.2250823423415716e-04, 9.0070409285055049e-04, 1.3333728667143045e-03,
811 2.0222291957641345e-02, 4.8820444720790194e-03, 2.0564914018856946e-04,
812 8.5252084753556067e-04, 1.9182160488867347e-03},
813 {3.4990592936902896e-03, 1.3337993839260983e-03, 1.8096241176560255e-03,
814 1.4770487412630099e-03, 8.3760722742725604e-04, 1.1633090191045159e-03,
815 1.7460695145653721e-03, 1.6376154647606311e-03, 6.0598617290751988e-04,
816 2.1146482135048364e-03, 2.5387072113370619e-03, 1.8742456882945837e-03,
817 8.5497291624530018e-04, 9.3733303528124379e-04, 9.5861529112551574e-04,
818 4.8820444720790194e-03, 1.9324325014986026e-02, 1.8008131088087498e-04,
819 7.7364223266285920e-04, 3.0481291734621883e-03},
820 {3.1628263576966828e-04, 1.8822355540425045e-04, 1.1361193219385239e-04,
821 9.6154148977656466e-05, 1.1402385673074935e-04, 1.8118969468635933e-04,
822 1.7186658965667723e-04, 2.8505580568873712e-04, 1.4705149603278306e-04,
823 2.8885067061466341e-04, 5.5567682513643440e-04, 1.4351856033992664e-04,
824 1.8480270544289832e-04, 7.0215975437974915e-04, 1.0367126137135345e-04,
825 2.0564914018856946e-04, 1.8008131088087498e-04, 1.0080756092360078e-02,
826 9.7237191290610822e-04, 3.3849359263814259e-04},
827 {9.5781456962094815e-04, 6.3568077704304765e-04, 5.3166878528705414e-04,
828 4.1238640135342840e-04, 3.0875531409262481e-04, 4.8090269093961543e-04,
829 5.3762929629223334e-04, 5.3377971995623207e-04, 1.4431522344877262e-03,
830 1.1275668044226116e-03, 1.7591338828767365e-03, 6.5878172544710722e-04,
831 4.1789997362558619e-04, 4.5967694652672827e-03, 2.9369391163915916e-04,
832 8.5252084753556067e-04, 7.7364223266285920e-04, 9.7237191290610822e-04,
833 1.7299655473877330e-02, 1.0599282277832859e-03},
834 {4.2309560726043610e-03, 1.1439035919666126e-03, 7.8744578895086331e-04,
835 8.1983005205147035e-04, 1.2790175783090351e-03, 8.6038475380201306e-04,
836 1.3537458445130380e-03, 1.1777891482397749e-03, 4.5696999458730438e-04,
837 1.2010991497586472e-02, 8.0719383241327648e-03, 1.2879210940900179e-03,
838 2.0390401916086623e-03, 1.9728777259904423e-03, 9.1754627765824664e-04,
839 1.9182160488867347e-03, 3.0481291734621883e-03, 3.3849359263814259e-04,
840 1.0599282277832859e-03, 2.8697002670368957e-02}};
841
842 /** Background frequencies for BLOSUM90 */
843 static const double
844 BLOSUM90_bg[COMPO_NUM_TRUE_AA] =
845 {7.2552570322773416e-02, 4.9204908670176822e-02, 4.1453803904895913e-02,
846 5.4114599751069477e-02, 2.9605031943377283e-02, 3.3576453482421185e-02,
847 5.5175092196696710e-02, 7.9252675455356913e-02, 2.4890326300616415e-02,
848 6.6060229109246138e-02, 9.6973050911305106e-02, 5.3375686232455331e-02,
849 2.4402790064347962e-02, 4.6515405498268582e-02, 3.8659721995628657e-02,
850 5.8095437228457614e-02, 5.1596863495160232e-02, 1.5369491541399532e-02,
851 3.5653734247116535e-02, 7.3472127649230390e-02};
852
853
854 /** Joint probabilities for PAM30 */
855 static const double
856 PAM30_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
857 {{5.9127839295455724e-02, 3.2440614389978224e-04, 1.0035946285397422e-03,
858 1.2937791530855702e-03, 3.1489290812535621e-04, 7.8441998276182750e-04,
859 1.9549522618591804e-03, 4.4450248999927649e-03, 2.4408739253648561e-04,
860 6.3834521530456922e-04, 8.5734186469652062e-04, 6.6918201622206063e-04,
861 2.4336822178217660e-04, 1.9674172887918488e-04, 2.6202120968515422e-03,
862 5.3063352404797842e-03, 4.2185799566371992e-03, 8.9313082115936708e-06,
863 1.8225253115472477e-04, 2.6924708725231086e-03},
864 {3.2440614389978224e-04, 3.1662308120430839e-02, 2.3762837035855522e-04,
865 5.6563724512424312e-05, 9.3129983865266353e-05, 9.1528180957759745e-04,
866 8.6839478291009283e-05, 1.4407449709189928e-04, 8.0713273132343639e-04,
867 2.3918939892306258e-04, 1.8565923197220291e-04, 3.6581384858227193e-03,
868 1.4663859770241663e-04, 6.8103183598496806e-05, 5.5932452083258294e-04,
869 1.0092107276753980e-03, 2.5480695878483489e-04, 2.2193510725567831e-04,
870 3.6904551277914591e-05, 1.9661468480294445e-04},
871 {1.0035946285397422e-03, 2.3762837035855522e-04, 2.3942402666531522e-02,
872 3.3284186062777833e-03, 3.2538350231327974e-05, 4.6226978079510854e-04,
873 9.2846484862398504e-04, 1.2584257731785510e-03, 1.5206567357122051e-03,
874 2.6711601073772237e-04, 3.0916547891024103e-04, 2.2688803763503840e-03,
875 2.7842591589795833e-05, 8.1379367658642105e-05, 2.9181042514696590e-04,
876 2.7347990528488269e-03, 1.2577236167229159e-03, 2.6993374401853017e-05,
877 2.6944461441064744e-04, 1.8273086910009501e-04},
878 {1.2937791530855702e-03, 5.6563724512424312e-05, 3.3284186062777833e-03,
879 3.1273803507946972e-02, 1.2103234943893133e-05, 7.6617484041782485e-04,
880 5.4382363415210683e-03, 1.3553903446762449e-03, 4.2748415829840124e-04,
881 1.3808202761146380e-04, 5.5405232219940619e-05, 8.2915092340941237e-04,
882 1.5837617592492976e-05, 1.2183210262808245e-05, 1.6175221090296296e-04,
883 9.3274720682462713e-04, 5.4799551604074552e-04, 2.6698310744553494e-06,
884 2.7630471952142814e-05, 1.9652464806266956e-04},
885 {3.1489290812535621e-04, 9.3129983865266353e-05, 3.2538350231327974e-05,
886 1.2103234943893133e-05, 3.0911985925451389e-02, 1.0422909419121936e-05,
887 1.3045150483146400e-05, 1.2331325932473484e-04, 8.7403624792468633e-05,
888 1.4700821602711548e-04, 1.7204998362221924e-05, 2.0967486284459295e-05,
889 4.6716406093025683e-06, 1.5450615839479970e-05, 1.0731935426699396e-04,
890 8.8294519055560439e-04, 1.3276608390145865e-04, 1.6423510327768317e-06,
891 2.5794057350472414e-04, 2.8675549934525132e-04},
892 {7.8441998276182750e-04, 9.1528180957759745e-04, 4.6226978079510854e-04,
893 7.6617484041782485e-04, 1.0422909419121936e-05, 2.6544636091699370e-02,
894 2.8557369473315988e-03, 3.2014451569115343e-04, 1.7486269599932410e-03,
895 9.9252658549817602e-05, 6.0406050527793496e-04, 1.1831024043470412e-03,
896 1.5335846864532110e-04, 1.7100059826303178e-05, 7.2911060660364247e-04,
897 4.4648205428150529e-04, 3.3667241069963721e-04, 4.8464660724673283e-06,
898 1.9368757924195069e-05, 2.5436874878957899e-04},
899 {1.9549522618591804e-03, 8.6839478291009283e-05, 9.2846484862398504e-04,
900 5.4382363415210683e-03, 1.3045150483146400e-05, 2.8557369473315988e-03,
901 3.3517661571345295e-02, 1.0164440084156755e-03, 3.0223151556800276e-04,
902 2.7356364677374762e-04, 1.8090379077740425e-04, 9.0138008178105558e-04,
903 6.7559973423236150e-05, 1.5496057150416647e-05, 3.8539043828203593e-04,
904 7.7702860107301409e-04, 3.7793602875380548e-04, 1.6817714350602577e-06,
905 8.3785905046764608e-05, 3.5213850363434608e-04},
906 {4.4450248999927649e-03, 1.4407449709189928e-04, 1.2584257731785510e-03,
907 1.3553903446762449e-03, 1.2331325932473484e-04, 3.2014451569115343e-04,
908 1.0164440084156755e-03, 7.3132026674414694e-02, 1.4265572852210342e-04,
909 7.8900361203388875e-05, 2.1034403031175677e-04, 6.1289535748612200e-04,
910 7.4245325157996467e-05, 1.5674229370359372e-04, 5.4766647831609131e-04,
911 3.4088067901566015e-03, 7.0070498686195871e-04, 5.2853781924046885e-06,
912 2.4544028062357452e-05, 8.5444888317695144e-04},
913 {2.4408739253648561e-04, 8.0713273132343639e-04, 1.5206567357122051e-03,
914 4.2748415829840124e-04, 8.7403624792468633e-05, 1.7486269599932410e-03,
915 3.0223151556800276e-04, 1.4265572852210342e-04, 2.5912762590464825e-02,
916 5.4172593088878169e-05, 3.5367937307928028e-04, 3.2368239575447064e-04,
917 1.3814951744043517e-05, 1.7593656715401314e-04, 4.2250645207888871e-04,
918 3.0759142376355817e-04, 1.6958020182452686e-04, 2.8647046074837808e-05,
919 3.2560382462402542e-04, 2.5015804822114957e-04},
920 {6.3834521530456922e-04, 2.3918939892306258e-04, 2.6711601073772237e-04,
921 1.3808202761146380e-04, 1.4700821602711548e-04, 9.9252658549817602e-05,
922 2.7356364677374762e-04, 7.8900361203388875e-05, 5.4172593088878169e-05,
923 2.5353285377410485e-02, 2.0257509751816058e-03, 3.7763773851518320e-04,
924 4.3126365297883206e-04, 6.9390890433520820e-04, 9.9551479665834663e-05,
925 2.4863350821043576e-04, 9.5951641417652196e-04, 3.5757593419236457e-06,
926 1.3084289995157492e-04, 4.6260165509845463e-03},
927 {8.5734186469652062e-04, 1.8565923197220291e-04, 3.0916547891024103e-04,
928 5.5405232219940619e-05, 1.7204998362221924e-05, 6.0406050527793496e-04,
929 1.8090379077740425e-04, 2.1034403031175677e-04, 3.5367937307928028e-04,
930 2.0257509751816058e-03, 7.3000355069562095e-02, 4.1727413572248076e-04,
931 1.5642375920382058e-03, 1.4111427667651418e-03, 3.9148184818805121e-04,
932 3.4625426602777944e-04, 5.1411236346458541e-04, 1.1411927900827321e-04,
933 2.4268846460818286e-04, 2.5562624925597006e-03},
934 {6.6918201622206063e-04, 3.6581384858227193e-03, 2.2688803763503840e-03,
935 8.2915092340941237e-04, 2.0967486284459295e-05, 1.1831024043470412e-03,
936 9.0138008178105558e-04, 6.1289535748612200e-04, 3.2368239575447064e-04,
937 3.7763773851518320e-04, 4.1727413572248076e-04, 6.4693883189538823e-02,
938 6.6794275671927127e-04, 2.7382721623874425e-05, 4.3433200079450959e-04,
939 1.4551172602609017e-03, 1.5845617070211647e-03, 1.4791603367426559e-05,
940 1.0031590199504370e-04, 2.4096483294034894e-04},
941 {2.4336822178217660e-04, 1.4663859770241663e-04, 2.7842591589795833e-05,
942 1.5837617592492976e-05, 4.6716406093025683e-06, 1.5335846864532110e-04,
943 6.7559973423236150e-05, 7.4245325157996467e-05, 1.3814951744043517e-05,
944 4.3126365297883206e-04, 1.5642375920382058e-03, 6.6794275671927127e-04,
945 1.0141188024147338e-02, 1.4660178199119104e-04, 4.8450925637158114e-05,
946 1.6515644650970699e-04, 2.2685456319283340e-04, 2.0008298266352844e-06,
947 9.3883281308262965e-06, 6.0233931141128079e-04},
948 {1.9674172887918488e-04, 6.8103183598496806e-05, 8.1379367658642105e-05,
949 1.2183210262808245e-05, 1.5450615839479970e-05, 1.7100059826303178e-05,
950 1.5496057150416647e-05, 1.5674229370359372e-04, 1.7593656715401314e-04,
951 6.9390890433520820e-04, 1.4111427667651418e-03, 2.7382721623874425e-05,
952 1.4660178199119104e-04, 3.3860977281888867e-02, 7.1900609504981099e-05,
953 3.1517744951616293e-04, 1.1969179294550922e-04, 8.8987284001973936e-05,
954 2.1252281905202656e-03, 1.7152669910871525e-04},
955 {2.6202120968515422e-03, 5.5932452083258294e-04, 2.9181042514696590e-04,
956 1.6175221090296296e-04, 1.0731935426699396e-04, 7.2911060660364247e-04,
957 3.8539043828203593e-04, 5.4766647831609131e-04, 4.2250645207888871e-04,
958 9.9551479665834663e-05, 3.9148184818805121e-04, 4.3433200079450959e-04,
959 4.8450925637158114e-05, 7.1900609504981099e-05, 4.0604206849577246e-02,
960 2.0119339905674016e-03, 7.1262984113373655e-04, 4.7982296290983556e-06,
961 1.4865662060036108e-05, 4.6067081670332334e-04},
962 {5.3063352404797842e-03, 1.0092107276753980e-03, 2.7347990528488269e-03,
963 9.3274720682462713e-04, 8.8294519055560439e-04, 4.4648205428150529e-04,
964 7.7702860107301409e-04, 3.4088067901566015e-03, 3.0759142376355817e-04,
965 2.4863350821043576e-04, 3.4625426602777944e-04, 1.4551172602609017e-03,
966 1.6515644650970699e-04, 3.1517744951616293e-04, 2.0119339905674016e-03,
967 4.3704313725631293e-02, 4.6622796190467931e-03, 1.3084508692320411e-04,
968 2.0094952100191171e-04, 5.3046884366373238e-04},
969 {4.2185799566371992e-03, 2.5480695878483489e-04, 1.2577236167229159e-03,
970 5.4799551604074552e-04, 1.3276608390145865e-04, 3.3667241069963721e-04,
971 3.7793602875380548e-04, 7.0070498686195871e-04, 1.6958020182452686e-04,
972 9.5951641417652196e-04, 5.1411236346458541e-04, 1.5845617070211647e-03,
973 2.2685456319283340e-04, 1.1969179294550922e-04, 7.1262984113373655e-04,
974 4.6622796190467931e-03, 4.0080501117597984e-02, 7.7221567079978049e-06,
975 1.9614260534399206e-04, 1.4808862501356529e-03},
976 {8.9313082115936708e-06, 2.2193510725567831e-04, 2.6993374401853017e-05,
977 2.6698310744553494e-06, 1.6423510327768317e-06, 4.8464660724673283e-06,
978 1.6817714350602577e-06, 5.2853781924046885e-06, 2.8647046074837808e-05,
979 3.5757593419236457e-06, 1.1411927900827321e-04, 1.4791603367426559e-05,
980 2.0008298266352844e-06, 8.8987284001973936e-05, 4.7982296290983556e-06,
981 1.3084508692320411e-04, 7.7221567079978049e-06, 9.7663430469613309e-03,
982 5.4428834502404551e-05, 3.4341494426087616e-06},
983 {1.8225253115472477e-04, 3.6904551277914591e-05, 2.6944461441064744e-04,
984 2.7630471952142814e-05, 2.5794057350472414e-04, 1.9368757924195069e-05,
985 8.3785905046764608e-05, 2.4544028062357452e-05, 3.2560382462402542e-04,
986 1.3084289995157492e-04, 2.4268846460818286e-04, 1.0031590199504370e-04,
987 9.3883281308262965e-06, 2.1252281905202656e-03, 1.4865662060036108e-05,
988 2.0094952100191171e-04, 1.9614260534399206e-04, 5.4428834502404551e-05,
989 2.5458081876085920e-02, 1.5581070490829142e-04},
990 {2.6924708725231086e-03, 1.9661468480294445e-04, 1.8273086910009501e-04,
991 1.9652464806266956e-04, 2.8675549934525132e-04, 2.5436874878957899e-04,
992 3.5213850363434608e-04, 8.5444888317695144e-04, 2.5015804822114957e-04,
993 4.6260165509845463e-03, 2.5562624925597006e-03, 2.4096483294034894e-04,
994 6.0233931141128079e-04, 1.7152669910871525e-04, 4.6067081670332334e-04,
995 5.3046884366373238e-04, 1.4808862501356529e-03, 3.4341494426087616e-06,
996 1.5581070490829142e-04, 4.8623010168479329e-02}};
997
998
999 /** Background frequencies for PAM30 */
1000 static const double
1001 PAM30_bg[COMPO_NUM_TRUE_AA] =
1002 {8.7126757718998679e-02, 4.0903890307999048e-02, 4.0432285538126674e-02,
1003 4.6871932807633972e-02, 3.3473507356366124e-02, 3.8255436978704142e-02,
1004 4.9530476921569762e-02, 8.8612083613937145e-02, 3.3618414314618796e-02,
1005 3.6885613388971901e-02, 8.5357443758733623e-02, 8.0481583375956817e-02,
1006 1.4752761600830055e-02, 3.9771658566274730e-02, 5.0679914836743105e-02,
1007 6.9577076005018168e-02, 5.8541664190993777e-02, 1.0493678893463984e-02,
1008 2.9916218247065893e-02, 6.4717601577993583e-02};
1009
1010
1011 /** Joint probabilities for PAM70 */
1012 static const double
1013 PAM70_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
1014 {{3.7194198649883180e-02, 8.0875430987034625e-04, 2.0736464600905839e-03,
1015 2.5255595007111849e-03, 7.0597624705127243e-04, 1.5518877282373696e-03,
1016 3.3281196505185301e-03, 7.8361919930011979e-03, 6.4846822847107975e-04,
1017 1.3965782283733507e-03, 1.8572709391302328e-03, 1.7482550126124556e-03,
1018 4.8307675706277730e-04, 4.6722180304288895e-04, 4.5500317017840861e-03,
1019 8.1815610080975230e-03, 6.7687959354540955e-03, 3.9553416320695907e-05,
1020 4.0198038575772689e-04, 4.5596297635283793e-03},
1021 {8.0875430987034625e-04, 2.2852256980208891e-02, 6.3934638630944640e-04,
1022 2.6565526087426409e-04, 2.0716330531302742e-04, 1.6017418992100730e-03,
1023 3.6247967443696756e-04, 4.4251315906877157e-04, 1.4545996303067922e-03,
1024 4.5486189188160571e-04, 4.7958376254792433e-04, 6.3755221317218641e-03,
1025 2.9453018991274540e-04, 1.6164674287424461e-04, 1.0920151094434257e-03,
1026 1.7360744550429996e-03, 6.7924379689915479e-04, 4.2527485122100103e-04,
1027 1.0517171198521535e-04, 4.6545505887026243e-04},
1028 {2.0736464600905839e-03, 6.3934638630944640e-04, 1.2675260298758369e-02,
1029 4.5473263538386658e-03, 1.3072655726453243e-04, 9.8476934026016437e-04,
1030 1.9319282404800279e-03, 2.3638339620501124e-03, 2.2789366146196482e-03,
1031 4.8031915042001503e-04, 6.3784180585582998e-04, 3.6406443267426908e-03,
1032 1.0839896462648394e-04, 2.1124510348244946e-04, 7.0593648786013011e-04,
1033 3.8434299995336323e-03, 2.1278266383167998e-03, 5.8506014024617153e-05,
1034 4.7128194649955374e-04, 5.2108088709319821e-04},
1035 {2.5255595007111849e-03, 2.6565526087426409e-04, 4.5473263538386658e-03,
1036 1.9552340613266873e-02, 6.2308454328698375e-05, 1.6541837501367655e-03,
1037 7.7926300406749079e-03, 2.6556442405114718e-03, 9.4505604487949357e-04,
1038 3.3373212803700417e-04, 2.5428746885488489e-04, 1.8252265778963348e-03,
1039 7.1571301890192352e-05, 6.2699722593189186e-05, 5.0522979322628484e-04,
1040 1.9557928207999562e-03, 1.2131330526185470e-03, 1.2993511235541354e-05,
1041 1.1201266335522796e-04, 5.2454950790431021e-04},
1042 {7.0597624705127243e-04, 2.0716330531302742e-04, 1.3072655726453243e-04,
1043 6.2308454328698375e-05, 2.7825141122194648e-02, 5.0435716826920468e-05,
1044 6.4183020849751415e-05, 3.4312217142660280e-04, 1.8549298854202793e-04,
1045 3.0428065563695795e-04, 8.6272008280351356e-05, 1.0319775490385661e-04,
1046 2.1845897888507003e-05, 7.3005996818964865e-05, 2.6943290953722234e-04,
1047 1.5492275564647287e-03, 3.6530353715738469e-04, 7.8068100250333932e-06,
1048 5.2405357404561922e-04, 5.9453107180990322e-04},
1049 {1.5518877282373696e-03, 1.6017418992100730e-03, 9.8476934026016437e-04,
1050 1.6541837501367655e-03, 5.0435716826920468e-05, 1.6787102517888230e-02,
1051 4.2787747314313521e-03, 8.0400665120515828e-04, 2.8143703113243106e-03,
1052 2.6711588850824816e-04, 1.1454480615912710e-03, 2.2219191879465955e-03,
1053 2.7431052994878819e-04, 7.9884925062964878e-05, 1.3266385181226064e-03,
1054 9.9419711566964102e-04, 7.3752923373982926e-04, 2.2068032648929309e-05,
1055 8.4534917138966498e-05, 5.7451792180619309e-04},
1056 {3.3281196505185301e-03, 3.6247967443696756e-04, 1.9319282404800279e-03,
1057 7.7926300406749079e-03, 6.4183020849751415e-05, 4.2787747314313521e-03,
1058 2.1230224844830631e-02, 2.1586929726556546e-03, 7.9951624929977820e-04,
1059 5.1817013748561565e-04, 4.9671333905053393e-04, 1.8583368487577027e-03,
1060 1.5522247207982098e-04, 7.5329038569461125e-05, 8.7224608153784204e-04,
1061 1.6494397215528771e-03, 9.8039692363547162e-04, 9.8627013698496747e-06,
1062 1.7654014099528279e-04, 7.9167009135776051e-04},
1063 {7.8361919930011979e-03, 4.4251315906877157e-04, 2.3638339620501124e-03,
1064 2.6556442405114718e-03, 3.4312217142660280e-04, 8.0400665120515828e-04,
1065 2.1586929726556546e-03, 5.7388208411163856e-02, 4.3236801169914066e-04,
1066 3.4974476371122900e-04, 6.1249836569746629e-04, 1.4966553087392409e-03,
1067 1.8860818518822553e-04, 3.5290430601106194e-04, 1.3849768155457195e-03,
1068 5.9445746107512484e-03, 1.9215787027991949e-03, 2.5013133615378750e-05,
1069 1.1604677012097751e-04, 1.7949010789751496e-03},
1070 {6.4846822847107975e-04, 1.4545996303067922e-03, 2.2789366146196482e-03,
1071 9.4505604487949357e-04, 1.8549298854202793e-04, 2.8143703113243106e-03,
1072 7.9951624929977820e-04, 4.3236801169914066e-04, 1.8560540662079211e-02,
1073 1.7329804084653826e-04, 7.4343007070569922e-04, 9.0662732602859596e-04,
1074 6.0703685726216408e-05, 3.6980044394832400e-04, 8.3973781481707591e-04,
1075 7.6422387310404486e-04, 4.5318311225648759e-04, 6.5639640674803356e-05,
1076 6.1489346188958391e-04, 5.0752810340000398e-04},
1077 {1.3965782283733507e-03, 4.5486189188160571e-04, 4.8031915042001503e-04,
1078 3.3373212803700417e-04, 3.0428065563695795e-04, 2.6711588850824816e-04,
1079 5.1817013748561565e-04, 3.4974476371122900e-04, 1.7329804084653826e-04,
1080 1.5987197880539435e-02, 3.7542109440494597e-03, 7.9047697379200301e-04,
1081 7.4501029384275877e-04, 1.2410414311848890e-03, 2.9830750222722838e-04,
1082 6.5095629385579479e-04, 1.6435015047341363e-03, 1.6913577722248789e-05,
1083 3.0951431979519975e-04, 7.1703817823281675e-03},
1084 {1.8572709391302328e-03, 4.7958376254792433e-04, 6.3784180585582998e-04,
1085 2.5428746885488489e-04, 8.6272008280351356e-05, 1.1454480615912710e-03,
1086 4.9671333905053393e-04, 6.1249836569746629e-04, 7.4343007070569922e-04,
1087 3.7542109440494597e-03, 5.9951531802758418e-02, 1.0493781626637116e-03,
1088 2.6814583560349986e-03, 2.7966586120273659e-03, 8.5989610618916832e-04,
1089 8.8237114340186434e-04, 1.2009021086866177e-03, 2.3930650357563717e-04,
1090 6.1025491368789397e-04, 5.0181292839441248e-03},
1091 {1.7482550126124556e-03, 6.3755221317218641e-03, 3.6406443267426908e-03,
1092 1.8252265778963348e-03, 1.0319775490385661e-04, 2.2219191879465955e-03,
1093 1.8583368487577027e-03, 1.4966553087392409e-03, 9.0662732602859596e-04,
1094 7.9047697379200301e-04, 1.0493781626637116e-03, 4.9293839020253936e-02,
1095 1.1255105312350092e-03, 1.3216275164777875e-04, 1.0446567434093407e-03,
1096 2.9144037757683188e-03, 2.9220724161787321e-03, 6.6880694143482477e-05,
1097 2.4262835127628017e-04, 7.2318948023856685e-04},
1098 {4.8307675706277730e-04, 2.9453018991274540e-04, 1.0839896462648394e-04,
1099 7.1571301890192352e-05, 2.1845897888507003e-05, 2.7431052994878819e-04,
1100 1.5522247207982098e-04, 1.8860818518822553e-04, 6.0703685726216408e-05,
1101 7.4501029384275877e-04, 2.6814583560349986e-03, 1.1255105312350092e-03,
1102 6.2216058278953433e-03, 2.9832445346669831e-04, 1.3153451000560772e-04,
1103 3.2741424213960572e-04, 4.2984024762048522e-04, 9.2547509155780498e-06,
1104 4.2944764664016277e-05, 1.0815956386861806e-03},
1105 {4.6722180304288895e-04, 1.6164674287424461e-04, 2.1124510348244946e-04,
1106 6.2699722593189186e-05, 7.3005996818964865e-05, 7.9884925062964878e-05,
1107 7.5329038569461125e-05, 3.5290430601106194e-04, 3.6980044394832400e-04,
1108 1.2410414311848890e-03, 2.7966586120273659e-03, 1.3216275164777875e-04,
1109 2.9832445346669831e-04, 2.7609457395367236e-02, 1.7973871152134819e-04,
1110 5.9661742408822192e-04, 3.2037468566685034e-04, 1.8874366992597410e-04,
1111 4.0197936157261114e-03, 5.3500773324884835e-04},
1112 {4.5500317017840861e-03, 1.0920151094434257e-03, 7.0593648786013011e-04,
1113 5.0522979322628484e-04, 2.6943290953722234e-04, 1.3266385181226064e-03,
1114 8.7224608153784204e-04, 1.3849768155457195e-03, 8.3973781481707591e-04,
1115 2.9830750222722838e-04, 8.5989610618916832e-04, 1.0446567434093407e-03,
1116 1.3153451000560772e-04, 1.7973871152134819e-04, 3.0491164657684509e-02,
1117 3.4531398828496866e-03, 1.5743611594360388e-03, 2.2239711690711994e-05,
1118 7.0790644298591358e-05, 1.0078399755563739e-03},
1119 {8.1815610080975230e-03, 1.7360744550429996e-03, 3.8434299995336323e-03,
1120 1.9557928207999562e-03, 1.5492275564647287e-03, 9.9419711566964102e-04,
1121 1.6494397215528771e-03, 5.9445746107512484e-03, 7.6422387310404486e-04,
1122 6.5095629385579479e-04, 8.8237114340186434e-04, 2.9144037757683188e-03,
1123 3.2741424213960572e-04, 5.9661742408822192e-04, 3.4531398828496866e-03,
1124 2.5194623995400022e-02, 6.9036292775662960e-03, 2.3646234303355702e-04,
1125 4.3310777955182051e-04, 1.3658286863463751e-03},
1126 {6.7687959354540955e-03, 6.7924379689915479e-04, 2.1278266383167998e-03,
1127 1.2131330526185470e-03, 3.6530353715738469e-04, 7.3752923373982926e-04,
1128 9.8039692363547162e-04, 1.9215787027991949e-03, 4.5318311225648759e-04,
1129 1.6435015047341363e-03, 1.2009021086866177e-03, 2.9220724161787321e-03,
1130 4.2984024762048522e-04, 3.2037468566685034e-04, 1.5743611594360388e-03,
1131 6.9036292775662960e-03, 2.5145073963504398e-02, 3.3504725726214485e-05,
1132 3.9901555652894171e-04, 2.7223976124681726e-03},
1133 {3.9553416320695907e-05, 4.2527485122100103e-04, 5.8506014024617153e-05,
1134 1.2993511235541354e-05, 7.8068100250333932e-06, 2.2068032648929309e-05,
1135 9.8627013698496747e-06, 2.5013133615378750e-05, 6.5639640674803356e-05,
1136 1.6913577722248789e-05, 2.3930650357563717e-04, 6.6880694143482477e-05,
1137 9.2547509155780498e-06, 1.8874366992597410e-04, 2.2239711690711994e-05,
1138 2.3646234303355702e-04, 3.3504725726214485e-05, 8.8772945001325369e-03,
1139 1.1825556331632613e-04, 1.8104742145890378e-05},
1140 {4.0198038575772689e-04, 1.0517171198521535e-04, 4.7128194649955374e-04,
1141 1.1201266335522796e-04, 5.2405357404561922e-04, 8.4534917138966498e-05,
1142 1.7654014099528279e-04, 1.1604677012097751e-04, 6.1489346188958391e-04,
1143 3.0951431979519975e-04, 6.1025491368789397e-04, 2.4262835127628017e-04,
1144 4.2944764664016277e-05, 4.0197936157261114e-03, 7.0790644298591358e-05,
1145 4.3310777955182051e-04, 3.9901555652894171e-04, 1.1825556331632613e-04,
1146 2.0713264962639342e-02, 3.5013220379328771e-04},
1147 {4.5596297635283793e-03, 4.6545505887026243e-04, 5.2108088709319821e-04,
1148 5.2454950790431021e-04, 5.9453107180990322e-04, 5.7451792180619309e-04,
1149 7.9167009135776051e-04, 1.7949010789751496e-03, 5.0752810340000398e-04,
1150 7.1703817823281675e-03, 5.0181292839441248e-03, 7.2318948023856685e-04,
1151 1.0815956386861806e-03, 5.3500773324884835e-04, 1.0078399755563739e-03,
1152 1.3658286863463751e-03, 2.7223976124681726e-03, 1.8104742145890378e-05,
1153 3.5013220379328771e-04, 3.4391130954492435e-02}};
1154
1155
1156 /** Background frequencies for PAM70 */
1157 static const double
1158 PAM70_bg[COMPO_NUM_TRUE_AA] =
1159 {8.7126757718998679e-02, 4.0903890307999048e-02, 4.0432285538126674e-02,
1160 4.6871932807633972e-02, 3.3473507356366124e-02, 3.8255436978704142e-02,
1161 4.9530476921569762e-02, 8.8612083613937145e-02, 3.3618414314618796e-02,
1162 3.6885613388971901e-02, 8.5357443758733623e-02, 8.0481583375956817e-02,
1163 1.4752761600830055e-02, 3.9771658566274730e-02, 5.0679914836743105e-02,
1164 6.9577076005018168e-02, 5.8541664190993777e-02, 1.0493678893463984e-02,
1165 2.9916218247065893e-02, 6.4717601577993583e-02};
1166
1167
1168 /** Joint probabilities for PAM250 */
1169 static const double
1170 PAM250_JOINT_PROBS[COMPO_NUM_TRUE_AA][COMPO_NUM_TRUE_AA] =
1171 {{1.1506395421657883e-02, 2.4975231508904631e-03, 3.6632346972757428e-03,
1172 4.3697565048539024e-03, 1.8276942838570587e-03, 3.0112866662942396e-03,
1173 4.6380059574065739e-03, 1.0339526813131699e-02, 2.1445971886243646e-03,
1174 2.8561290389349852e-03, 4.8067900424585462e-03, 5.3728656072800076e-03,
1175 9.9018955937298613e-04, 1.5464751871669552e-03, 5.7141459312891330e-03,
1176 7.8179771536648658e-03, 6.7187128037285646e-03, 2.4101326295153331e-04,
1177 1.1721100314806740e-03, 5.8923284166788933e-03},
1178 {2.4975231508904631e-03, 6.8223547287428144e-03, 1.6533152696263029e-03,
1179 1.4242726301819985e-03, 5.8944515652700497e-04, 2.0890675656647919e-03,
1180 1.5846263196146995e-03, 2.0115937172949889e-03, 1.9669335302920869e-03,
1181 9.4903575242628803e-04, 1.7492451507985533e-03, 7.1821276038123629e-03,
1182 5.4579896329619748e-04, 5.8361963932467844e-04, 1.9905178391619333e-03,
1183 2.6418797202180837e-03, 1.9640564224658449e-03, 7.0871113466232773e-04,
1184 4.6349536482262227e-04, 1.4862706481749135e-03},
1185 {3.6632346972757428e-03, 1.6533152696263029e-03, 2.5955847457262279e-03,
1186 3.0517594529028400e-03, 5.8568302165395883e-04, 1.8510873859350727e-03,
1187 2.7895276558308215e-03, 3.8931580947872417e-03, 1.9571964875229838e-03,
1188 9.8420613349048088e-04, 1.7794215836961103e-03, 4.0932232786158613e-03,
1189 3.9994286569269551e-04, 7.1880113475369782e-04, 1.8301977419577379e-03,
1190 3.2997070393949880e-03, 2.6196442519984238e-03, 1.6728058239964415e-04,
1191 7.5085733385690172e-04, 1.7484567810093011e-03},
1192 {4.3697565048539024e-03, 1.4242726301819985e-03, 3.0517594529028400e-03,
1193 5.3450782499419218e-03, 4.8131585819575790e-04, 2.6206774727375219e-03,
1194 5.1008808895958635e-03, 4.7650879451660638e-03, 1.8490514559930820e-03,
1195 1.0026061088056078e-03, 1.5930790839216963e-03, 3.8473023950370976e-03,
1196 3.7899432160262535e-04, 5.1061942897298563e-04, 1.9136209919861855e-03,
1197 3.4857847560291560e-03, 2.6547044011729533e-03, 1.0462445958257217e-04,
1198 5.1745954208780515e-04, 1.8552568588661234e-03},
1199 {1.8276942838570587e-03, 5.8944515652700497e-04, 5.8568302165395883e-04,
1200 4.8131585819575790e-04, 1.7511424258914964e-02, 3.7076129096329572e-04,
1201 4.8903939170975950e-04, 1.3623489692838801e-03, 5.0846386896381476e-04,
1202 7.2550893644428554e-04, 7.0799236631215092e-04, 7.7075174636654406e-04,
1203 1.4785573890415589e-04, 4.9387975479971797e-04, 8.9473603104580409e-04,
1204 2.3049495795083078e-03, 1.1784720532548663e-03, 5.9299054281549242e-05,
1205 1.0798150304862418e-03, 1.3840709648926645e-03},
1206 {3.0112866662942396e-03, 2.0890675656647919e-03, 1.8510873859350727e-03,
1207 2.6206774727375219e-03, 3.7076129096329572e-04, 3.7185262078390084e-03,
1208 3.3568227763936856e-03, 2.5676676841601132e-03, 2.5232383252931120e-03,
1209 8.8236895610109610e-04, 2.1731391610102509e-03, 3.6449762674855470e-03,
1210 4.4907751867065491e-04, 5.2205033209354096e-04, 2.0463950617354261e-03,
1211 2.3688704455266710e-03, 1.8654198667353624e-03, 1.3455315022844615e-04,
1212 4.5154514263611947e-04, 1.6079057012005865e-03},
1213 {4.6380059574065739e-03, 1.5846263196146995e-03, 2.7895276558308215e-03,
1214 5.1008808895958635e-03, 4.8903939170975950e-04, 3.3568227763936856e-03,
1215 5.9222965859089486e-03, 4.5816393201343689e-03, 1.9402998565554576e-03,
1216 1.1442983475073972e-03, 1.9598706476253135e-03, 3.9374858628132975e-03,
1217 4.4836711718981544e-04, 5.6555863311724848e-04, 2.2081467402101113e-03,
1218 3.4413512797094705e-03, 2.6498050070285850e-03, 1.0428284199341159e-04,
1219 5.5113323096536227e-04, 2.1170384602596944e-03},
1220 {1.0339526813131699e-02, 2.0115937172949889e-03, 3.8931580947872417e-03,
1221 4.7650879451660638e-03, 1.3623489692838801e-03, 2.5676676841601132e-03,
1222 4.5816393201343689e-03, 2.3482233614097934e-02, 1.8337281555648979e-03,
1223 1.8208983421724295e-03, 2.9852908206479617e-03, 4.8388854328488646e-03,
1224 6.8680090301959161e-04, 1.1712470257125083e-03, 4.0151722887942186e-03,
1225 7.8821587248468251e-03, 5.1811218591430661e-03, 1.8631167134196649e-04,
1226 7.9425725644547004e-04, 4.2129549753424219e-03},
1227 {2.1445971886243646e-03, 1.9669335302920869e-03, 1.9571964875229838e-03,
1228 1.8490514559930820e-03, 5.0846386896381476e-04, 2.5232383252931120e-03,
1229 1.9402998565554576e-03, 1.8337281555648979e-03, 5.0577823911620960e-03,
1230 7.0758217809190201e-04, 1.7792986667457807e-03, 2.6790420483436923e-03,
1231 3.0226127635083285e-04, 8.8185158980207221e-04, 1.6125778990215547e-03,
1232 1.9419581808088138e-03, 1.4578210132932265e-03, 1.9201336290789017e-04,
1233 9.8449170102575230e-04, 1.2982251382555629e-03},
1234 {2.8561290389349852e-03, 9.4903575242628803e-04, 9.8420613349048088e-04,
1235 1.0026061088056078e-03, 7.2550893644428554e-04, 8.8236895610109610e-04,
1236 1.1442983475073972e-03, 1.8208983421724295e-03, 7.0758217809190201e-04,
1237 3.8506568985748504e-03, 5.5072715793686080e-03, 1.9022872797907308e-03,
1238 8.9779553718262028e-04, 1.8514043008626233e-03, 1.1725443795985299e-03,
1239 1.8542542117578613e-03, 2.1953086037143862e-03, 1.1715327832769289e-04,
1240 8.8263202943021396e-04, 5.5816714963892811e-03},
1241 {4.8067900424585462e-03, 1.7492451507985533e-03, 1.7794215836961103e-03,
1242 1.5930790839216963e-03, 7.0799236631215092e-04, 2.1731391610102509e-03,
1243 1.9598706476253135e-03, 2.9852908206479617e-03, 1.7792986667457807e-03,
1244 5.5072715793686080e-03, 2.8633158451940706e-02, 3.5641037178981254e-03,
1245 2.9437898388951153e-03, 5.1517088250987598e-03, 2.4053702086781481e-03,
1246 3.1126304674457994e-03, 3.3831513688247950e-03, 5.7942468517701131e-04,
1247 2.0809174228785228e-03, 8.4617896693113381e-03},
1248 {5.3728656072800076e-03, 7.1821276038123629e-03, 4.0932232786158613e-03,
1249 3.8473023950370976e-03, 7.7075174636654406e-04, 3.6449762674855470e-03,
1250 3.9374858628132975e-03, 4.8388854328488646e-03, 2.6790420483436923e-03,
1251 1.9022872797907308e-03, 3.5641037178981254e-03, 1.8953839887039359e-02,
1252 1.3056068288886324e-03, 9.5430576257042143e-04, 3.1427838314461703e-03,
1253 5.3849029169230475e-03, 4.6910200930370578e-03, 3.8031958293778897e-04,
1254 8.6636282903806235e-04, 2.9693904037835185e-03},
1255 {9.9018955937298613e-04, 5.4579896329619748e-04, 3.9994286569269551e-04,
1256 3.7899432160262535e-04, 1.4785573890415589e-04, 4.4907751867065491e-04,
1257 4.4836711718981544e-04, 6.8680090301959161e-04, 3.0226127635083285e-04,
1258 8.9779553718262028e-04, 2.9437898388951153e-03, 1.3056068288886324e-03,
1259 9.5839891336186689e-04, 6.1182400928263853e-04, 4.6431155948741784e-04,
1260 7.1706174187243107e-04, 7.5402578765302252e-04, 5.8044986217193111e-05,
1261 2.5054194683598869e-04, 1.4420721870535345e-03},
1262 {1.5464751871669552e-03, 5.8361963932467844e-04, 7.1880113475369782e-04,
1263 5.1061942897298563e-04, 4.9387975479971797e-04, 5.2205033209354096e-04,
1264 5.6555863311724848e-04, 1.1712470257125083e-03, 8.8185158980207221e-04,
1265 1.8514043008626233e-03, 5.1517088250987598e-03, 9.5430576257042143e-04,
1266 6.1182400928263853e-04, 1.2698002251905573e-02, 7.0713747400886877e-04,
1267 1.3236969321879562e-03, 1.1372790252379261e-03, 4.4935713151489045e-04,
1268 5.9204171542750639e-03, 1.9724229735869326e-03},
1269 {5.7141459312891330e-03, 1.9905178391619333e-03, 1.8301977419577379e-03,
1270 1.9136209919861855e-03, 8.9473603104580409e-04, 2.0463950617354261e-03,
1271 2.2081467402101113e-03, 4.0151722887942186e-03, 1.6125778990215547e-03,
1272 1.1725443795985299e-03, 2.4053702086781481e-03, 3.1427838314461703e-03,
1273 4.6431155948741784e-04, 7.0713747400886877e-04, 9.8665046135635783e-03,
1274 4.3847634418626652e-03, 3.1909511773661765e-03, 1.4643278579496693e-04,
1275 4.8653577087297381e-04, 2.4870690688613543e-03},
1276 {7.8179771536648658e-03, 2.6418797202180837e-03, 3.2997070393949880e-03,
1277 3.4857847560291560e-03, 2.3049495795083078e-03, 2.3688704455266710e-03,
1278 3.4413512797094705e-03, 7.8821587248468251e-03, 1.9419581808088138e-03,
1279 1.8542542117578613e-03, 3.1126304674457994e-03, 5.3849029169230475e-03,
1280 7.1706174187243107e-04, 1.3236969321879562e-03, 4.3847634418626652e-03,
1281 6.9740330873263399e-03, 5.5479545040527179e-03, 4.1290844979042010e-04,
1282 1.0821257035278605e-03, 3.5981076685639816e-03},
1283 {6.7187128037285646e-03, 1.9640564224658449e-03, 2.6196442519984238e-03,
1284 2.6547044011729533e-03, 1.1784720532548663e-03, 1.8654198667353624e-03,
1285 2.6498050070285850e-03, 5.1811218591430661e-03, 1.4578210132932265e-03,
1286 2.1953086037143862e-03, 3.3831513688247950e-03, 4.6910200930370578e-03,
1287 7.5402578765302252e-04, 1.1372790252379261e-03, 3.1909511773661765e-03,
1288 5.5479545040527179e-03, 6.1907639011039494e-03, 1.8788403040115726e-04,
1289 9.2861947637862599e-04, 4.0449485444032200e-03},
1290 {2.4101326295153331e-04, 7.0871113466232773e-04, 1.6728058239964415e-04,
1291 1.0462445958257217e-04, 5.9299054281549242e-05, 1.3455315022844615e-04,
1292 1.0428284199341159e-04, 1.8631167134196649e-04, 1.9201336290789017e-04,
1293 1.1715327832769289e-04, 5.7942468517701131e-04, 3.8031958293778897e-04,
1294 5.8044986217193111e-05, 4.4935713151489045e-04, 1.4643278579496693e-04,
1295 4.1290844979042010e-04, 1.8788403040115726e-04, 5.7988503825631863e-03,
1296 3.0440102514689768e-04, 1.6081303524350391e-04},
1297 {1.1721100314806740e-03, 4.6349536482262227e-04, 7.5085733385690172e-04,
1298 5.1745954208780515e-04, 1.0798150304862418e-03, 4.5154514263611947e-04,
1299 5.5113323096536227e-04, 7.9425725644547004e-04, 9.8449170102575230e-04,
1300 8.8263202943021396e-04, 2.0809174228785228e-03, 8.6636282903806235e-04,
1301 2.5054194683598869e-04, 5.9204171542750639e-03, 4.8653577087297381e-04,
1302 1.0821257035278605e-03, 9.2861947637862599e-04, 3.0440102514689768e-04,
1303 9.2529814445245183e-03, 1.0955188103504248e-03},
1304 {5.8923284166788933e-03, 1.4862706481749135e-03, 1.7484567810093011e-03,
1305 1.8552568588661234e-03, 1.3840709648926645e-03, 1.6079057012005865e-03,
1306 2.1170384602596944e-03, 4.2129549753424219e-03, 1.2982251382555629e-03,
1307 5.5816714963892811e-03, 8.4617896693113381e-03, 2.9693904037835185e-03,
1308 1.4420721870535345e-03, 1.9724229735869326e-03, 2.4870690688613543e-03,
1309 3.5981076685639816e-03, 4.0449485444032200e-03, 1.6081303524350391e-04,
1310 1.0955188103504248e-03, 1.1301289775766317e-02}};
1311
1312
1313 /** Background frequencies for PAM250 */
1314 static const double
1315 PAM250_bg[COMPO_NUM_TRUE_AA] =
1316 {8.7126757718998679e-02, 4.0903890307999048e-02, 4.0432285538126674e-02,
1317 4.6871932807633972e-02, 3.3473507356366124e-02, 3.8255436978704142e-02,
1318 4.9530476921569762e-02, 8.8612083613937145e-02, 3.3618414314618796e-02,
1319 3.6885613388971901e-02, 8.5357443758733623e-02, 8.0481583375956817e-02,
1320 1.4752761600830055e-02, 3.9771658566274730e-02, 5.0679914836743105e-02,
1321 6.9577076005018168e-02, 5.8541664190993777e-02, 1.0493678893463984e-02,
1322 2.9916218247065893e-02, 6.4717601577993583e-02};
1323
1324
1325 /** The structure used to store frequency data; used only in
1326 matrix_frequency_data.c . */
1327 typedef struct Compo_FrequencyData {
1328 const char * name; /**< name of the matrix */
1329 const double (*joint_probs)[COMPO_NUM_TRUE_AA]; /**< joint probabilities */
1330 const double * background; /**< background frequencies */
1331 } Compo_FrequencyData;
1332
1333 /** The static frequency data for matrix MAT
1334 *
1335 * We use a macro here to minimize the chance that a typo will lead
1336 * to the use of inconsistent matrix data */
1337 #define MATRIX_DATA(MAT) \
1338 { #MAT, MAT##_JOINT_PROBS, MAT##_bg }
1339
1340 /** Number of matrices for which frequency data is available */
1341 #define NUM_SUPPORTED_MATRICES 8
1342 /** An array available frequency data */
1343 static Compo_FrequencyData
1344 s_FrequencyData[NUM_SUPPORTED_MATRICES] =
1345 {
1346 MATRIX_DATA(BLOSUM62),
1347 MATRIX_DATA(BLOSUM80),
1348 MATRIX_DATA(BLOSUM50),
1349 MATRIX_DATA(BLOSUM90),
1350 MATRIX_DATA(BLOSUM45),
1351 MATRIX_DATA(PAM30),
1352 MATRIX_DATA(PAM70),
1353 MATRIX_DATA(PAM250)
1354 };
1355
1356
1357 /** Given a standard matrix name, locate the static frequency data
1358 * for the matrix */
1359 static Compo_FrequencyData *
s_LocateFrequencyData(const char * matrix)1360 s_LocateFrequencyData(const char * matrix)
1361 {
1362 int i;
1363 for (i = 0; i < NUM_SUPPORTED_MATRICES; i++) {
1364 if (0 == strcasecmp(s_FrequencyData[i].name, matrix)) {
1365 return &s_FrequencyData[i];
1366 }
1367 }
1368 return NULL;
1369 }
1370
1371
1372 /* Documented in matrix_frequency_data.h. */
Blast_FrequencyDataIsAvailable(const char * matrix_name)1373 int Blast_FrequencyDataIsAvailable(const char *matrix_name)
1374 {
1375 return NULL != s_LocateFrequencyData(matrix_name);
1376 }
1377
1378
1379 /* Documented in matrix_frequency_data.h. */
1380 const double *
Blast_GetMatrixBackgroundFreq(const char * matrix_name)1381 Blast_GetMatrixBackgroundFreq(const char *matrix_name)
1382 {
1383 Compo_FrequencyData * data = s_LocateFrequencyData(matrix_name);
1384 if (NULL != data) {
1385 return data->background;
1386 } else {
1387 fprintf(stderr, "matrix %s is not supported "
1388 "for RE based adjustment\n", matrix_name);
1389 return NULL;
1390 }
1391 }
1392
1393
1394 /* Documented in matrix_frequency_data.h. */
1395 int
Blast_GetJointProbsForMatrix(double ** probs,double row_sums[],double col_sums[],const char * matrix_name)1396 Blast_GetJointProbsForMatrix(double ** probs, double row_sums[],
1397 double col_sums[], const char *matrix_name)
1398 {
1399 int i, j;
1400 Compo_FrequencyData * data = s_LocateFrequencyData(matrix_name);
1401 if (NULL == data) {
1402 fprintf(stderr, "matrix %s is not supported "
1403 "for RE based adjustment\n", matrix_name);
1404 return -1;
1405 }
1406 for (j = 0; j < COMPO_NUM_TRUE_AA; j++) {
1407 col_sums[j] = 0.0;
1408 }
1409 for (i = 0; i < COMPO_NUM_TRUE_AA; i++) {
1410 row_sums[i] = 0.0;
1411 for (j = 0; j < COMPO_NUM_TRUE_AA; j++) {
1412 probs[i][j] = data->joint_probs[i][j];
1413 row_sums[i] += probs[i][j];
1414 col_sums[j] += probs[i][j];
1415 }
1416 }
1417 return 0;
1418 }
1419