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