Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / mafft / core / score.c
diff --git a/website/archive/binaries/mac/src/mafft/core/score.c b/website/archive/binaries/mac/src/mafft/core/score.c
new file mode 100644 (file)
index 0000000..1906cdb
--- /dev/null
@@ -0,0 +1,96 @@
+#include "mltaln.h"
+
+#define DEBUG 0
+
+void arguments( int argc, char *argv[] )
+{
+    int c;
+
+       ppenalty = NOTSPECIFIED;
+       ppenalty_ex = NOTSPECIFIED;
+       poffset = NOTSPECIFIED;
+       kimuraR = NOTSPECIFIED;
+       pamN = NOTSPECIFIED;
+       scoremtx = NOTSPECIFIED;
+
+    while( --argc > 0 && (*++argv)[0] == '-' )
+       {
+        while ( ( c = *++argv[0] ) )
+               {
+            switch( c )
+            {
+                               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 'D':
+                                       scoremtx = -1;
+                                       break;
+                               case 'P':
+                                       scoremtx = 0;
+                                       break;
+                default:
+                    fprintf( stderr, "illegal option %c\n", c );
+                    argc = 0;
+                    break;
+            }
+               }
+               nextoption:
+                       ;
+       }
+    if( argc == 1 )
+    {
+        cut = atof( (*argv) );
+        argc--;
+    }
+}
+
+
+int main( int ac, char **av )
+{
+       int nlen[M];
+       static char name[M][B], **seq;
+       double score;
+       extern double score_calc_for_score( int, char ** );
+
+       arguments( ac, av );
+
+       getnumlen( stdin );
+       rewind( stdin );
+
+       seq = AllocateCharMtx( njob, nlenmax );
+
+       readData( stdin, name, nlen, seq );
+
+       if( !isaligned( njob, seq ) ) ErrorExit( "Not aligned." );
+
+       constants( njob, seq );
+
+       score = score_calc_for_score( njob, seq );
+       if( scoremtx == 0 ) score += offset;
+
+       fprintf( stdout, "score = %f\n", score );
+       if     ( scoremtx ==  0 ) fprintf( stdout, "JTT %dPAM\n", pamN );
+       else if( scoremtx ==  1 ) fprintf( stdout, "Dayhoff( machigai ga aru )\n" );
+       else if( scoremtx ==  2 ) fprintf( stdout, "M-Y\n" );
+       else if( scoremtx == -1 ) fprintf( stdout, "DNA 1:%d\n", kimuraR );
+
+       fprintf( stdout, "gap penalty = %+6.2f, %+6.2f, %+6.2f\n", (double)ppenalty/1000, (double)ppenalty_ex/1000, (double)poffset/1000 );
+       exit( 0 );
+}