summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LAshow.c2
-rw-r--r--align.c72
-rw-r--r--debian/changelog6
3 files changed, 70 insertions, 10 deletions
diff --git a/LAshow.c b/LAshow.c
index 1717f92..cfda6c4 100644
--- a/LAshow.c
+++ b/LAshow.c
@@ -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;
diff --git a/align.c b/align.c
index d599fc4..e780401 100644
--- a/align.c
+++ b/align.c
@@ -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