X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=website%2Farchive%2Fbinaries%2Fmac%2Fsrc%2Fmafft%2Fcore%2Fdndpre.c;fp=website%2Farchive%2Fbinaries%2Fmac%2Fsrc%2Fmafft%2Fcore%2Fdndpre.c;h=c0be891f087de6341dc1d2698daaa45e0076dbc4;hb=dbde3fb6f00b9bb770343631a517c0e599db8528;hp=0000000000000000000000000000000000000000;hpb=85f830bbd51a7277994bd4233141016304e210c9;p=jabaws.git diff --git a/website/archive/binaries/mac/src/mafft/core/dndpre.c b/website/archive/binaries/mac/src/mafft/core/dndpre.c new file mode 100644 index 0000000..c0be891 --- /dev/null +++ b/website/archive/binaries/mac/src/mafft/core/dndpre.c @@ -0,0 +1,277 @@ +#include "mltaln.h" + +#define TEST 0 + +static int treeout = 0; + +#ifdef enablemultithread +typedef struct _jobtable +{ + int i; + int j; +} Jobtable; + +typedef struct _thread_arg +{ + int njob; + int thread_no; + float *selfscore; + double **mtx; + char **seq; + Jobtable *jobpospt; + pthread_mutex_t *mutex; +} thread_arg_t; + +void *athread( void *arg ) +{ + thread_arg_t *targ = (thread_arg_t *)arg; + int njob = targ->njob; + int thread_no = targ->thread_no; + float *selfscore = targ->selfscore; + double **mtx = targ->mtx; + char **seq = targ->seq; + Jobtable *jobpospt = targ->jobpospt; + + int i, j; + float ssi, ssj, bunbo; + + while( 1 ) + { + pthread_mutex_lock( targ->mutex ); + j = jobpospt->j; + i = jobpospt->i; + j++; + if( j == njob ) + { + fprintf( stderr, "%4d/%4d (thread %4d), dndpre\r", i+1, njob, thread_no ); + i++; + j = i + 1; + if( i == njob-1 ) + { + pthread_mutex_unlock( targ->mutex ); + return( NULL ); + } + } + jobpospt->j = j; + jobpospt->i = i; + pthread_mutex_unlock( targ->mutex ); + + ssi = selfscore[i]; + ssj = selfscore[j]; + + bunbo = MIN( ssi, ssj ); + if( bunbo == 0.0 ) + mtx[i][j] = 1.0; + else + mtx[i][j] = 1.0 - (double)naivepairscore11( seq[i], seq[j], penalty ) / bunbo; + } +} + +#endif + +void arguments( int argc, char *argv[] ) +{ + int c; + + nthread = 1; + alg = 'X'; + fmodel = 0; + treeout = 0; + scoremtx = 1; + nblosum = 62; + dorp = NOTSPECIFIED; + inputfile = NULL; + ppenalty = NOTSPECIFIED; //? + ppenalty_ex = NOTSPECIFIED; //? + poffset = NOTSPECIFIED; //? + kimuraR = NOTSPECIFIED; + pamN = NOTSPECIFIED; + + while( --argc > 0 && (*++argv)[0] == '-' ) + { + while ( (c = *++argv[0]) ) + { + switch( c ) + { + case 't': + treeout = '1'; + break; + case 'D': + dorp = 'd'; + break; + case 'a': + fmodel = 1; + break; + case 'P': + dorp = 'p'; + break; + case 'i': + inputfile = *++argv; + fprintf( stderr, "inputfile = %s\n", inputfile ); + --argc; + goto nextoption; + case 'C': + nthread = atoi( *++argv ); + fprintf( stderr, "nthread = %d\n", nthread ); + --argc; + goto nextoption; + } + } + nextoption: + ; + } + if( argc != 0 ) + { + fprintf( stderr, "options: Check source file !\n" ); + exit( 1 ); + } +} + +int main( int argc, char **argv ) +{ + int i, j; + char **seq; + static char **name; + static int nlen[M]; + float *selfscore; + double **mtx; + FILE *fp; + FILE *infp; + float ssi, ssj, bunbo; + + + arguments( argc, argv ); +#ifndef enablemultithread + nthread = 0; +#endif + + if( inputfile ) + { + infp = fopen( inputfile, "r" ); + if( !infp ) + { + fprintf( stderr, "Cannot open %s\n", inputfile ); + exit( 1 ); + } + } + else + infp = stdin; + +#if 0 + PreRead( stdin, &njob, &nlenmax ); +#else + getnumlen( infp ); +#endif + rewind( infp ); + + seq = AllocateCharMtx( njob, nlenmax+1 ); + name = AllocateCharMtx( njob, B+1 ); + mtx = AllocateDoubleMtx( njob, njob ); + selfscore = AllocateFloatVec( njob ); + +#if 0 + FRead( stdin, name, nlen, seq ); +#else + readData_pointer( infp, name, nlen, seq ); +#endif + fclose( infp ); + + constants( njob, seq ); + +#if 0 + for( i=0; i 0 ) + { + thread_arg_t *targ; + Jobtable jobpos; + pthread_t *handle; + pthread_mutex_t mutex; + + jobpos.i = 0; + jobpos.j = 0; + + targ = calloc( nthread, sizeof( thread_arg_t ) ); + handle = calloc( nthread, sizeof( pthread_t ) ); + pthread_mutex_init( &mutex, NULL ); + + for( i=0; i