static TLS int n;
for( ; *seq; result++ )
{
- n = amino_n[(int)*seq++];
+ n = amino_n[(unsigned char)*seq++];
if( n < 20 && n >= 0 ) result->R += incr * score[n];
#if 0
fprintf( stderr, "n=%d, score=%f, inc=%f R=%f\n",n, score[n], incr * score[n], result->R );
int n;
for( i=0; *seq; i++ )
{
- n = amino_n[(int)*seq++];
+ n = amino_n[(unsigned char)*seq++];
if( n < n20or4or2 && n >= 0 ) result[n][i].R += incr;
}
}
}
-float Falign_localhom( char **seq1, char **seq2,
+double Falign_localhom( int **whichmtx, double ***scoringmatrices, double **n_dynamicmtx,
+ char **seq1, char **seq2,
double *eff1, double *eff2,
+ double **eff1s, double **eff2s,
int clus1, int clus2,
int alloclen,
- LocalHom ***localhom, float *totalimpmatch,
+ LocalHom ***localhom, double *totalimpmatch,
int *gapmap1, int *gapmap2,
int *chudanpt, int chudanref, int *chudanres )
{
int count, count0;
int len1, len2;
int totallen;
- float totalscore;
- float impmatch;
+ double totalscore;
+ double impmatch;
extern Fukusosuu *AllocateFukusosuuVec();
extern Fukusosuu **AllocateFukusosuuMtx();
{
// fprintf( stderr, "Freeing localarrays in Falign\n" );
localalloclen = 0;
+ crossscoresize = 0;
mymergesort( 0, 0, NULL );
alignableReagion( 0, 0, NULL, NULL, NULL, NULL, NULL );
fft( 0, NULL, 1 );
- A__align( NULL, NULL, NULL, NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0 );
- G__align11( NULL, NULL, 0, 0, 0 );
+// A__align( NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, -1, -1 ); // iru?
+ G__align11( NULL, NULL, NULL, 0, 0, 0 );
partA__align( NULL, NULL, NULL, NULL, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL );
+ partA__align_variousdist( NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL );
blockAlign2( NULL, NULL, NULL, NULL, NULL, NULL );
if( crossscore ) FreeDoubleMtx( crossscore );
FreeCharMtx( result1 );
case( 'a' ):
totalscore += Aalign( tmpres1, tmpres2, eff1, eff2, clus1, clus2, alloclen );
break;
- case( 'Q' ):
- totalscore += partQ__align( tmpres1, tmpres2, eff1, eff2, clus1, clus2, alloclen, localhom, &impmatch, cut1[i], cut1[i+1]-1, cut2[i], cut2[i+1]-1, gapmap1, gapmap2, sgap1, sgap2, egap1, egap2 );
- *totalimpmatch += impmatch;
-// fprintf( stderr, "*totalimpmatch in Falign_localhom = %f\n", *totalimpmatch );
- break;
case( 'A' ):
- totalscore += partA__align( tmpres1, tmpres2, eff1, eff2, clus1, clus2, alloclen, localhom, &impmatch, cut1[i], cut1[i+1]-1, cut2[i], cut2[i+1]-1, gapmap1, gapmap2, sgap1, sgap2, egap1, egap2, chudanpt, chudanref, chudanres );
+ if( scoringmatrices ) // called by tditeration.c
+ {
+ totalscore += partA__align_variousdist( whichmtx, scoringmatrices, NULL, tmpres1, tmpres2, eff1, eff2, eff1s, eff2s, clus1, clus2, alloclen, localhom, &impmatch, cut1[i], cut1[i+1]-1, cut2[i], cut2[i+1]-1, gapmap1, gapmap2, sgap1, sgap2, egap1, egap2, chudanpt, chudanref, chudanres );
+ }
+ else
+ totalscore += partA__align( tmpres1, tmpres2, eff1, eff2, clus1, clus2, alloclen, localhom, &impmatch, cut1[i], cut1[i+1]-1, cut2[i], cut2[i+1]-1, gapmap1, gapmap2, sgap1, sgap2, egap1, egap2, chudanpt, chudanref, chudanres );
*totalimpmatch += impmatch;
// fprintf( stderr, "*totalimpmatch in Falign_localhom = %f\n", *totalimpmatch );