diff options
-rw-r--r-- | LAshow.c | 2 | ||||
-rw-r--r-- | align.c | 72 | ||||
-rw-r--r-- | debian/changelog | 6 |
3 files changed, 70 insertions, 10 deletions
@@ -700,7 +700,7 @@ int main(int argc, char *argv[]) Gap_Improver(aln,work); } -#ifdef DEBUG_GAP_IMPROVER +#ifndef DEBUG_GAP_IMPROVER aln->path->abpos += aoffs; aln->path->aepos += aoffs; aln->alen = alens; @@ -5701,14 +5701,39 @@ void Gap_Improver(Alignment *aln, Work_Data *ework) { Fpos = -Fpos; Lpos = -Lpos; + if (x < Diag) + p = 0; + else + { m = t[x-Diag]; + if (m < 0) + p = -m; + else + p = m+Fdag; + } + while (A[Fpos-1] != B[(Fpos-Fdag)-1] && A[Fpos-1] != 4 && B[(Fpos-Fdag)-1] != 4) - { Fpos -= 1; + { if (Fpos <= p) + break; + Fpos -= 1; #ifdef BOX_STATS BxExtend += 1; #endif } + + if (x >= T) + p = aln->alen; + else + { m = t[x]; + if (m < 0) + p = -m; + else + p = m+d; + } + while (A[Lpos] != B[Lpos-d] && A[Lpos] != 4 && B[Lpos-d] != 4) - { Lpos += 1; + { if (Lpos >= p) + break; + Lpos += 1; #ifdef BOX_STATS BxExtend += 1; #endif @@ -5795,14 +5820,39 @@ void Gap_Improver(Alignment *aln, Work_Data *ework) } } else - { while (B[Fpos-1] != A[(Fpos+Fdag)-1] && B[Fpos-1] != 4 && A[(Fpos+Fdag)-1] != 4) - { Fpos -= 1; + { if (x < Diag) + p = 0; + else + { m = t[x-Diag]; + if (m < 0) + p = -(m+Fdag); + else + p = m; + } + + while (B[Fpos-1] != A[(Fpos+Fdag)-1] && B[Fpos-1] != 4 && A[(Fpos+Fdag)-1] != 4) + { if (Fpos <= p) + break; + Fpos -= 1; #ifdef BOX_STATS BxExtend += 1; #endif } + + if (x >= T) + p = aln->blen; + else + { m = t[x]; + if (m < 0) + p = -(m+d); + else + p = m; + } + while (B[Lpos] != A[Lpos+d] && B[Lpos] != 4 && A[Lpos+d] != 4) - { Lpos += 1; + { if (Lpos >= p) + break; + Lpos += 1; #ifdef BOX_STATS BxExtend += 1; #endif @@ -5873,15 +5923,19 @@ void Gap_Improver(Alignment *aln, Work_Data *ework) h -= Diag; k = h[m-Fdag]; if (k == 0) - p -= 1; + { p -= 1; +#ifdef DEBUG_BACK + printf(" (%d,%d,sub)",p,m); +#endif + } else { m -= k; +#ifdef DEBUG_BACK + printf(" (%d,%d,%d)",p,m,k); +#endif for (; k > 0; k--) t[--y] = p; } -#ifdef DEBUG_BACK - printf(" (%d,%d)",p,m); -#endif } #ifdef DEBUG_BACK printf("\n"); diff --git a/debian/changelog b/debian/changelog index 18dc054..34baae5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +daligner (1.0+git20240119.335105d-1) unstable; urgency=medium + + * New upstream version + + -- Étienne Mollier <emollier@debian.org> Sun, 21 Jan 2024 11:57:13 +0100 + daligner (1.0+git20240111.a9f62ac-1) unstable; urgency=medium * New upstream version |