+++ /dev/null
-#include "mltaln.h"
-
-#define DEBUG 0
-
-
-static char *comment;
-static char *orderfile;
-static int format;
-static int namelen;
-
-static void fillspace( char *seq, int lenmax )
-{
- int len = strlen( seq );
- seq += len;
- lenmax -= len;
- while( lenmax-- ) *seq++ = ' ';
- *seq = 0;
-}
-
-void setmark_clustal( int nlen, int nseq, char **seq, char *mark )
-{
- int i, j, k;
-
- char *strong[] = {
- "STA",
- "NEQK",
- "NHQK",
- "NDEQ",
- "QHRK",
- "MILV",
- "MILF",
- "HY",
- "FYW",
- };
- int nstrong = 9;
- char *weaker[] = {
- "CSA",
- "ATV",
- "SAG",
- "STNK",
- "STPA",
- "SGND",
- "SNDEQK",
- "NDEQHK",
- "NEQHRK",
- "FVLIM",
- "HFY",
- };
- int nweaker = 11;
-
- for( i=0; i<nlen; i++ )
- {
- mark[i] = ' ';
- for( j=0; j<nseq; j++ )
- if( '-' == seq[j][i] ) break;
- if( j != nseq )
- {
- continue;
- }
- for( j=0; j<nseq; j++ )
- if( toupper( seq[0][i] ) != toupper( seq[j][i] ) ) break;
- if( j == nseq )
- {
- mark[i] = '*';
- continue;
- }
- for( k=0; k<nstrong; k++ )
- {
- for( j=0; j<nseq; j++ )
- {
- if( !strchr( strong[k], toupper( seq[j][i] ) ) ) break;
- }
- if( j == nseq ) break;
- }
- if( k < nstrong )
- {
- mark[i] = ':';
- continue;
- }
- for( k=0; k<nweaker; k++ )
- {
- for( j=0; j<nseq; j++ )
- {
- if( !strchr( weaker[k], toupper( seq[j][i] ) ) ) break;
- }
- if( j == nseq ) break;
- }
- if( k < nweaker )
- {
- mark[i] = '.';
- continue;
- }
- }
- mark[nlen] = 0;
-}
-
-void setmark( int nlen, int nseq, char **seq, char *mark )
-{
- int i, j;
-
- for( i=0; i<nlen; i++ )
- {
- mark[i] = ' ';
- for( j=0; j<nseq; j++ )
- if( '-' == seq[j][i] ) break;
- if( j != nseq )
- {
- continue;
- }
- for( j=0; j<nseq; j++ )
- if( seq[0][i] != seq[j][i] ) break;
- if( j == nseq )
- {
- mark[i] = '*';
- continue;
- }
- for( j=0; j<nseq; j++ )
- if( amino_grp[(int)seq[0][i]] != amino_grp[(int)seq[j][i]] ) break;
- if( j == nseq )
- {
- mark[i] = '.';
- continue;
- }
- }
- mark[nlen] = 0;
-}
-
-void arguments( int argc, char *argv[] )
-{
- int c;
- namelen = 15;
- scoremtx = 1;
- nblosum = 62;
- dorp = NOTSPECIFIED;
- kimuraR = NOTSPECIFIED;
- pamN = NOTSPECIFIED;
- inputfile = NULL;
- comment = NULL;
- orderfile = NULL;
- format = 'c';
-
- while( --argc > 0 && (*++argv)[0] == '-' )
- {
- while ( (c = *++argv[0]) )
- {
- switch( c )
- {
- case 'i':
- inputfile = *++argv;
- fprintf( stderr, "inputfile = %s\n", inputfile );
- --argc;
- goto nextoption;
- case 'c':
- comment = *++argv;
- fprintf( stderr, "comment = %s\n", comment );
- --argc;
- goto nextoption;
- case 'r':
- orderfile = *++argv;
- fprintf( stderr, "orderfile = %s\n", orderfile );
- --argc;
- goto nextoption;
- case 'n':
- namelen = atoi( *++argv );
- fprintf( stderr, "namelen = %d\n", namelen );
- --argc;
- goto nextoption;
- case 'f':
- format = 'f';
- break;
- case 'y':
- format = 'y';
- 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[] )
-{
- static int *nlen;
- static char **name, **seq, *mark;
- static int *order;
- int i;
- FILE *infp;
- FILE *orderfp;
- char gett[B];
- int nlenmin;
-
- arguments( argc, argv );
-
-
- if( inputfile )
- {
- infp = fopen( inputfile, "r" );
- if( !infp )
- {
- fprintf( stderr, "Cannot open %s\n", inputfile );
- exit( 1 );
- }
- }
- else
- infp = stdin;
-
- getnumlen_casepreserve( infp, &nlenmin );
- rewind( infp );
-
- seq = AllocateCharMtx( njob, nlenmax*2+1 );
- mark = AllocateCharVec( nlenmax*2+1 );
- order = AllocateIntVec( njob );
- name = AllocateCharMtx( njob, B+1 );
- nlen = AllocateIntVec( njob );
-
-
- if( orderfile )
- {
- orderfp = fopen( orderfile, "r" );
- if( !orderfile )
- {
- fprintf( stderr, "Cannot open %s\n", orderfile );
- exit( 1 );
- }
- for( i=0; i<njob; i++ )
- {
- fgets( gett, B-1, orderfp );
- order[i] = atoi( gett );
- }
- fclose( orderfp );
- }
- else
- {
- for( i=0; i<njob; i++ ) order[i] = i;
- }
-
- readData_pointer_casepreserve( infp, name, nlen, seq );
- fclose( infp );
-
- if( format == 'c' || format == 'y' ) for( i=0; i<njob; i++ ) fillspace( seq[i], nlenmax );
- constants( njob, seq );
-
-// initSignalSM();
-
-// initFiles();
-
-
-
-// setmark( nlenmax, njob, seq, mark );
- setmark_clustal( nlenmax, njob, seq, mark );
-
- if( format == 'f' )
- writeData_reorder_pointer( stdout, njob, name, nlen, seq, order );
- else if( format == 'c' )
- clustalout_pointer( stdout, njob, nlenmax, seq, name, mark, comment, order, namelen );
- else if( format == 'y' )
- phylipout_pointer( stdout, njob, nlenmax, seq, name, order );
- else
- fprintf( stderr, "Unknown format\n" );
-
-// SHOWVERSION;
- return( 0 );
-}