1 | /* |
---|
2 | * dyhfjtt.c Adachi, J. 1995.09.07 |
---|
3 | * Copyright (C) 1992-1995 J. Adachi & M. Hasegawa, All rights reserved. |
---|
4 | */ |
---|
5 | |
---|
6 | #include "protml.h" |
---|
7 | |
---|
8 | void |
---|
9 | dyhfjtt(r, f, flag) /* Data of Amino Acid Substitution Model */ |
---|
10 | dmattpmty r; /* Relative Substitution Rate Matrix */ |
---|
11 | double *f; /* Frequency */ |
---|
12 | boolean flag; /* TRUE(1) : Dayhoff, FALSE(0) : JTT */ |
---|
13 | { |
---|
14 | int i, j; |
---|
15 | |
---|
16 | /* Dayhoff's model data |
---|
17 | * Dayhoff, M.O., Schwartz, R.M., Orcutt, B.C. (1978) |
---|
18 | * "A model of evolutionary change in proteins." |
---|
19 | * Dayhoff, M.O.(ed.) Atlas of Protein Sequence Structur., Vol5, Suppl3. |
---|
20 | * National Biomedical Research Foundation, Washington DC, pp.345-352. |
---|
21 | */ |
---|
22 | |
---|
23 | /* JTT's model data |
---|
24 | * D.T.Jones, W.R.Taylor and J.M.Thornton |
---|
25 | * "The rapid generation of mutation data matrices from protein sequences" |
---|
26 | * CABIOS vol.8 no.3 1992 pp275-282 |
---|
27 | */ |
---|
28 | |
---|
29 | /* Upper triangular is Dayhoff's Accepted point mutations */ |
---|
30 | /* Lower triangular is JTT's Accepted point mutations */ |
---|
31 | r[ 0][ 0]= 0; r[ 0][ 1]= 30; r[ 0][ 2]= 109; r[ 0][ 3]= 154; |
---|
32 | r[ 0][ 4]= 33; r[ 0][ 5]= 93; r[ 0][ 6]= 266; r[ 0][ 7]= 579; |
---|
33 | r[ 0][ 8]= 21; r[ 0][ 9]= 66; r[ 0][10]= 95; r[ 0][11]= 57; |
---|
34 | r[ 0][12]= 29; r[ 0][13]= 20; r[ 0][14]= 345; r[ 0][15]= 772; |
---|
35 | r[ 0][16]= 590; r[ 0][17]= 0; r[ 0][18]= 20; r[ 0][19]= 365; |
---|
36 | r[ 1][ 0]= 247; r[ 1][ 1]= 0; r[ 1][ 2]= 17; r[ 1][ 3]= 0; |
---|
37 | r[ 1][ 4]= 10; r[ 1][ 5]= 120; r[ 1][ 6]= 0; r[ 1][ 7]= 10; |
---|
38 | r[ 1][ 8]= 103; r[ 1][ 9]= 30; r[ 1][10]= 17; r[ 1][11]= 477; |
---|
39 | r[ 1][12]= 17; r[ 1][13]= 7; r[ 1][14]= 67; r[ 1][15]= 137; |
---|
40 | r[ 1][16]= 20; r[ 1][17]= 27; r[ 1][18]= 3; r[ 1][19]= 20; |
---|
41 | r[ 2][ 0]= 216; r[ 2][ 1]= 116; r[ 2][ 2]= 0; r[ 2][ 3]= 532; |
---|
42 | r[ 2][ 4]= 0; r[ 2][ 5]= 50; r[ 2][ 6]= 94; r[ 2][ 7]= 156; |
---|
43 | r[ 2][ 8]= 226; r[ 2][ 9]= 36; r[ 2][10]= 37; r[ 2][11]= 322; |
---|
44 | r[ 2][12]= 0; r[ 2][13]= 7; r[ 2][14]= 27; r[ 2][15]= 432; |
---|
45 | r[ 2][16]= 169; r[ 2][17]= 3; r[ 2][18]= 36; r[ 2][19]= 13; |
---|
46 | r[ 3][ 0]= 386; r[ 3][ 1]= 48; r[ 3][ 2]= 1433; r[ 3][ 3]= 0; |
---|
47 | r[ 3][ 4]= 0; r[ 3][ 5]= 76; r[ 3][ 6]= 831; r[ 3][ 7]= 162; |
---|
48 | r[ 3][ 8]= 43; r[ 3][ 9]= 13; r[ 3][10]= 0; r[ 3][11]= 85; |
---|
49 | r[ 3][12]= 0; r[ 3][13]= 0; r[ 3][14]= 10; r[ 3][15]= 98; |
---|
50 | r[ 3][16]= 57; r[ 3][17]= 0; r[ 3][18]= 0; r[ 3][19]= 17; |
---|
51 | r[ 4][ 0]= 106; r[ 4][ 1]= 125; r[ 4][ 2]= 32; r[ 4][ 3]= 13; |
---|
52 | r[ 4][ 4]= 0; r[ 4][ 5]= 0; r[ 4][ 6]= 0; r[ 4][ 7]= 10; |
---|
53 | r[ 4][ 8]= 10; r[ 4][ 9]= 17; r[ 4][10]= 0; r[ 4][11]= 0; |
---|
54 | r[ 4][12]= 0; r[ 4][13]= 0; r[ 4][14]= 10; r[ 4][15]= 117; |
---|
55 | r[ 4][16]= 10; r[ 4][17]= 0; r[ 4][18]= 30; r[ 4][19]= 33; |
---|
56 | r[ 5][ 0]= 208; r[ 5][ 1]= 750; r[ 5][ 2]= 159; r[ 5][ 3]= 130; |
---|
57 | r[ 5][ 4]= 9; r[ 5][ 5]= 0; r[ 5][ 6]= 422; r[ 5][ 7]= 30; |
---|
58 | r[ 5][ 8]= 243; r[ 5][ 9]= 8; r[ 5][10]= 75; r[ 5][11]= 147; |
---|
59 | r[ 5][12]= 20; r[ 5][13]= 0; r[ 5][14]= 93; r[ 5][15]= 47; |
---|
60 | r[ 5][16]= 37; r[ 5][17]= 0; r[ 5][18]= 0; r[ 5][19]= 27; |
---|
61 | r[ 6][ 0]= 600; r[ 6][ 1]= 119; r[ 6][ 2]= 180; r[ 6][ 3]= 2914; |
---|
62 | r[ 6][ 4]= 8; r[ 6][ 5]= 1027; r[ 6][ 6]= 0; r[ 6][ 7]= 112; |
---|
63 | r[ 6][ 8]= 23; r[ 6][ 9]= 35; r[ 6][10]= 15; r[ 6][11]= 104; |
---|
64 | r[ 6][12]= 7; r[ 6][13]= 0; r[ 6][14]= 40; r[ 6][15]= 86; |
---|
65 | r[ 6][16]= 31; r[ 6][17]= 0; r[ 6][18]= 10; r[ 6][19]= 37; |
---|
66 | r[ 7][ 0]= 1183; r[ 7][ 1]= 614; r[ 7][ 2]= 291; r[ 7][ 3]= 577; |
---|
67 | r[ 7][ 4]= 98; r[ 7][ 5]= 84; r[ 7][ 6]= 610; r[ 7][ 7]= 0; |
---|
68 | r[ 7][ 8]= 10; r[ 7][ 9]= 0; r[ 7][10]= 17; r[ 7][11]= 60; |
---|
69 | r[ 7][12]= 7; r[ 7][13]= 17; r[ 7][14]= 49; r[ 7][15]= 450; |
---|
70 | r[ 7][16]= 50; r[ 7][17]= 0; r[ 7][18]= 0; r[ 7][19]= 97; |
---|
71 | r[ 8][ 0]= 46; r[ 8][ 1]= 446; r[ 8][ 2]= 466; r[ 8][ 3]= 144; |
---|
72 | r[ 8][ 4]= 40; r[ 8][ 5]= 635; r[ 8][ 6]= 41; r[ 8][ 7]= 41; |
---|
73 | r[ 8][ 8]= 0; r[ 8][ 9]= 3; r[ 8][10]= 40; r[ 8][11]= 23; |
---|
74 | r[ 8][12]= 0; r[ 8][13]= 20; r[ 8][14]= 50; r[ 8][15]= 26; |
---|
75 | r[ 8][16]= 14; r[ 8][17]= 3; r[ 8][18]= 40; r[ 8][19]= 30; |
---|
76 | r[ 9][ 0]= 173; r[ 9][ 1]= 76; r[ 9][ 2]= 130; r[ 9][ 3]= 37; |
---|
77 | r[ 9][ 4]= 19; r[ 9][ 5]= 20; r[ 9][ 6]= 43; r[ 9][ 7]= 25; |
---|
78 | r[ 9][ 8]= 26; r[ 9][ 9]= 0; r[ 9][10]= 253; r[ 9][11]= 43; |
---|
79 | r[ 9][12]= 57; r[ 9][13]= 90; r[ 9][14]= 7; r[ 9][15]= 20; |
---|
80 | r[ 9][16]= 129; r[ 9][17]= 0; r[ 9][18]= 13; r[ 9][19]= 661; |
---|
81 | r[10][ 0]= 257; r[10][ 1]= 205; r[10][ 2]= 63; r[10][ 3]= 34; |
---|
82 | r[10][ 4]= 36; r[10][ 5]= 314; r[10][ 6]= 65; r[10][ 7]= 56; |
---|
83 | r[10][ 8]= 134; r[10][ 9]= 1324; r[10][10]= 0; r[10][11]= 39; |
---|
84 | r[10][12]= 207; r[10][13]= 167; r[10][14]= 43; r[10][15]= 32; |
---|
85 | r[10][16]= 52; r[10][17]= 13; r[10][18]= 23; r[10][19]= 303; |
---|
86 | r[11][ 0]= 200; r[11][ 1]= 2348; r[11][ 2]= 758; r[11][ 3]= 102; |
---|
87 | r[11][ 4]= 7; r[11][ 5]= 858; r[11][ 6]= 754; r[11][ 7]= 142; |
---|
88 | r[11][ 8]= 85; r[11][ 9]= 75; r[11][10]= 94; r[11][11]= 0; |
---|
89 | r[11][12]= 90; r[11][13]= 0; r[11][14]= 43; r[11][15]= 168; |
---|
90 | r[11][16]= 200; r[11][17]= 0; r[11][18]= 10; r[11][19]= 17; |
---|
91 | r[12][ 0]= 100; r[12][ 1]= 61; r[12][ 2]= 39; r[12][ 3]= 27; |
---|
92 | r[12][ 4]= 23; r[12][ 5]= 52; r[12][ 6]= 30; r[12][ 7]= 27; |
---|
93 | r[12][ 8]= 21; r[12][ 9]= 704; r[12][10]= 974; r[12][11]= 103; |
---|
94 | r[12][12]= 0; r[12][13]= 17; r[12][14]= 4; r[12][15]= 20; |
---|
95 | r[12][16]= 28; r[12][17]= 0; r[12][18]= 0; r[12][19]= 77; |
---|
96 | r[13][ 0]= 51; r[13][ 1]= 16; r[13][ 2]= 15; r[13][ 3]= 8; |
---|
97 | r[13][ 4]= 66; r[13][ 5]= 9; r[13][ 6]= 13; r[13][ 7]= 18; |
---|
98 | r[13][ 8]= 50; r[13][ 9]= 196; r[13][10]= 1093; r[13][11]= 7; |
---|
99 | r[13][12]= 49; r[13][13]= 0; r[13][14]= 7; r[13][15]= 40; |
---|
100 | r[13][16]= 10; r[13][17]= 10; r[13][18]= 260; r[13][19]= 10; |
---|
101 | r[14][ 0]= 901; r[14][ 1]= 217; r[14][ 2]= 31; r[14][ 3]= 39; |
---|
102 | r[14][ 4]= 15; r[14][ 5]= 395; r[14][ 6]= 71; r[14][ 7]= 93; |
---|
103 | r[14][ 8]= 157; r[14][ 9]= 31; r[14][10]= 578; r[14][11]= 77; |
---|
104 | r[14][12]= 23; r[14][13]= 36; r[14][14]= 0; r[14][15]= 269; |
---|
105 | r[14][16]= 73; r[14][17]= 0; r[14][18]= 0; r[14][19]= 50; |
---|
106 | r[15][ 0]= 2413; r[15][ 1]= 413; r[15][ 2]= 1738; r[15][ 3]= 244; |
---|
107 | r[15][ 4]= 353; r[15][ 5]= 182; r[15][ 6]= 156; r[15][ 7]= 1131; |
---|
108 | r[15][ 8]= 138; r[15][ 9]= 172; r[15][10]= 436; r[15][11]= 228; |
---|
109 | r[15][12]= 54; r[15][13]= 309; r[15][14]= 1138; r[15][15]= 0; |
---|
110 | r[15][16]= 696; r[15][17]= 17; r[15][18]= 22; r[15][19]= 43; |
---|
111 | r[16][ 0]= 2440; r[16][ 1]= 230; r[16][ 2]= 693; r[16][ 3]= 151; |
---|
112 | r[16][ 4]= 66; r[16][ 5]= 149; r[16][ 6]= 142; r[16][ 7]= 164; |
---|
113 | r[16][ 8]= 76; r[16][ 9]= 930; r[16][10]= 172; r[16][11]= 398; |
---|
114 | r[16][12]= 343; r[16][13]= 39; r[16][14]= 412; r[16][15]= 2258; |
---|
115 | r[16][16]= 0; r[16][17]= 0; r[16][18]= 23; r[16][19]= 186; |
---|
116 | r[17][ 0]= 11; r[17][ 1]= 109; r[17][ 2]= 2; r[17][ 3]= 5; |
---|
117 | r[17][ 4]= 38; r[17][ 5]= 12; r[17][ 6]= 12; r[17][ 7]= 69; |
---|
118 | r[17][ 8]= 5; r[17][ 9]= 12; r[17][10]= 82; r[17][11]= 9; |
---|
119 | r[17][12]= 8; r[17][13]= 37; r[17][14]= 6; r[17][15]= 36; |
---|
120 | r[17][16]= 8; r[17][17]= 0; r[17][18]= 6; r[17][19]= 0; |
---|
121 | r[18][ 0]= 41; r[18][ 1]= 46; r[18][ 2]= 114; r[18][ 3]= 89; |
---|
122 | r[18][ 4]= 164; r[18][ 5]= 40; r[18][ 6]= 15; r[18][ 7]= 15; |
---|
123 | r[18][ 8]= 514; r[18][ 9]= 61; r[18][10]= 84; r[18][11]= 20; |
---|
124 | r[18][12]= 17; r[18][13]= 850; r[18][14]= 22; r[18][15]= 164; |
---|
125 | r[18][16]= 45; r[18][17]= 41; r[18][18]= 0; r[18][19]= 17; |
---|
126 | r[19][ 0]= 1766; r[19][ 1]= 69; r[19][ 2]= 55; r[19][ 3]= 127; |
---|
127 | r[19][ 4]= 99; r[19][ 5]= 58; r[19][ 6]= 226; r[19][ 7]= 276; |
---|
128 | r[19][ 8]= 22; r[19][ 9]= 3938; r[19][10]= 1261; r[19][11]= 58; |
---|
129 | r[19][12]= 559; r[19][13]= 189; r[19][14]= 84; r[19][15]= 219; |
---|
130 | r[19][16]= 526; r[19][17]= 27; r[19][18]= 42; r[19][19]= 0; |
---|
131 | |
---|
132 | if (flag) { /* Dayhoff */ |
---|
133 | |
---|
134 | /* Amino Acid Frequency of Dayhoff model */ |
---|
135 | f[ 0] = 0.087; f[ 1] = 0.041; f[ 2] = 0.040; f[ 3] = 0.047; |
---|
136 | f[ 4] = 0.033; f[ 5] = 0.038; f[ 6] = 0.05; f[ 7] = 0.089; |
---|
137 | f[ 8] = 0.034; f[ 9] = 0.037; f[10] = 0.085; f[11] = 0.08; |
---|
138 | f[12] = 0.015; f[13] = 0.04; f[14] = 0.051; f[15] = 0.07; |
---|
139 | f[16] = 0.058; f[17] = 0.01; f[18] = 0.03; f[19] = 0.065; |
---|
140 | /* f[11] != 0.081, because f[0] + f[1] + ... + f[19] = 1.01 */ |
---|
141 | |
---|
142 | /* Relative Substitution Rate Matrix of Dayhoff model */ |
---|
143 | for (i = 0; i < 20 - 1; i++) { |
---|
144 | for (j = i + 1; j < 20; j++) { |
---|
145 | if (r[i][j] == 0.0) { |
---|
146 | r[i][j] = r[j][i] * (1572.0 / 59190.0); |
---|
147 | if (r[i][j] > 1.0) r[i][j] = 1.0; |
---|
148 | } |
---|
149 | r[i][j] /= 400.0 * f[i] * f[j]; |
---|
150 | r[j][i] = r[i][j]; |
---|
151 | } |
---|
152 | } |
---|
153 | |
---|
154 | } else { /* JTT */ |
---|
155 | |
---|
156 | /* Amino Acid Frequency of JTT model */ |
---|
157 | f[ 0] = 0.077; f[ 1] = 0.051; f[ 2] = 0.043; f[ 3] = 0.052; |
---|
158 | f[ 4] = 0.02; f[ 5] = 0.041; f[ 6] = 0.062; f[ 7] = 0.074; |
---|
159 | f[ 8] = 0.023; f[ 9] = 0.052; f[10] = 0.091; f[11] = 0.059; |
---|
160 | f[12] = 0.024; f[13] = 0.04; f[14] = 0.051; f[15] = 0.069; |
---|
161 | f[16] = 0.059; f[17] = 0.014; f[18] = 0.032; f[19] = 0.066; |
---|
162 | /* f[9] != 0.053, because f[0] + f[1] + ... + f[19] = 1.01 */ |
---|
163 | |
---|
164 | /* Relative Substitution Rate Matrix of JTT model */ |
---|
165 | for (i = 1; i < 20; i++) { |
---|
166 | for (j = 0; j < i; j++) { |
---|
167 | r[i][j] /= 400.0 * f[i] * f[j]; |
---|
168 | r[j][i] = r[i][j]; |
---|
169 | } |
---|
170 | } |
---|
171 | |
---|
172 | } |
---|
173 | |
---|
174 | } /*_ dyhfjtt */ |
---|