#include "mltaln.h" #define DEBUG 1 static int intcmp( int *str1, int *str2 ) { while( *str1 != -1 && *str2 != -1 ) if( *str1++ != *str2++ ) return( 1 ); if( *str1 != *str2 ) return( 1 ); return( 0 ); } char **arguments( int argc, char *argv[] ) { int c; nblosum = 62; calledByXced = 0; devide = 0; fftscore = 1; use_fft = 0; alg = 'A'; weight = 0; utree = 1; tbutree = 0; refine = 0; check = 1; cut = 0.0; disp = 0; outgap = 1; mix = 0; tbitr = 0; scmtd = 5; tbweight = 0; tbrweight = 3; checkC = 0; scoremtx = 1; dorp = NOTSPECIFIED; ppenalty = NOTSPECIFIED; ppenalty_ex = NOTSPECIFIED; poffset = NOTSPECIFIED; kimuraR = NOTSPECIFIED; pamN = NOTSPECIFIED; fftWinSize = NOTSPECIFIED; fftThreshold = NOTSPECIFIED; TMorJTT = JTT; treemethod = 'x'; while( --argc > 0 && (*++argv)[0] == '-' ) { while ( c = *++argv[0] ) { switch( c ) { case 'Q': calledByXced = 1; break; case 'P': dorp = 'p'; break; case 'D': dorp = 'd'; break; case 'F': use_fft = 1; break; case 'e': fftscore = 0; break; case 'M': alg = 'M'; break; case 'A': alg = 'A'; break; case 'd': disp = 1; break; case 'o': outgap = 0; break; case 'u': tbrweight = 0; break; case 'z': fftThreshold = atoi( *++argv ); --argc; goto nextoption; case 'w': fftWinSize = atoi( *++argv ); --argc; goto nextoption; case 'Z': checkC = 1; break; case 'f': ppenalty = (int)( atof( *++argv ) * 1000 - 0.5 ); fprintf( stderr, "ppenalty = %d\n", ppenalty ); --argc; goto nextoption; case 'g': ppenalty_ex = (int)( atof( *++argv ) * 1000 - 0.5 ); fprintf( stderr, "ppenalty_ex = %d\n", ppenalty_ex ); --argc; goto nextoption; case 'h': poffset = (int)( atof( *++argv ) * 1000 - 0.5 ); fprintf( stderr, "poffset = %d\n", poffset ); --argc; goto nextoption; case 'k': kimuraR = atoi( *++argv ); fprintf( stderr, "kimuraR = %d\n", kimuraR ); --argc; goto nextoption; case 'b': nblosum = atoi( *++argv ); scoremtx = 1; fprintf( stderr, "blosum %d\n", nblosum ); --argc; goto nextoption; case 'j': pamN = atoi( *++argv ); scoremtx = 0; TMorJTT = JTT; fprintf( stderr, "jtt %d\n", pamN ); --argc; goto nextoption; case 'm': pamN = atoi( *++argv ); scoremtx = 0; TMorJTT = TM; fprintf( stderr, "tm %d\n", pamN ); --argc; goto nextoption; default: fprintf( stderr, "illegal option %c\n", c ); argc = 0; break; } } nextoption: ; } if( argc != 2 ) { fprintf( stderr, "options: Check source file ! %c ?\n", c ); exit( 1 ); } fprintf( stderr, "tbitr = %d, tbrweight = %d, tbweight = %d\n", tbitr, tbrweight, tbweight ); // readOtherOptions( &ppid, &fftThreshold, &fftWinSize ); return( argv ); } static void GroupAlign( int nseq1, int nseq2, char **name, int *nlen, char **seq, char **aseq, char **mseq1, char **mseq2, int ***topol, double **len, double *eff, int alloclen ) { int i, j, l; int clus1, clus2; int s1, s2; float pscore; FILE *trap; static char **name1, **name2; double *effarr = eff; double *effarr1 = NULL; double *effarr2 = NULL; static char *indication1, *indication2; float dumfl = 0.0; fprintf( stderr, "in GroupAlign fftWinSize = %d\n", fftWinSize ); fprintf( stderr, "in GroupAlign fftThreshold = %d\n", fftThreshold ); if( effarr1 == NULL ) { name1 = AllocateCharMtx( nseq1, B ); name2 = AllocateCharMtx( nseq2, B ); indication1 = AllocateCharVec( 150 ); indication2 = AllocateCharVec( 150 ); effarr1 = AllocateDoubleVec( njob ); effarr2 = AllocateDoubleVec( njob ); #if 0 #else #endif } for( i=0; i N ) { fprintf( stderr, "ERROR in main\n" ); } name = AllocateCharMtx( njob, B ); nlen = AllocateIntVec( njob ); seq1 = AllocateCharMtx( nseq1, nlenmax*3 ); seq2 = AllocateCharMtx( nseq2, nlenmax*3 ); seq = AllocateCharMtx( njob, 1 ); aseq = AllocateCharMtx( njob, nlenmax*3 ); bseq = AllocateCharMtx( njob, nlenmax*3 ); mseq1 = AllocateCharMtx( njob, 1 ); mseq2 = AllocateCharMtx( njob, 1 ); alloclen = nlenmax * 3; topol = AllocateIntCub( njob, 2, njob ); len = AllocateDoubleMtx( njob, 2 ); pscore = AllocateDoubleMtx( njob, njob ); eff = AllocateDoubleVec( njob ); #if 0 njob=nseq2; FRead( gp2, name+nseq1, nlen+nseq1, seq2 ); njob=nseq1; FRead( gp1, name, nlen, seq1 ); #else njob=nseq2; readDataforgaln( gp2, name+nseq1, nlen+nseq1, seq2 ); njob=nseq1; readDataforgaln( gp1, name, nlen, seq1 ); #endif njob = nseq1 + nseq2; pamN = NOTSPECIFIED; commongappick( nseq1, seq1 ); commongappick( nseq2, seq2 ); for( i=0; i