#include "mltaln.h" #define DEBUG 0 char *directionfile; static int show_R_ = 1; static int subalignment; static int subalignmentoffset; void arguments( int argc, char *argv[] ) { int c; inputfile = NULL; directionfile = NULL; subalignment = 0; subalignmentoffset = 0; show_R_ = 1; while( --argc > 0 && (*++argv)[0] == '-' ) { while ( (c = *++argv[0]) ) { switch( c ) { case 'd': directionfile = *++argv; fprintf( stderr, "directionfile = %s\n", directionfile ); --argc; goto nextoption; case 'i': inputfile = *++argv; fprintf( stderr, "inputfile = %s\n", inputfile ); --argc; goto nextoption; case 'H': subalignment = 1; subalignmentoffset = myatoi( *++argv ); --argc; goto nextoption; case 'r': show_R_ = 0; break; default: fprintf( stderr, "illegal option %c\n", c ); argc = 0; break; } } nextoption: ; } if( argc != 0 ) { fprintf( stderr, "options: Check source file !\n" ); exit( 1 ); } } int main( int argc, char *argv[] ) { FILE *infp; FILE *difp; int nlenmin; char **name; char **seq; char *tmpseq; char line[100]; int *nlen; int i, j; int nsubalignments, maxmem; int **subtable = NULL; int *preservegaps = NULL; char firstdir; char *directions; arguments( argc, argv ); reporterr( "subalignment = %d\n", subalignment ); reporterr( "subalignmentoffset = %d\n", subalignmentoffset ); if( inputfile ) { infp = fopen( inputfile, "r" ); if( !infp ) { fprintf( stderr, "Cannot open %s\n", inputfile ); exit( 1 ); } } else infp = stdin; if( directionfile ) { difp = fopen( directionfile, "r" ); if( !difp ) { fprintf( stderr, "Cannot open %s\n", directionfile ); exit( 1 ); } } else { fprintf( stderr, "Give directionfile!\n" ); } dorp = NOTSPECIFIED; getnumlen_casepreserve( infp, &nlenmin ); fprintf( stderr, "%d x %d - %d %c\n", njob, nlenmax, nlenmin, dorp ); seq = AllocateCharMtx( njob, nlenmax+1 ); tmpseq = AllocateCharVec( MAX( B, nlenmax )+1 ); name = AllocateCharMtx( njob, B+1 ); nlen = AllocateIntVec( njob ); directions = calloc( njob, sizeof( int ) ); readData_pointer_casepreserve( infp, name, nlen, seq ); for( i=0; i-1; i++ ) { if( directions[subtable[j][i]] != firstdir ) { reporterr( "\n\n#############################################################################\n" ); reporterr( "\nDirection of nucleotide sequences seems to be inconsistent.\n" ); reporterr( "Please check the following two sequences:\n" ); reporterr( " Sequece no.%d (%s)\n", subtable[j][0]+1, name[subtable[j][0]] ); reporterr( " Sequece no.%d (%s)\n", subtable[j][i]+1, name[subtable[j][i]] ); reporterr( "\nThese sequences are in sub alignment no.%d in your setting of --merge,\nbut their directions seem to be different.\n\n", j+1 ); reporterr( "#############################################################################\n\n\n\n" ); exit( 1 ); } } reporterr( "OK!\n" ); } } for( i=0; i%s\n", name[i]+1 ); fprintf( stdout, "%s\n", seq[i] ); } free( nlen ); FreeCharMtx( seq ); FreeCharMtx( name ); free( tmpseq ); return( 0 ); }