[Bio] / FigKernelScripts / translate_fasta.c Repository:
ViewVC logotype

Annotation of /FigKernelScripts/translate_fasta.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : golsen 1.1 /*
2 :     * translate_fasta.c
3 :     *
4 :     * Usage: translate_fasta [options] < fasta > fasta
5 :     *
6 :     * Options:
7 :     *
8 :     * -f // Flush the output after every sequence
9 :     * -g NCBI_code_number // Translate using given NCBI genetic code (D = 1)
10 :     * -m // Start protein with Met
11 :     * -v // Print version to standard output and exit
12 :     *
13 :     * cc -O3 -o translate_fasta translate_fasta.c
14 :     *
15 :     * Versions:
16 :     *
17 :     * 1.00 - Unnumbered first release
18 :     *
19 :     * 1.01 - Add -f, -g, -m and -v flags
20 :     */
21 :    
22 :     #include <stdio.h>
23 :     #include <stdlib.h> // atoi
24 :    
25 :     #include "gjoseqlib.h"
26 :     #include "gjoseqio.h"
27 :     #include "gjoseqlib.c"
28 :     #include "gjoseqio.c"
29 :    
30 :     #define VERSION "1.01"
31 :    
32 :     void usage( char * command );
33 :    
34 :    
35 :     int main( int argc, char ** argv )
36 :     {
37 :     seq_t *entry, *xlation;
38 :     int flush = 0;
39 :     int met = 0;
40 :     int NCBI_code = 1;
41 :     int i;
42 :    
43 :     /* Read command flags */
44 :    
45 :     i = 1;
46 :     while ( ( i < argc ) && ( argv[i][0] == '-' ) )
47 :     {
48 :     if ( argv[i][1] == 'f' )
49 :     {
50 :     flush = 1;
51 :     }
52 :     else if ( argv[i][1] == 'g' )
53 :     {
54 :     if ( argv[i][2] ) { argv[i] += 2; }
55 :     else if ( ++i >= argc )
56 :     {
57 :     fprintf( stderr, "Missing genetic code number after -g\n" );
58 :     usage( argv[0] );
59 :     return 1;
60 :     }
61 :     NCBI_code = atoi( argv[i] );
62 :    
63 :     // NCODES (defined in gjoseqlib.c) includes a code number zero
64 :     // Invalid codes between 1 and 23 (e.g., 7 and 20) default to 1.
65 :     if ( NCBI_code <= 0 || NCBI_code > NCODES-1 )
66 :     {
67 :     fprintf( stderr, "Bad genetic code number '%s'.\n", argv[i] );
68 :     fprintf( stderr, "Allowed values are 1 to %d.\n", NCODES-1 );
69 :     usage( argv[0] );
70 :     return 2;
71 :     }
72 :     }
73 :     else if ( argv[i][1] == 'm' )
74 :     {
75 :     met = 1;
76 :     }
77 :     else if ( argv[i][1] == 'v' )
78 :     {
79 :     printf( "%s\n", VERSION );
80 :     return 0;
81 :     }
82 :     else
83 :     {
84 :     fprintf( stderr, "Bad flag '%s'.\n", argv[i] );
85 :     usage( argv[0] );
86 :     return 3;
87 :     }
88 :    
89 :     i++;
90 :     }
91 :    
92 :     while ( ( entry = read_next_fasta( stdin ) ) )
93 :     {
94 :     if ( ( xlation = translate_entry_with_code( entry, met, NCBI_code ) ) )
95 :     {
96 :     write_fasta_entry( stdout, xlation );
97 :     if ( flush ) fflush( stdout );
98 :     free_sequence( xlation );
99 :     }
100 :     free_sequence( entry );
101 :     }
102 :    
103 :     return( 0 );
104 :     }
105 :    
106 :    
107 :     /*-----------------------------------------------------------------------------
108 :     * Usage statement:
109 :     *
110 :     * void usage( char * command )
111 :     *
112 :     *-----------------------------------------------------------------------------
113 :     */
114 :    
115 :     void usage( char * command )
116 :     {
117 :     fprintf( stderr, "\n" );
118 :     fprintf( stderr, "Usage: %s [options] < fasta > fasta\n", command );
119 :     fprintf( stderr, "\n" );
120 :     fprintf( stderr, "Options:\n\n" );
121 :     fprintf( stderr, "\n" );
122 :     fprintf( stderr, " -f // Flush the output stream after every sequence\n" );
123 :     fprintf( stderr, " -g NCBI_code_number // Translate using given NCBI genetic code (D = 1)\n" );
124 :     fprintf( stderr, " -m // Start all translations with Met\n" );
125 :     fprintf( stderr, " -v // Print version to standard output and exit\n" );
126 :     fprintf( stderr, "\n" );
127 :    
128 :     return;
129 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3