X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=website%2Farchive%2Fbinaries%2Fmac%2Fsrc%2Fmafft%2Fcore%2FMSalignmm.c.bkbk;fp=website%2Farchive%2Fbinaries%2Fmac%2Fsrc%2Fmafft%2Fcore%2FMSalignmm.c.bkbk;h=10621be00a936ec18b2b8773536b5eabe8d750c7;hb=dbde3fb6f00b9bb770343631a517c0e599db8528;hp=0000000000000000000000000000000000000000;hpb=85f830bbd51a7277994bd4233141016304e210c9;p=jabaws.git diff --git a/website/archive/binaries/mac/src/mafft/core/MSalignmm.c.bkbk b/website/archive/binaries/mac/src/mafft/core/MSalignmm.c.bkbk new file mode 100644 index 0000000..10621be --- /dev/null +++ b/website/archive/binaries/mac/src/mafft/core/MSalignmm.c.bkbk @@ -0,0 +1,1410 @@ +#include "mltaln.h" +#include "dp.h" + +#define DEBUG 0 +#define XXXXXXX 0 +#define USE_PENALTY_EX 0 +#define STOREWM 0 + +#define DPTANNI 10 + + +static reccycle = 0; + +static void OpeningGapCount( float *ogcp, int clus, char **seq, double *eff, int len ) +{ + int i, j, gc, gb; + float feff; + + for( i=0; i -1 ) + *fpt2 += scarr[*ipt++] * *fpt++; + fpt2++,iptpt++,fptpt++; + } + } +#else + for( j=0; j-1; k++ ) + match[j] += scarr[cpmxpdn[j][k]] * cpmxpd[j][k]; + } +#endif +} + +static float Atracking( + char **seq1, char **seq2, + char **mseq1, char **mseq2, + short **ijp, int icyc, int jcyc, + int ist, int ien, int jst, int jen ) +{ + int i, j, l, iin, jin, ifi, jfi, lgth1, lgth2, k, klim; + char gap[] = "-"; + float wm; + lgth1 = ien-ist+1; + lgth2 = jen-jst+1; + +#if 0 + for( i=0; i 0 ) + { + ifi = iin-ijp[iin][jin]; jfi = jin-1; + } + else + { + ifi = iin-1; jfi = jin-1; + } + l = iin - ifi; + while( --l ) + { + for( i=0; i", wm ); +#endif + g = mi + fpenalty * fgcp2[j-1]; +#if 0 + fprintf( stderr, "%5.0f?", g ); +#endif + if( g > wm ) + { + wm = g; + *ijppt = -( j - mpi ); + } + g = *prept + fpenalty * ogcp2[j]; + if( g >= mi ) + { + mi = g; + mpi = j-1; + } +#if USE_PENALTY_EX + mi += fpenalty_ex; +#endif + + g = *mjpt + fpenalty * fgcp1[i-1]; +#if 0 + fprintf( stderr, "%5.0f?", g ); +#endif + if( g > wm ) + { + wm = g; + *ijppt = +( i - *mpjpt ); + } + g = *prept + fpenalty * ogcp1[i]; + if( g >= *mjpt ) + { + *mjpt = g; + *mpjpt = i-1; + } +#if USE_PENALTY_EX + m[j] += fpenalty_ex; +#endif + +#if 0 + fprintf( stderr, "%5.0f ", wm ); +#endif + *curpt += wm; + + + ijppt++; + mjpt++; + prept++; + mpjpt++; + curpt++; + } + lastverticalw[i] = currentw[lgth2-1]; + } + +// fprintf( stderr, "wm = %f\n", wm ); + + Atracking( seq1, seq2, aseq1, aseq2, ijp, icyc, jcyc, ist, ien, jst, jen ); + + for( i=0; i", wm ); +#endif + g = mi + fpenalty * fgcp2[j-1]; +// g = mi + fpenalty; +#if 0 + fprintf( stderr, "%5.0f?", g ); +#endif + if( g > wm ) + { + wm = g; +// *ijppt = -( j - mpi ); + } + g = *prept + fpenalty * ogcp2[j]; +// g = *prept; + if( g >= mi ) + { + mi = g; + mpi = j-1; + } +#if USE_PENALTY_EX + mi += fpenalty_ex; +#endif + + g = *mjpt + fpenalty * fgcp1[i-1]; +// g = *mjpt + fpenalty; +#if 0 + fprintf( stderr, "%5.0f?", g ); +#endif + if( g > wm ) + { + wm = g; +// *ijppt = +( i - *mpjpt ); + } + + + g = *prept + fpenalty * ogcp1[i]; +// g = *prept; + if( g >= *mjpt ) + { + *mjpt = g; + *mpjpt = i-1; + } +#if USE_PENALTY_EX + m[j] += fpenalty_ex; +#endif + +#if 0 + fprintf( stderr, "%5.0f ", wm ); +#endif + *curpt += wm; + +#if STOREWM + WMMTX[i][j] = *curpt; + WMMTX2[i][j] = *mjpt; +#endif + + if( i == imid ) //muda + { + jumpbackj[j] = *mpjpt; // muda atode matomeru + jumpbacki[j] = mpi; // muda atode matomeru +// fprintf( stderr, "jumpbackj[%d] in forward dp is %d\n", j, *mpjpt ); +// fprintf( stderr, "jumpbacki[%d] in forward dp is %d\n", j, mpi ); + midw[j] = *curpt; + midm[j] = *mjpt; + midn[j] = mi; + } + + mjpt++; + prept++; + mpjpt++; + curpt++; + + } + lastverticalw[i] = currentw[lgth2-1]; +#if 0 // ue + if( i == imid ) + { + for( j=0; j0; --j ) + { + m[j-1] = currentw[j] + fpenalty * fgcp2[lgth2-2]; +// m[j-1] = currentw[j]; + mp[j] = lgth1-1; + } + +// for( j=0; j=imid; i-- ) + for( i=lgth1-2; i>-1; i-- ) + { + wtmp = previousw; + previousw = currentw; + currentw = wtmp; + previousw[lgth2-1] = initverticalw[i+1]; +// match_calc( currentw, seq1, seq2, i, lgth2 ); + match_calc( currentw, cpmx1+ist, cpmx2+jst, i, lgth2, floatwork, intwork, 0 ); + + currentw[lgth2-1] = initverticalw[i]; + + mi = previousw[lgth2-1] + fpenalty * fgcp2[lgth2-2]; +// mi = previousw[lgth2-1]; + mpi = lgth2 - 1; + + mjpt = m + lgth2 - 2; + prept = previousw + lgth2 - 1; + curpt = currentw + lgth2 - 2; + mpjpt = mp + lgth2 - 2; + + + for( j=lgth2-2; j>-1; j-- ) + { + wm = *prept; + ijpi = i+1; + ijpj = j+1; + + g = mi + fpenalty * ogcp2[j+1]; +// g = mi + fpenalty; + if( g > wm ) + { + wm = g; + ijpj = mpi; + } + + g = *prept + fpenalty * fgcp2[j]; +// g = *prept; + if( g >= mi ) + { +// fprintf( stderr, "i,j=%d,%d - renewed! mpi = %d\n", i, j, j+1 ); + mi = g; + mpi = j + 1; + } + +#if USE_PENALTY_EX + mi += fpenalty_ex; +#endif + +// fprintf( stderr, "i,j=%d,%d *mpjpt = %d\n", i, j, *mpjpt ); + g = *mjpt + fpenalty * ogcp1[i+1]; +// g = *mjpt + fpenalty; + if( g > wm ) + { + wm = g; + ijpi = *mpjpt; + } + +// if( i == imid )fprintf( stderr, "i,j=%d,%d \n", i, j ); + g = *prept + fpenalty * fgcp1[i]; +// g = *prept; + if( g >= *mjpt ) + { + *mjpt = g; + *mpjpt = i + 1; + } + +#if USE_PENALTY_EX + m[j] += fpenalty_ex; +#endif + + if( i == jumpi || i == imid - 1 ) + { + jumpforwi[j] = ijpi; //muda + jumpforwj[j] = ijpj; //muda +// fprintf( stderr, "jumpfori[%d] = %d\n", j, ijpi ); +// fprintf( stderr, "jumpforj[%d] = %d\n", j, ijpj ); + } + if( i == imid ) // muda + { + midw[j] += wm; +// midm[j+1] += *mjpt + fpenalty; //?????? + midm[j+1] += *mjpt; //?????? + } + if( i == imid - 1 ) + { +// midn[j] += mi + fpenalty; //???? + midn[j] += mi; //???? + } +#if STOREWM + WMMTX[i][j] += wm; +// WMMTX2[i][j+1] += *mjpt + fpenalty; + WMMTX2[i][j+1] += *mjpt; +#endif + *curpt += wm; + + mjpt--; + prept--; + mpjpt--; + curpt--; + } + + if( i == imid - 1 ) + { + maxwm = midw[1]; +// if( depth == 1 ) fprintf( stderr, "maxwm!! = %f\n", maxwm ); + for( j=2; j maxwm ) + { + jmid = j; + maxwm = wm; + jumpi = imid-1; + jumpj = jmid-1; + } +// if( depth == 1 ) fprintf( stderr, "maxwm!! = %f\n", maxwm ); + } + for( j=1; j maxwm ) + { + jmid = j; + maxwm = wm; + jumpi = jumpbackj[jmid]; + jumpj = jmid-1; + } +// if( depth == 1 ) fprintf( stderr, "maxwm!! = %f\n", maxwm ); + } + for( j=2; j maxwm ) + { + jmid = j-1; + maxwm = wm; + jumpi = imid-1; + jumpj = jumpbacki[jmid]; + } +// if( depth == 1 ) fprintf( stderr, "maxwm!! = %f\n", maxwm ); + } + + if( depth == 1 ) fprintf( stderr, "maxwm!! = %f\n", maxwm ); + +#if 0 + fprintf( stderr, "### imid=%d, jmid=%d\n", imid, jmid ); + wm = midw[jmid]; + jumpi = imid-1; + jumpj = jmid-1; + if( midn[jmid-1] > wm ) + { + jumpi = imid-1; + jumpj = jumpbacki[jmid]; + wm = midn[jmid-1]; + fprintf( stderr, "rejump (n)\n" ); + } + if( midm[jmid] > wm ) + { + jumpi = jumpbackj[jmid]; + jumpj = jmid-1; + wm = midm[jmid]; + fprintf( stderr, "rejump (m) jumpi=%d\n", jumpi ); + } +#endif + + fprintf( stderr, "--> imid=%d, jmid=%d\n", imid, jmid ); + fprintf( stderr, "--> jumpi=%d, jumpj=%d\n", jumpi, jumpj ); +#if STOREWM + fprintf( stderr, "imid = %d\n", imid ); + fprintf( stderr, "midn = \n" ); + for( j=0; j %d\n", imid ); + fprintf( stderr, "jmid -> %d\n", jmid ); +#if STOREWM +#else + break; +#endif + } + } +// fprintf( stderr, "imid = %d, but jumpi = %d\n", imid, jumpi ); +// fprintf( stderr, "jmid = %d, but jumpj = %d\n", jmid, jumpj ); + +// for( j=0; j N ) + { + fprintf( stderr, "alloclen=%d, resultlen=%d, N=%d\n", alloclen, resultlen, N ); + ErrorExit( "LENGTH OVER!\n" ); + } +#endif + + + +#if 0 + fprintf( stderr, "jumpi = %d, imid = %d\n", jumpi, imid ); + fprintf( stderr, "jumpj = %d, jmid = %d\n", jumpj, jmid ); + + fprintf( stderr, "imid = %d\n", imid ); + fprintf( stderr, "jmid = %d\n", jmid ); +#endif + + + FreeFloatVec( w1 ); + FreeFloatVec( w2 ); + FreeFloatVec( initverticalw ); + FreeFloatVec( lastverticalw ); + FreeFloatVec( midw ); + FreeFloatVec( midm ); + FreeFloatVec( midn ); + + FreeIntVec( jumpbacki ); + FreeIntVec( jumpbackj ); + FreeIntVec( jumpforwi ); + FreeIntVec( jumpforwj ); + FreeIntVec( jumpdummi ); + FreeIntVec( jumpdummj ); + + FreeFloatVec( m ); + FreeIntVec( mp ); + + FreeFloatMtx( floatwork ); + FreeIntMtx( intwork ); + +#if STOREWM + FreeFloatMtx( WMMTX ); + FreeFloatMtx( WMMTX2 ); +#endif + +// fprintf( stderr, "==== calling myself (first)\n" ); + + fprintf( stderr, "jumpi = %d\n", jumpi ); + value = MSalignmm_rec( icyc, jcyc, eff1, eff2, seq1, seq2, cpmx1, cpmx2, ist, ist+jumpi, jst, jst+jumpj, alloclen, aseq1, aseq2, depth, gapinfo ); + for( i=0; i 0 ) + { + for( i=0; i 0 ) + { + for( i=0; i 1 || maxwm - value > 1 ) + { + fprintf( stderr, "WARNING value = %f, but maxwm = %f penalty = %f\n", value, maxwm, fpenalty ); +#if 1 + for( i=0; i1-%d\n%s\n", i, mseq1[i] ); + fprintf( stderr, "%s\n", aseq1[i] ); + } + for( i=0; i2-%d\n%s\n", i, mseq2[i] ); + fprintf( stderr, "%s\n", aseq2[i] ); + } +#endif + +// exit( 1 ); + } + else + { + fprintf( stderr, "value = %.0f, maxwm = %.0f -> ok\n", value, maxwm ); + } + + for( i=0; i%d of GROUP1\n", i ); + fprintf( stdout, "%s\n", seq1[i] ); + } + for( i=0; i%d of GROUP2\n", i ); + fprintf( stdout, "%s\n", seq2[i] ); + } + fflush( stdout ); +#endif + + wm = MSalignmm_rec( icyc, jcyc, eff1, eff2, seq1, seq2, cpmx1, cpmx2, 0, lgth1-1, 0, lgth2-1, alloclen, mseq1, mseq2, 0, gapinfo ); + +// fprintf( stderr, "wm = %f\n", wm ); + + for( i=0; i