static void pairalign( char **name, int nlen[M], char **seq, double *effarr, int alloclen ) { FILE *tmpfp; static char dumm1[B], dumm0[B]; int i, j; char *res; FILE *hat3p; static double *effarr1 = NULL; static double *effarr2 = NULL; static char **pseq; LocalHom **localhomtable, *tmpptr; float pscore = 0.0; // by D.Mathog, aguess char *aseq = NULL; // by D.Mathog char **usedseqs = NULL; // by D.Mathog char **usednames = NULL; // by D.Mathog int nused; double tsuyosa; tsuyosa = (double)nhomologs * (nhomologs-1) / njob * TSUYOSAFACTOR; fprintf( stderr, "tsuyosa = %f\n", tsuyosa ); localhomtable = (LocalHom **)calloc( njob, sizeof( LocalHom *) ); for( i=0; i<njob; i++) { localhomtable[i] = (LocalHom *)calloc( njob, sizeof( LocalHom ) ); for( j=0; j<njob; j++) { localhomtable[i][j].start1 = -1; localhomtable[i][j].end1 = -1; localhomtable[i][j].start2 = -1; localhomtable[i][j].end2 = -1; localhomtable[i][j].opt = -1.0; localhomtable[i][j].next = NULL; } } if( effarr1 == NULL ) { effarr1 = AllocateDoubleVec( njob ); effarr2 = AllocateDoubleVec( njob ); pseq = AllocateCharMtx( 2, nlenmax*9+1 ); aseq = AllocateCharVec( nlenmax*9+1 ); usedseqs = AllocateCharMtx( njob, nlenmax*9+1 ); usednames = AllocateCharMtx( njob, B ); #if 0 #else #endif } #if 0 fprintf( stderr, "##### fftwinsize = %d, fftthreshold = %d\n", fftWinSize, fftThreshold ); #endif #if 0 for( i=0; i<njob; i++ ) fprintf( stderr, "TBFAST effarr[%d] = %f\n", i, effarr[i] ); #endif // writePre( njob, name, nlen, aseq, 0 ); fprintf( stderr, "opening %s\n", pairfile ); tmpfp = fopen( pairfile, "r" ); if( !tmpfp ) { fprintf( stderr, "Cannot open %s\n", pairfile ); exit( 1 ); } searchKUorWA( tmpfp ); hat3p = fopen( "hat3", "w" ); if( !hat3p ) ErrorExit( "Cannot open hat3." ); nused = 0; while( 1 ) { res = fgets( dumm0, B-1, tmpfp ); strip( dumm0 ); if( res == NULL ) { break; } load1SeqWithoutName_new( tmpfp, pseq[0] ); gappick0( aseq, pseq[0] ); i = searchused( aseq, usedseqs, nused ); if( i == -1 ) { strcpy( usednames[nused], dumm0+1 ); strcpy( usedseqs[nused], aseq ); i = nused; nused++; } fprintf( stderr, "i = %d\n", i ); res = fgets( dumm1, B-1, tmpfp ); strip( dumm1 ); if( res == NULL ) { fprintf( stderr, "ERROR: The number of sequences in %s must be even.\n", pairfile ); exit( 1 ); } load1SeqWithoutName_new( tmpfp, pseq[1] ); gappick0( aseq, pseq[1] ); j = searchused( aseq, usedseqs, nused ); if( j == -1 ) { strcpy( usednames[nused], dumm1+1 ); strcpy( usedseqs[nused], aseq ); j = nused; nused++; } fprintf( stderr, "j = %d\n", j ); if( strlen( pseq[0] ) != strlen( pseq[1] ) ) { fprintf( stderr, "Not aligned, %s - %s\n", dumm0, dumm1 ); exit( 1 ); } fprintf( stderr, "adding %d-%d\n", i, j ); putlocalhom2( pseq[0], pseq[1], localhomtable[i]+j, 0, 0, (int)pscore, strlen( pseq[0] ) ); for( tmpptr=localhomtable[i]+j; tmpptr; tmpptr=tmpptr->next ) { if( tmpptr->opt == -1.0 ) continue; fprintf( hat3p, "%d %d %d %6.3f %d %d %d %d %p\n", i, j, tmpptr->overlapaa, tmpptr->opt * tsuyosa, tmpptr->start1, tmpptr->end1, tmpptr->start2, tmpptr->end2, (void *)tmpptr->next ); } } fclose( tmpfp ); fclose( hat3p ); for( i=0; i<nused; i++ ) fprintf( stdout, ">%s\n%s\n", usednames[i], usedseqs[i] ); #if 0 fprintf( stderr, "##### writing hat3\n" ); hat3p = fopen( "hat3", "w" ); if( !hat3p ) ErrorExit( "Cannot open hat3." ); ilim = njob-1; for( i=0; i<ilim; i++ ) { for( j=i+1; j<njob; j++ ) { for( tmpptr=localhomtable[i]+j; tmpptr; tmpptr=tmpptr->next ) { if( tmpptr->opt == -1.0 ) continue; fprintf( hat3p, "%d %d %d %6.3f %d %d %d %d %p\n", i, j, tmpptr->overlapaa, tmpptr->opt * tsuyosa, tmpptr->start1, tmpptr->end1, tmpptr->start2, tmpptr->end2, tmpptr->next ); } } } fclose( hat3p ); #endif #if DEBUG fprintf( stderr, "calling FreeLocalHomTable\n" ); #endif FreeLocalHomTable( localhomtable, njob ); #if DEBUG fprintf( stderr, "done. FreeLocalHomTable\n" ); #endif }
static void pairalign( char name[M][B], int nlen[M], char **seq, char **aseq, char **mseq1, char **mseq2, double *equiv, double *effarr, char **strfiles, char **chainids, int alloclen ) { int i, j, ilim; int clus1, clus2; int off1, off2; float pscore = 0.0; // by D.Mathog static char *indication1, *indication2; FILE *hat2p, *hat3p; static double **distancemtx; static double *effarr1 = NULL; static double *effarr2 = NULL; char *pt; char *hat2file = "hat2"; LocalHom **localhomtable, *tmpptr; static char **pair; // int intdum; double bunbo; char **checkseq; localhomtable = (LocalHom **)calloc( njob, sizeof( LocalHom *) ); for( i=0; i<njob; i++) { localhomtable[i] = (LocalHom *)calloc( njob, sizeof( LocalHom ) ); for( j=0; j<njob; j++) { localhomtable[i][j].start1 = -1; localhomtable[i][j].end1 = -1; localhomtable[i][j].start2 = -1; localhomtable[i][j].end2 = -1; localhomtable[i][j].opt = -1.0; localhomtable[i][j].next = NULL; localhomtable[i][j].nokori = 0; } } if( effarr1 == NULL ) { distancemtx = AllocateDoubleMtx( njob, njob ); effarr1 = AllocateDoubleVec( njob ); effarr2 = AllocateDoubleVec( njob ); indication1 = AllocateCharVec( 150 ); indication2 = AllocateCharVec( 150 ); checkseq = AllocateCharMtx( njob, alloclen ); #if 0 #else pair = AllocateCharMtx( njob, njob ); #endif } #if 0 fprintf( stderr, "##### fftwinsize = %d, fftthreshold = %d\n", fftWinSize, fftThreshold ); #endif #if 0 for( i=0; i<njob; i++ ) fprintf( stderr, "TBFAST effarr[%d] = %f\n", i, effarr[i] ); #endif // writePre( njob, name, nlen, aseq, 0 ); for( i=0; i<njob; i++ ) for( j=0; j<njob; j++ ) pair[i][j] = 0; for( i=0; i<njob; i++ ) pair[i][i] = 1; for( i=0; i<njob; i++ ) { strcpy( checkseq[i], seq[i] ); // fprintf( stderr, "checkseq[%d] = %s\n", i, checkseq[i] ); } ilim = njob - 1; for( i=0; i<ilim; i++ ) { fprintf( stderr, "% 5d / %d\r", i, njob ); for( j=i+1; j<njob; j++ ) { #if 0 if( strlen( seq[i] ) == 0 || strlen( seq[j] ) == 0 ) { distancemtx[i][j] = pscore; continue; } #endif strcpy( aseq[i], seq[i] ); strcpy( aseq[j], seq[j] ); clus1 = conjuctionfortbfast( pair, i, aseq, mseq1, effarr1, effarr, indication1 ); clus2 = conjuctionfortbfast( pair, j, aseq, mseq2, effarr2, effarr, indication2 ); // fprintf( stderr, "mseq1 = %s\n", mseq1[0] ); // fprintf( stderr, "mseq2 = %s\n", mseq2[0] ); #if 0 fprintf( stderr, "group1 = %.66s", indication1 ); fprintf( stderr, "\n" ); fprintf( stderr, "group2 = %.66s", indication2 ); fprintf( stderr, "\n" ); #endif // for( l=0; l<clus1; l++ ) fprintf( stderr, "## STEP-eff for mseq1-%d %f\n", l, effarr1[l] ); #if 1 { switch( alg ) { case( 'T' ): fprintf( stderr, " Calling tmalign %d-%d/%d \r", i+1, j+1, njob ); pscore = calltmalign( mseq1, mseq2, equiv, strfiles[i], chainids[i], strfiles[j], chainids[j], alloclen ); off1 = off2 = 0; break; case( 'R' ): fprintf( stderr, " Calling PDP_ASH.pl %d-%d/%d \r", i+1, j+1, njob ); pscore = callrash( i, j, mseq1, mseq2, equiv, strfiles[i], chainids[i], strfiles[j], chainids[j], alloclen ); off1 = off2 = 0; break; ErrorExit( "ERROR IN SOURCE FILE" ); } } #endif distancemtx[i][j] = pscore; #if SCOREOUT fprintf( stderr, "score = %10.2f (%d,%d)\n", pscore, i, j ); #endif putlocalhom_str( mseq1[0], mseq2[0], equiv, scale, localhomtable[i]+j, off1, off2, (int)pscore, strlen( mseq1[0] ) ); #if 1 if( alreadyoutput[i] == 0 ) { alreadyoutput[i] = 1; gappick0( seq[i], mseq1[0] ); fprintf( stdout, ">%d_%s-%s\n%s\n", i+1, strfiles[i], chainids[i], seq[i] ); strcpy( checkseq[i], seq[i] ); } else { gappick0( seq[i], mseq1[0] ); fprintf( stderr, "checking seq%d\n", i ); // fprintf( stderr, " seq=%s\n", seq[i] ); // fprintf( stderr, "checkseq=%s\n", checkseq[i] ); if( strcmp( checkseq[i], seq[i] ) ) { fprintf( stderr, "\n\nWARNING: Sequence changed!!\n" ); fprintf( stderr, "i=%d\n", i ); fprintf( stderr, " seq=%s\n", seq[i] ); fprintf( stderr, "checkseq=%s\n", checkseq[i] ); exit( 1 ); } } if( alreadyoutput[j] == 0 ) { alreadyoutput[j] = 1; gappick0( seq[j], mseq2[0] ); fprintf( stdout, ">%d_%s-%s\n%s\n", j+1, strfiles[j], chainids[j], seq[j] ); strcpy( checkseq[j], seq[j] ); } else { gappick0( seq[j], mseq2[0] ); fprintf( stderr, "checking seq%d\n", j ); if( strcmp( checkseq[j], seq[j] ) ) { fprintf( stderr, "\n\nWARNING: Sequence changed!!\n" ); fprintf( stderr, "j=%d\n", j ); fprintf( stderr, " seq=%s\n", seq[j] ); fprintf( stderr, "checkseq=%s\n", checkseq[j] ); exit( 1 ); } } #endif } } for( i=0; i<njob; i++ ) { pscore = 0.0; for( pt=seq[i]; *pt; pt++ ) pscore += amino_dis[(int)*pt][(int)*pt]; distancemtx[i][i] = pscore; } ilim = njob-1; for( i=0; i<ilim; i++ ) { for( j=i+1; j<njob; j++ ) { bunbo = MIN( distancemtx[i][i], distancemtx[j][j] ); if( bunbo == 0.0 ) distancemtx[i][j] = 2.0; else distancemtx[i][j] = ( 1.0 - distancemtx[i][j] / bunbo ) * 2.0; } } hat2p = fopen( hat2file, "w" ); if( !hat2p ) ErrorExit( "Cannot open hat2." ); WriteHat2( hat2p, njob, name, distancemtx ); fclose( hat2p ); fprintf( stderr, "##### writing hat3\n" ); hat3p = fopen( "hat3", "w" ); if( !hat3p ) ErrorExit( "Cannot open hat3." ); ilim = njob-1; for( i=0; i<ilim; i++ ) { for( j=i+1; j<njob; j++ ) { for( tmpptr=localhomtable[i]+j; tmpptr; tmpptr=tmpptr->next ) { if( tmpptr->opt == -1.0 ) continue; fprintf( hat3p, "%d %d %d %7.5f %d %d %d %d k\n", i, j, tmpptr->overlapaa, tmpptr->opt, tmpptr->start1, tmpptr->end1, tmpptr->start2, tmpptr->end2 ); } } } fclose( hat3p ); #if DEBUG fprintf( stderr, "calling FreeLocalHomTable\n" ); #endif FreeLocalHomTable( localhomtable, njob ); #if DEBUG fprintf( stderr, "done. FreeLocalHomTable\n" ); #endif }
static void pairalign( char name[M][B], int nlen[M], char **seq, char **aseq, char **mseq1, char **mseq2, double *effarr, int alloclen ) { int i, j, ilim; int clus1, clus2; int off1, off2; float pscore = 0.0; // by D.Mathog static char *indication1, *indication2; FILE *hat2p, *hat3p; static double **distancemtx; static double *effarr1 = NULL; static double *effarr2 = NULL; char *pt; char *hat2file = "hat2"; LocalHom **localhomtable, *tmpptr; static char **pair; int intdum; double bunbo; localhomtable = (LocalHom **)calloc( njob, sizeof( LocalHom *) ); for( i=0; i<njob; i++) { localhomtable[i] = (LocalHom *)calloc( njob, sizeof( LocalHom ) ); for( j=0; j<njob; j++) { localhomtable[i][j].start1 = -1; localhomtable[i][j].end1 = -1; localhomtable[i][j].start2 = -1; localhomtable[i][j].end2 = -1; localhomtable[i][j].opt = -1.0; localhomtable[i][j].next = NULL; localhomtable[i][j].nokori = 0; } } if( effarr1 == NULL ) { distancemtx = AllocateDoubleMtx( njob, njob ); effarr1 = AllocateDoubleVec( njob ); effarr2 = AllocateDoubleVec( njob ); indication1 = AllocateCharVec( 150 ); indication2 = AllocateCharVec( 150 ); #if 0 #else pair = AllocateCharMtx( njob, njob ); #endif } #if 0 fprintf( stderr, "##### fftwinsize = %d, fftthreshold = %d\n", fftWinSize, fftThreshold ); #endif #if 0 for( i=0; i<njob; i++ ) fprintf( stderr, "TBFAST effarr[%d] = %f\n", i, effarr[i] ); #endif // writePre( njob, name, nlen, aseq, 0 ); for( i=0; i<njob; i++ ) for( j=0; j<njob; j++ ) pair[i][j] = 0; for( i=0; i<njob; i++ ) pair[i][i] = 1; if( alg == 'H' ) { fprintf( stderr, "Calling FOLDALIGN with option '%s'\n", foldalignopt ); callfoldalign( njob, seq ); fprintf( stderr, "done.\n" ); } if( alg == 'B' ) { fprintf( stderr, "Calling LARA\n" ); calllara( njob, seq, "" ); fprintf( stderr, "done.\n" ); } if( alg == 'T' ) { fprintf( stderr, "Calling SLARA\n" ); calllara( njob, seq, "-s" ); fprintf( stderr, "done.\n" ); } ilim = njob - 1; for( i=0; i<ilim; i++ ) { fprintf( stderr, "% 5d / %d\r", i, njob ); for( j=i+1; j<njob; j++ ) { if( strlen( seq[i] ) == 0 || strlen( seq[j] ) == 0 ) { distancemtx[i][j] = pscore; continue; } strcpy( aseq[i], seq[i] ); strcpy( aseq[j], seq[j] ); clus1 = conjuctionfortbfast( pair, i, aseq, mseq1, effarr1, effarr, indication1 ); clus2 = conjuctionfortbfast( pair, j, aseq, mseq2, effarr2, effarr, indication2 ); // fprintf( stderr, "mseq1 = %s\n", mseq1[0] ); // fprintf( stderr, "mseq2 = %s\n", mseq2[0] ); #if 0 fprintf( stderr, "group1 = %.66s", indication1 ); fprintf( stderr, "\n" ); fprintf( stderr, "group2 = %.66s", indication2 ); fprintf( stderr, "\n" ); #endif // for( l=0; l<clus1; l++ ) fprintf( stderr, "## STEP-eff for mseq1-%d %f\n", l, effarr1[l] ); #if 1 if( use_fft ) { pscore = Falign( mseq1, mseq2, effarr1, effarr2, clus1, clus2, alloclen, &intdum, NULL, 0, NULL ); off1 = off2 = 0; } else #endif { switch( alg ) { case( 'a' ): pscore = Aalign( mseq1, mseq2, effarr1, effarr2, clus1, clus2, alloclen ); off1 = off2 = 0; break; case( 'A' ): pscore = G__align11( mseq1, mseq2, alloclen, NULL, 0, NULL ); off1 = off2 = 0; break; #if 0 case( 'V' ): pscore = VAalign11( mseq1, mseq2, alloclen, &off1, &off2, localhomtable[i]+j ); fprintf( stderr, "i,j = %d,%d, score = %f\n", i,j, pscore ); break; case( 'S' ): fprintf( stderr, "aligning %d-%d\n", i, j ); pscore = suboptalign11( mseq1, mseq2, alloclen, &off1, &off2, localhomtable[i]+j ); fprintf( stderr, "i,j = %d,%d, score = %f\n", i,j, pscore ); break; #endif case( 'N' ): pscore = genL__align11( mseq1, mseq2, alloclen, &off1, &off2 ); // fprintf( stderr, "pscore = %f\n", pscore ); break; case( 'L' ): pscore = L__align11( mseq1, mseq2, alloclen, &off1, &off2 ); // fprintf( stderr, "pscore (1) = %f\n", pscore ); // pscore = (float)naivepairscore11( *mseq1, *mseq2, penalty ); // nennnotame // fprintf( stderr, "pscore (2) = %f\n\n", pscore ); break; case( 'H' ): pscore = recallpairfoldalign( mseq1, mseq2, i, j, &off1, &off2, alloclen ); break; case( 'B' ): case( 'T' ): pscore = recalllara( mseq1, mseq2, alloclen ); off1 = off2 = 0; // fprintf( stderr, "lara, pscore = %f\n", pscore ); break; case( 's' ): pscore = callmxscarna( mseq1, mseq2, alloclen ); off1 = off2 = 0; // fprintf( stderr, "scarna, pscore = %f\n", pscore ); break; case( 'M' ): // pscore = MSalign11( mseq1, mseq2, effarr1, effarr2, clus1, clus2, alloclen, NULL, NULL, NULL, NULL ); pscore = MSalign11( mseq1, mseq2, alloclen ); // fprintf( stderr, "pscore = %f\n", pscore ); break; ErrorExit( "ERROR IN SOURCE FILE" ); } } distancemtx[i][j] = pscore; #if SCOREOUT fprintf( stderr, "score = %10.2f (%d,%d)\n", pscore, i, j ); #endif // fprintf( stderr, "pslocal = %d\n", pslocal ); // offset = makelocal( *mseq1, *mseq2, pslocal ); #if 0 fprintf( stderr, "off1 = %d, off2 = %d\n", off1, off2 ); fprintf( stderr, ">%d\n%s\n>%d\n%s\n>\n", i, mseq1[0], j, mseq2[0] ); #endif // putlocalhom2( mseq1[0], mseq2[0], localhomtable[i]+j, countamino( *mseq1, off1 ), countamino( *mseq2, off2 ), pscore, strlen( mseq1[0] ) ); // fprintf( stderr, "pscore = %f\n", pscore ); if( alg == 'H' ) // if( alg == 'H' || alg == 's' || alg == 'B' ) // next version putlocalhom_ext( mseq1[0], mseq2[0], localhomtable[i]+j, off1, off2, (int)pscore, strlen( mseq1[0] ) ); else if( alg != 'S' && alg != 'V' ) putlocalhom2( mseq1[0], mseq2[0], localhomtable[i]+j, off1, off2, (int)pscore, strlen( mseq1[0] ) ); } } for( i=0; i<njob; i++ ) { pscore = 0.0; for( pt=seq[i]; *pt; pt++ ) pscore += amino_dis[(int)*pt][(int)*pt]; distancemtx[i][i] = pscore; } ilim = njob-1; for( i=0; i<ilim; i++ ) { for( j=i+1; j<njob; j++ ) { bunbo = MIN( distancemtx[i][i], distancemtx[j][j] ); if( bunbo == 0.0 ) distancemtx[i][j] = 2.0; else distancemtx[i][j] = ( 1.0 - distancemtx[i][j] / bunbo ) * 2.0; } } hat2p = fopen( hat2file, "w" ); if( !hat2p ) ErrorExit( "Cannot open hat2." ); WriteHat2( hat2p, njob, name, distancemtx ); fclose( hat2p ); fprintf( stderr, "##### writing hat3\n" ); hat3p = fopen( "hat3", "w" ); if( !hat3p ) ErrorExit( "Cannot open hat3." ); ilim = njob-1; for( i=0; i<ilim; i++ ) { for( j=i+1; j<njob; j++ ) { for( tmpptr=localhomtable[i]+j; tmpptr; tmpptr=tmpptr->next ) { if( tmpptr->opt == -1.0 ) continue; fprintf( hat3p, "%d %d %d %7.5f %d %d %d %d %p\n", i, j, tmpptr->overlapaa, tmpptr->opt, tmpptr->start1, tmpptr->end1, tmpptr->start2, tmpptr->end2, (void *)tmpptr->next ); } } } fclose( hat3p ); #if DEBUG fprintf( stderr, "calling FreeLocalHomTable\n" ); #endif FreeLocalHomTable( localhomtable, njob ); #if DEBUG fprintf( stderr, "done. FreeLocalHomTable\n" ); #endif }
static void pairalign( char name[M][B], int nlen[M], char **seq, double *effarr, int alloclen ) { int i, j; FILE *hat3p; float pscore = 0.0; // by D.Mathog static double *effarr1 = NULL; static double *effarr2 = NULL; char *aseq; static char **pseq; LocalHom **localhomtable, *tmpptr; double tsuyosa; if( nhomologs < 1 ) nhomologs = 1; // tsuyosa=0.0 wo sakeru tsuyosa = (double)nhomologs * nhomologs * TSUYOSAFACTOR; fprintf( stderr, "tsuyosa = %f\n", tsuyosa ); localhomtable = (LocalHom **)calloc( njob, sizeof( LocalHom *) ); for( i=0; i<njob; i++) { localhomtable[i] = (LocalHom *)calloc( njob, sizeof( LocalHom ) ); for( j=0; j<njob; j++) { localhomtable[i][j].start1 = -1; localhomtable[i][j].end1 = -1; localhomtable[i][j].start2 = -1; localhomtable[i][j].end2 = -1; localhomtable[i][j].opt = -1.0; localhomtable[i][j].next = NULL; } } if( effarr1 == NULL ) { effarr1 = AllocateDoubleVec( njob ); effarr2 = AllocateDoubleVec( njob ); pseq = AllocateCharMtx( 2, 0 ); aseq = AllocateCharVec( nlenmax*9+1 ); #if 0 #else #endif } #if 0 fprintf( stderr, "##### fftwinsize = %d, fftthreshold = %d\n", fftWinSize, fftThreshold ); #endif #if 0 for( i=0; i<njob; i++ ) fprintf( stderr, "TBFAST effarr[%d] = %f\n", i, effarr[i] ); #endif // writePre( njob, name, nlen, aseq, 0 ); hat3p = fopen( "hat3", "w" ); if( !hat3p ) ErrorExit( "Cannot open hat3." ); fprintf( stderr, "\n" ); for( i=0; i<njob-1; i++ ) { for( j=i+1; j<njob; j++ ) { pseq[0] = seq[i]; pseq[1] = seq[j]; if( strlen( pseq[0] ) != strlen( pseq[1] ) ) { fprintf( stderr, "## ERROR ###\n" ); fprintf( stderr, "Not aligned, %s - %s\n", name[i], name[j] ); fprintf( stderr, "## ERROR ###\n" ); exit( 1 ); } fprintf( stderr, "adding %d-%d\r", i, j ); putlocalhom2( pseq[0], pseq[1], localhomtable[i]+j, 0, 0, (int)pscore, strlen( pseq[0] ) ); for( tmpptr=localhomtable[i]+j; tmpptr; tmpptr=tmpptr->next ) { if( tmpptr->opt == -1.0 ) continue; if( tmpptr->start1 == -1 ) continue; fprintf( hat3p, "%d %d %d %6.3f %d %d %d %d k\n", i+seedoffset, j+seedoffset, tmpptr->overlapaa, tmpptr->opt * tsuyosa, tmpptr->start1, tmpptr->end1, tmpptr->start2, tmpptr->end2 ); } } } fprintf( stderr, "\n" ); fclose( hat3p ); #if DEBUG fprintf( stderr, "calling FreeLocalHomTable\n" ); #endif FreeLocalHomTable( localhomtable, njob ); #if DEBUG fprintf( stderr, "done. FreeLocalHomTable\n" ); #endif }