Mercurial > repos > nick > duplex
diff mafft/core/setdirection.c @ 18:e4d75f9efb90 draft
planemo upload commit b'4303231da9e48b2719b4429a29b72421d24310f4\n'-dirty
author | nick |
---|---|
date | Thu, 02 Feb 2017 18:44:31 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mafft/core/setdirection.c Thu Feb 02 18:44:31 2017 -0500 @@ -0,0 +1,155 @@ +#include "mltaln.h" + +#define DEBUG 0 + +char *directionfile; +static int show_R_ = 1; + +void arguments( int argc, char *argv[] ) +{ + int c; + + inputfile = NULL; + directionfile = NULL; + 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 '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; + + arguments( argc, argv ); + + 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 ); + + readData_pointer_casepreserve( infp, name, nlen, seq ); + + for( i=0; i<njob; i++ ) + { + fgets( line, 99, difp ); + if( line[0] != '_' ) + { + fprintf( stderr, "Format error!\n" ); + exit( 1 ); + } + if( line[1] == 'R' ) + { + sreverse( tmpseq, seq[i] ); + strcpy( seq[i], tmpseq ); + + strncpy( tmpseq, name[i]+1, B-3 ); + tmpseq[B-3] = 0; + if( show_R_ ) + { + strcpy( name[i]+1, "_R_" ); + strcpy( name[i]+4, tmpseq ); + } + else + { + strcpy( name[i]+1, tmpseq ); + } + } + else if( line[1] == 'F' ) + { + ; + } + else + { + fprintf( stderr, "Format error!\n" ); + exit( 1 ); + } + } + + + for( i=0; i<njob; i++ ) + { + fprintf( stdout, ">%s\n", name[i]+1 ); + fprintf( stdout, "%s\n", seq[i] ); + } + + free( nlen ); + FreeCharMtx( seq ); + FreeCharMtx( name ); + free( tmpseq ); + + return( 0 ); +}