new mafft v 6.857 with extensions
[jabaws.git] / binaries / src / mafft / core / JTT.c
diff --git a/binaries/src/mafft/core/JTT.c b/binaries/src/mafft/core/JTT.c
new file mode 100644 (file)
index 0000000..0fee40d
--- /dev/null
@@ -0,0 +1,244 @@
+#if 0
+#include "mltaln.h"
+#endif
+#define DEFAULTGOP_J -1530
+#define DEFAULTGEP_J   -00 
+#define DEFAULTOFS_J  -123  /* +10 -- -50  teido ka ? */
+#define DEFAULTPAMN  200
+
+void JTTmtx( double **rsr, double *freq, char locamino[26], char locgrp[26], int isTM )
+{
+       int i, j;
+       double r[20][20];
+//     char locamino0[] = "ARNDCQEGHILKMFPSTWYVBZX.-U";
+       char locamino0[] = "ARNDCQEGHILKMFPSTWYVBZX.-J";
+       char locgrp0[] = 
+       {
+               0, 3, 2, 2, 5, 2, 2, 0, 3, 1, 1, 3, 1, 4, 0, 0, 0, 4, 4, 1, 2, 2,
+               6, 6, 6, 1, 
+       };
+
+       double freq0[20] = 
+       {
+               0.077,
+               0.051,
+               0.043,
+               0.052,
+               0.020,
+               0.041,
+               0.062,
+               0.074,
+               0.023,
+               0.052,
+               0.091,
+               0.059,
+               0.024,
+               0.040,
+               0.051,
+               0.069,
+               0.059,
+               0.014,
+               0.032,
+               0.066,
+       };
+       double freq0_TM[20] = 
+       {
+                0.1051,
+                0.0157,
+                0.0185,
+                0.0089,
+                0.0219,
+                0.0141,
+                0.0097,
+                0.0758,
+                0.0168,
+                0.1188,
+                0.1635,
+                0.0112,
+                0.0333,
+                0.0777,
+                0.0260,
+                0.0568,
+                0.0523,
+                0.0223,
+                0.0324,
+                0.1195,
+       };
+
+    /* Lower triangular is JTT's Accepted point mutations */
+    r[ 1][ 0]=  247;
+
+    r[ 2][ 0]=  216; r[ 2][ 1]=  116;
+
+    r[ 3][ 0]=  386; r[ 3][ 1]=   48; r[ 3][ 2]= 1433;
+
+    r[ 4][ 0]=  106; r[ 4][ 1]=  125; r[ 4][ 2]=   32; r[ 4][ 3]=   13;
+
+    r[ 5][ 0]=  208; r[ 5][ 1]=  750; r[ 5][ 2]=  159; r[ 5][ 3]=  130;
+    r[ 5][ 4]=    9;
+
+    r[ 6][ 0]=  600; r[ 6][ 1]=  119; r[ 6][ 2]=  180; r[ 6][ 3]= 2914;
+    r[ 6][ 4]=    8; r[ 6][ 5]= 1027;
+
+    r[ 7][ 0]= 1183; r[ 7][ 1]=  614; r[ 7][ 2]=  291; r[ 7][ 3]=  577;
+    r[ 7][ 4]=   98; r[ 7][ 5]=   84; r[ 7][ 6]=  610;
+
+    r[ 8][ 0]=   46; r[ 8][ 1]=  446; r[ 8][ 2]=  466; r[ 8][ 3]=  144;
+    r[ 8][ 4]=   40; r[ 8][ 5]=  635; r[ 8][ 6]=   41; r[ 8][ 7]=   41;
+
+    r[ 9][ 0]=  173; r[ 9][ 1]=   76; r[ 9][ 2]=  130; r[ 9][ 3]=   37;
+    r[ 9][ 4]=   19; r[ 9][ 5]=   20; r[ 9][ 6]=   43; r[ 9][ 7]=   25;
+    r[ 9][ 8]=   26;
+
+    r[10][ 0]=  257; r[10][ 1]=  205; r[10][ 2]=   63; r[10][ 3]=   34;
+    r[10][ 4]=   36; r[10][ 5]=  314; r[10][ 6]=   65; r[10][ 7]=   56;
+    r[10][ 8]=  134; r[10][ 9]= 1324;
+
+    r[11][ 0]=  200; r[11][ 1]= 2348; r[11][ 2]=  758; r[11][ 3]=  102;
+    r[11][ 4]=    7; r[11][ 5]=  858; r[11][ 6]=  754; r[11][ 7]=  142;
+    r[11][ 8]=   85; r[11][ 9]=   75; r[11][10]=   94;
+
+    r[12][ 0]=  100; r[12][ 1]=   61; r[12][ 2]=   39; r[12][ 3]=   27;
+    r[12][ 4]=   23; r[12][ 5]=   52; r[12][ 6]=   30; r[12][ 7]=   27;
+    r[12][ 8]=   21; r[12][ 9]=  704; r[12][10]=  974; r[12][11]=  103;
+
+    r[13][ 0]=   51; r[13][ 1]=   16; r[13][ 2]=   15; r[13][ 3]=    8;
+    r[13][ 4]=   66; r[13][ 5]=    9; r[13][ 6]=   13; r[13][ 7]=   18;
+    r[13][ 8]=   50; r[13][ 9]=  196; r[13][10]= 1093; r[13][11]=    7;
+    r[13][12]=   49;
+
+    r[14][ 0]=  901; r[14][ 1]=  217; r[14][ 2]=   31; r[14][ 3]=   39;
+    r[14][ 4]=   15; r[14][ 5]=  395; r[14][ 6]=   71; r[14][ 7]=   93;
+    r[14][ 8]=  157; r[14][ 9]=   31; r[14][10]=  578; r[14][11]=   77;
+    r[14][12]=   23; r[14][13]=   36;
+
+    r[15][ 0]= 2413; r[15][ 1]=  413; r[15][ 2]= 1738; r[15][ 3]=  244;
+    r[15][ 4]=  353; r[15][ 5]=  182; r[15][ 6]=  156; r[15][ 7]= 1131;
+    r[15][ 8]=  138; r[15][ 9]=  172; r[15][10]=  436; r[15][11]=  228;
+    r[15][12]=   54; r[15][13]=  309; r[15][14]= 1138;
+
+    r[16][ 0]= 2440; r[16][ 1]=  230; r[16][ 2]=  693; r[16][ 3]=  151;
+    r[16][ 4]=   66; r[16][ 5]=  149; r[16][ 6]=  142; r[16][ 7]=  164;
+    r[16][ 8]=   76; r[16][ 9]=  930; r[16][10]=  172; r[16][11]=  398;
+    r[16][12]=  343; r[16][13]=   39; r[16][14]=  412; r[16][15]= 2258;
+
+    r[17][ 0]=   11; r[17][ 1]=  109; r[17][ 2]=    2; r[17][ 3]=    5;
+    r[17][ 4]=   38; r[17][ 5]=   12; r[17][ 6]=   12; r[17][ 7]=   69;
+    r[17][ 8]=    5; r[17][ 9]=   12; r[17][10]=   82; r[17][11]=    9;
+    r[17][12]=    8; r[17][13]=   37; r[17][14]=    6; r[17][15]=   36;
+    r[17][16]=    8;
+
+    r[18][ 0]=   41; r[18][ 1]=   46; r[18][ 2]=  114; r[18][ 3]=   89;
+    r[18][ 4]=  164; r[18][ 5]=   40; r[18][ 6]=   15; r[18][ 7]=   15;
+    r[18][ 8]=  514; r[18][ 9]=   61; r[18][10]=   84; r[18][11]=   20;
+    r[18][12]=   17; r[18][13]=  850; r[18][14]=   22; r[18][15]=  164;
+    r[18][16]=   45; r[18][17]=   41;
+
+    r[19][ 0]= 1766; r[19][ 1]=   69; r[19][ 2]=   55; r[19][ 3]=  127;
+    r[19][ 4]=   99; r[19][ 5]=   58; r[19][ 6]=  226; r[19][ 7]=  276;
+    r[19][ 8]=   22; r[19][ 9]= 3938; r[19][10]= 1261; r[19][11]=   58;
+    r[19][12]=  559; r[19][13]=  189; r[19][14]=   84; r[19][15]=  219;
+    r[19][16]=  526; r[19][17]=   27; r[19][18]=   42;
+
+
+    /* Upper triangular is JTT's Accepted point mutations for transmembrane */
+ r[ 0][ 1]=   21; r[ 0][ 2]=    2; r[ 0][ 3]=    7; r[ 0][ 4]=   13;
+ r[ 0][ 5]=    4; r[ 0][ 6]=    6; r[ 0][ 7]=  160; r[ 0][ 8]=    6;
+ r[ 0][ 9]=   44; r[ 0][10]=   43; r[ 0][11]=    5; r[ 0][12]=   10;
+ r[ 0][13]=   21; r[ 0][14]=   34; r[ 0][15]=  198; r[ 0][16]=  202;
+ r[ 0][17]=    0; r[ 0][18]=    1; r[ 0][19]=  292; 
+ r[ 1][ 2]=    0; r[ 1][ 3]=    1; r[ 1][ 4]=    2; r[ 1][ 5]=   21;
+ r[ 1][ 6]=    3; r[ 1][ 7]=   22; r[ 1][ 8]=   21; r[ 1][ 9]=    4;
+ r[ 1][10]=    8; r[ 1][11]=   53; r[ 1][12]=   19; r[ 1][13]=    0;
+ r[ 1][14]=    1; r[ 1][15]=    5; r[ 1][16]=    5; r[ 1][17]=   28;
+ r[ 1][18]=    0; r[ 1][19]=    0; 
+ r[ 2][ 3]=   14; r[ 2][ 4]=    1; r[ 2][ 5]=    7; r[ 2][ 6]=    0;
+ r[ 2][ 7]=    0; r[ 2][ 8]=    8; r[ 2][ 9]=    4; r[ 2][10]=    5;
+ r[ 2][11]=   11; r[ 2][12]=    3; r[ 2][13]=    1; r[ 2][14]=    2;
+ r[ 2][15]=   32; r[ 2][16]=   19; r[ 2][17]=    1; r[ 2][18]=    1;
+ r[ 2][19]=    2; 
+ r[ 3][ 4]=    0; r[ 3][ 5]=    0; r[ 3][ 6]=   12; r[ 3][ 7]=   15;
+ r[ 3][ 8]=    4; r[ 3][ 9]=    1; r[ 3][10]=    0; r[ 3][11]=    2;
+ r[ 3][12]=    1; r[ 3][13]=    0; r[ 3][14]=    1; r[ 3][15]=    0;
+ r[ 3][16]=    6; r[ 3][17]=    0; r[ 3][18]=    1; r[ 3][19]=    4;
+ r[ 4][ 5]=    0; r[ 4][ 6]=    0; r[ 4][ 7]=   13; r[ 4][ 8]=    2;
+ r[ 4][ 9]=    4; r[ 4][10]=   11; r[ 4][11]=    0; r[ 4][12]=    1;
+ r[ 4][13]=   34; r[ 4][14]=    0; r[ 4][15]=   48; r[ 4][16]=   13;
+ r[ 4][17]=    8; r[ 4][18]=   23; r[ 4][19]=   47; 
+ r[ 5][ 6]=   16; r[ 5][ 7]=    1; r[ 5][ 8]=   26; r[ 5][ 9]=    1;
+ r[ 5][10]=   16; r[ 5][11]=    6; r[ 5][12]=    3; r[ 5][13]=    0;
+ r[ 5][14]=    5; r[ 5][15]=    7; r[ 5][16]=    2; r[ 5][17]=    0;
+ r[ 5][18]=    0; r[ 5][19]=    0; 
+ r[ 6][ 7]=   21; r[ 6][ 8]=    0; r[ 6][ 9]=    0; r[ 6][10]=    0;
+ r[ 6][11]=    0; r[ 6][12]=    0; r[ 6][13]=    0; r[ 6][14]=    0;
+ r[ 6][15]=    4; r[ 6][16]=    2; r[ 6][17]=    0; r[ 6][18]=    0;
+ r[ 6][19]=    7; 
+ r[ 7][ 8]=    1; r[ 7][ 9]=   10; r[ 7][10]=    0; r[ 7][11]=    0;
+ r[ 7][12]=    3; r[ 7][13]=    4; r[ 7][14]=    7; r[ 7][15]=   64;
+ r[ 7][16]=   12; r[ 7][17]=    5; r[ 7][18]=    0; r[ 7][19]=   53;
+ r[ 8][ 9]=    3; r[ 8][10]=    2; r[ 8][11]=    0; r[ 8][12]=    1;
+ r[ 8][13]=    0; r[ 8][14]=    0; r[ 8][15]=    0; r[ 8][16]=    4;
+ r[ 8][17]=    0; r[ 8][18]=   29; r[ 8][19]=    2;
+
+ r[ 9][10]=  273; r[ 9][11]=    0; r[ 9][12]=  161; r[ 9][13]=   66;
+ r[ 9][14]=    4; r[ 9][15]=   22; r[ 9][16]=  150; r[ 9][17]=    1;
+ r[ 9][18]=    4; r[ 9][19]=  883;
+
+ r[10][11]=    1; r[10][12]=  153; r[10][13]=  251; r[10][14]=   37;
+ r[10][15]=   43; r[10][16]=   26; r[10][17]=   20; r[10][18]=    6;
+ r[10][19]=  255;
+
+ r[11][12]=    4; r[11][13]=    0; r[11][14]=    0; r[11][15]=    1;
+ r[11][16]=    2; r[11][17]=    0; r[11][18]=    5; r[11][19]=    1;
+
+ r[12][13]=    8; r[12][14]=    0; r[12][15]=    1; r[12][16]=   32;
+ r[12][17]=    1; r[12][18]=    5; r[12][19]=   89;
+
+ r[13][14]=    0; r[13][15]=   32; r[13][16]=    9; r[13][17]=    2;
+ r[13][18]=   54; r[13][19]=   37;
+
+ r[14][15]=    9; r[14][16]=   10; r[14][17]=    0; r[14][18]=    1;
+ r[14][19]=    1;
+
+ r[15][16]=  134; r[15][17]=    1; r[15][18]=   22; r[15][19]=   13;
+
+ r[16][17]=    1; r[16][18]=    3; r[16][19]=   48;
+
+ r[17][18]=    2; r[17][19]=   18;
+
+ r[18][19]=    2;
+
+
+
+       for (i = 0; i < 20; i++) r[i][i] = 0.0;
+       if( isTM )
+       {
+               for (i = 1; i < 20; i++) for (j = 0; j < i; j++)
+               {
+                       r[j][i] /= 400.0 * freq0_TM[i] * freq0_TM[j];
+                       r[i][j] = r[j][i];
+               }
+               for( i=0; i<20; i++ ) freq[i] = freq0_TM[i];
+       }
+       else
+       {
+               for (i = 1; i < 20; i++) for (j = 0; j < i; j++)
+               {
+                       r[i][j] /= 400.0 * freq0[i] * freq0[j];
+                       r[j][i] = r[i][j];
+               }
+               for( i=0; i<20; i++ ) freq[i] = freq0[i];
+       }
+
+       for( i=0; i<26; i++ ) locamino[i] = locamino0[i];
+       for( i=0; i<26; i++ ) locgrp[(int)locamino[i]] = locgrp0[i];
+       for( i=0; i<20; i++ ) for( j=0; j<20; j++ ) rsr[i][j] = r[i][j];
+}