diff mafft/core/score.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/score.c	Thu Feb 02 18:44:31 2017 -0500
@@ -0,0 +1,98 @@
+#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 = myatoi( *++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;
+	static char **name, **seq;
+	double score;
+	extern double score_calc_for_score( int, char ** );
+
+	arguments( ac, av );
+
+	getnumlen( stdin );
+	rewind( stdin );
+
+	nlen = AllocateIntVec( njob );
+	name = AllocateCharMtx( njob, B+1 );
+	seq = AllocateCharMtx( njob, nlenmax+2 );
+
+	readData_pointer( 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 );
+}