1 #define USE_XCED 0
2 
3 #if USE_XCED
4 #include "config.h"
5 #include "share.h"
6 #else
7 #endif
8 
9 #include "mafft.h"
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <stddef.h>
13 #include <sys/types.h>
14 #include <string.h>
15 #include <unistd.h>
16 #include <math.h>
17 #include <ctype.h>
18 #include "mtxutl.h"
19 //#include <double.h>
20 #include <stdarg.h>
21 #ifdef enablemultithread
22 #include <pthread.h>
23 #endif
24 
25 #define VERSION "7.267"
26 #define SHOWVERSION reporterr( "%s (%s) Version " VERSION " alg=%c, model=%s, amax=%3.1f\n%d thread(s)\n", progName( argv[0] ), (dorp=='d')?"nuc":((nblosum==-2)?"text":"aa"), alg, modelname, specificityconsideration, nthread )
27 
28 #define FFT_THRESHOLD  80
29 #define FFT_WINSIZE_P   20
30 #define FFT_WINSIZE_D   100
31 #define DISPSEQF  60
32 #define DISPSITEI    0
33 #define MAXITERATION 500
34 #define M  500000       /* njob no saidaiti */
35 #define N 5000000       /* nlen no saidaiti */
36 #define MAXSEG 100000
37 #define B     256
38 #define C     60       /*  1 gyou no mojisuu */
39 #define D      6
40 #define DFORMAT      "%#6.3f"
41 #define rnd() ( ( 1.0 / ( RAND_MAX + 1.0 ) ) * rand() )
42 #define MAX(X,Y)    ( ((X)>(Y))?(X):(Y) )
43 #define MIN(X,Y)    ( ((X)<(Y))?(X):(Y) )
44 #define G(X)        ( ((X)>(0))?(X):(0) )
45 #define BEFF   1.0   /* 0.6 ni suruto zureru */
46 #define WIN   3
47 #define SGAPP -1000
48 #define GETA2 0.001
49 #define GETA3 0.001
50 #define NOTSPECIFIED  100009
51 #define SUEFF   0.1  /* upg/(spg+upg)  -> sueff.sed */
52 #define DIVLOCAL 0
53 #define INTMTXSCALE 1000000.0
54 #define JTT 201
55 #define TM  202
56 
57 extern char modelname[500];
58 extern int njob, nlenmax;
59 extern int amino_n[0x80];
60 extern char amino_grp[0x80];
61 extern int amino_dis[0x80][0x80];
62 extern double **n_disLN;
63 extern double amino_dis_consweight_multi[0x80][0x80];
64 extern int **n_dis;
65 extern int **n_disFFT;
66 extern double **n_dis_consweight_multi;
67 extern char amino[0x80];
68 extern double polarity[0x80];
69 extern double volume[0x80];
70 extern int ribosumdis[37][37];
71 
72 extern int ppid;
73 extern double thrinter;
74 extern double fastathreshold;
75 extern int pslocal, ppslocal;
76 extern int constraint;
77 extern int divpairscore;
78 extern int fmodel; // 1-> fmodel 0->default -1->raw
79 extern int nblosum; // 45, 50, 62, 80
80 extern int kobetsubunkatsu;
81 extern int bunkatsu;
82 extern int dorp;
83 extern int niter;
84 extern int contin;
85 extern int calledByXced;
86 extern int devide;
87 extern int scmtd;
88 extern int weight;
89 extern int utree;
90 extern int tbutree;
91 extern int refine;
92 extern int check;
93 extern double cut;
94 extern int cooling;
95 extern int trywarp;
96 extern int penalty, ppenalty, penaltyLN;
97 extern int penalty_dist, ppenalty_dist;
98 extern int RNApenalty, RNAppenalty;
99 extern int RNApenalty_ex, RNAppenalty_ex;
100 extern int penalty_ex, ppenalty_ex, penalty_exLN;
101 extern int penalty_EX, ppenalty_EX;
102 extern int penalty_OP, ppenalty_OP;
103 extern int penalty_shift;
104 extern double penalty_shift_factor;
105 extern int offset, poffset, offsetLN, offsetFFT;
106 extern int RNAthr, RNApthr;
107 extern int scoremtx;
108 extern int TMorJTT;
109 extern char use_fft;
110 extern char force_fft;
111 extern int nevermemsave;
112 extern int fftscore;
113 extern int fftWinSize;
114 extern int fftThreshold;
115 extern int fftRepeatStop;
116 extern int fftNoAnchStop;
117 extern int divWinSize;
118 extern int divThreshold;
119 extern int disp;
120 extern int outgap;
121 extern char alg;
122 extern int cnst;
123 extern int mix;
124 extern int tbitr;
125 extern int tbweight;
126 extern int tbrweight;
127 extern int disopt;
128 extern int pamN;
129 extern int checkC;
130 extern double geta2;
131 extern int treemethod;
132 extern int kimuraR;
133 extern char *swopt;
134 extern int fftkeika;
135 extern int score_check;
136 extern char *inputfile;
137 extern char *addfile;
138 extern int addprofile;
139 extern double consweight_multi;
140 extern double consweight_rna;
141 extern char RNAscoremtx;
142 
143 extern char *signalSM;
144 extern FILE *prep_g;
145 extern FILE *trap_g;
146 extern char **seq_g;
147 extern char **res_g;
148 extern int rnakozo;
149 extern char rnaprediction;
150 
151 /* sengen no ichi ha koko dake de ha nai */
152 extern void constants();
153 extern char **Calignm1();
154 extern char **Dalignm1();
155 extern char **align0();
156 extern double Cscore_m_1( char **, int, int, double ** );
157 extern double score_m_1(  char **, int, int, double ** );
158 extern double score_calc0( char **, int, double **, int );
159 extern char seqcheck( char ** );
160 extern double substitution( char *, char * );
161 extern double substitution_score( char *, char * );
162 extern double substitution_nid( char *, char * );
163 extern double substitution_hosei( char *, char * );
164 extern double ipower( double, int );
165 extern double translate_and_Calign();
166 extern double A__align();
167 extern double A__align11();
168 extern double A__align_gapmap();
169 extern double partA__align();
170 extern double L__align11( double **scoringmtx, double scoreoffset, char **seq1, char **seq2, int alloclen, int *off1pt, int *off2pt );
171 extern double G__align11();
172 extern double Falign();
173 extern double Falign_localhom();
174 extern double Conalign();
175 extern double Aalign();
176 extern double imp_match_out_sc( int, int );
177 extern double part_imp_match_out_sc( int, int );
178 extern void ErrorExit();
179 extern void cpmx_calc();
180 extern void intergroup_score( char **, char **, double *, double *, int, int, int, double * );
181 extern int conjuctionfortbfast();
182 extern int fastconjuction();
183 extern char seqcheck( char ** );
184 
185 extern int deletenewinsertions_whole_eq( int on, int an, char **oseq, char **aseq, int **deletelist );
186 
187 typedef struct _LocalHom
188 {
189 	int nokori;
190 	struct _LocalHom *next;
191 	struct _LocalHom *last;
192 	int start1;
193 	int end1;
194 	int start2;
195 	int end2;
196 	double opt;
197 	int overlapaa;
198 	int extended;
199 	double importance;
200 	double fimportance;
201 	double wimportance;
202 	char korh;
203 } LocalHom;
204 
205 typedef struct _NodeInCub
206 {
207 	int step;
208 	int LorR;
209 } NodeInCub;
210 
211 typedef struct _Node
212 {
213 	struct _Node *children[3];
214 	int tmpChildren[3];
215 	double length[3];
216 	double *weightptr[3];
217 	int top[3];
218 	int *members[3];
219 } Node;
220 
221 typedef struct _Segment
222 {
223 	int start;
224 	int end;
225 	int center;
226 	double score;
227 	int skipForeward;
228 	int skipBackward;
229 	struct _Segment *pair;
230 	int  number;
231 } Segment;
232 
233 typedef struct _Segments
234 {
235 	Segment group1;
236 	Segment group2;
237 	int number1;
238 	int number2;
239 } Segments;
240 
241 typedef struct _Bchain
242 {
243 	struct _Bchain *next;
244 	struct _Bchain *prev;
245 	int pos;
246 } Bchain;
247 
248 typedef struct _Achain
249 {
250 	int next;
251 	int prev;
252 //	int curr;
253 } Achain;
254 
255 
256 typedef struct _Fukusosuu
257 {
258     double R;
259     double I;
260 } Fukusosuu;
261 
262 typedef struct _Gappattern
263 {
264 	int len;
265 	double freq;
266 } Gappat;
267 
268 typedef struct _RNApair
269 {
270 	int uppos;
271 	double upscore;
272 	int downpos;
273 	double downscore;
274 	int bestpos;
275 	double bestscore;
276 } RNApair;
277 
278 typedef struct _Treedep
279 {
280 	int child0;
281 	int child1;
282 	int done;
283 	double distfromtip;
284 } Treedep;
285 
286 typedef struct _Addtree
287 {
288 	int nearest;
289 	double dist1;
290 	char *neighbors;
291 	double dist2;
292 } Addtree;
293 
294 #include "fft.h"
295 #include "dp.h"
296 #include "functions.h"
297 
298 #ifdef enablemultithread
299 #define TLS __thread
300 #else
301 #define TLS
302 #endif
303 
304 extern TLS int commonAlloc1;
305 extern TLS int commonAlloc2;
306 extern TLS int **commonIP;
307 extern TLS int **commonJP;
308 extern int nthread;
309 extern int randomseed;
310 extern int parallelizationstrategy;
311 #define BESTFIRST 0
312 #define BAATARI0 1
313 #define BAATARI1 2
314 #define BAATARI2 3
315 
316 extern int scoreout;
317 extern int spscoreout;
318 extern int outnumber;
319 
320 extern int legacygapcost;
321 extern double minimumweight;
322 
323 extern TLS char *newgapstr;
324 
325 extern int nalphabets;
326 extern int nscoredalphabets;
327 extern double specificityconsideration;
328 extern int ndistclass, maxdistclass;
329 
330 extern int gmsg;
331 
332 extern double sueff_global;
333