[med-svn] [Git][med-team/daligner][upstream] New upstream version 1.0+git20200608.c18a2fb

Steffen Möller gitlab at salsa.debian.org
Sat Jun 13 14:39:02 BST 2020



Steffen Möller pushed to branch upstream at Debian Med / daligner


Commits:
2d72004d by Steffen Moeller at 2020-06-13T15:37:21+02:00
New upstream version 1.0+git20200608.c18a2fb
- - - - -


4 changed files:

- DB.c
- LAsort.c
- LAsplit.c
- daligner.c


Changes:

=====================================
DB.c
=====================================
@@ -1758,7 +1758,6 @@ static int Late_Track_Trim(DAZZ_DB *db, DAZZ_TRACK *track, int ispart)
                 j += 1;
               }
           }
-        track->data = Realloc(track->data,anno4[j],NULL);
         track->alen = Realloc(track->alen,sizeof(int)*j,NULL);
         track->anno = Realloc(track->anno,track->size*(j+1),NULL);
       }
@@ -1779,7 +1778,6 @@ static int Late_Track_Trim(DAZZ_DB *db, DAZZ_TRACK *track, int ispart)
                 j += 1;
               }
           }
-        track->data = Realloc(track->data,anno8[j],NULL);
         track->alen = Realloc(track->alen,sizeof(int)*j,NULL);
         track->anno = Realloc(track->anno,track->size*(j+1),NULL);
       }


=====================================
LAsort.c
=====================================
@@ -58,6 +58,26 @@ static int SORT_OVL(const void *x, const void *y)
   if (pl != pr)
     return (pl-pr);
 
+  pl = ol->path.aepos;
+  pr = or->path.aepos;
+  if (pl != pr)
+    return (pl-pr);
+
+  pl = ol->path.bbpos;
+  pr = or->path.bbpos;
+  if (pl != pr)
+    return (pl-pr);
+
+  pl = ol->path.bepos;
+  pr = or->path.bepos;
+  if (pl != pr)
+    return (pl-pr);
+
+  pl = ol->path.diffs;
+  pr = or->path.diffs;
+  if (pl != pr)
+    return (pl-pr);
+
   if (ol < or)
     return (-1);
   else if (ol > or)
@@ -72,6 +92,8 @@ static int SORT_MAP(const void *x, const void *y)
 
   Overlap *ol, *or;
   int      al, ar;
+  int      bl, br;
+  int      cl, cr;
   int      pl, pr;
 
   ol = (Overlap *) (IBLOCK+l);
@@ -87,6 +109,36 @@ static int SORT_MAP(const void *x, const void *y)
   if (pl != pr)
     return (pl-pr);
 
+  bl = ol->bread;
+  br = or->bread;
+  if (bl != br)
+    return (bl-br);
+
+  cl = COMP(ol->flags);
+  cr = COMP(or->flags);
+  if (cl != cr)
+    return (cl-cr);
+
+  pl = ol->path.aepos;
+  pr = or->path.aepos;
+  if (pl != pr)
+    return (pl-pr);
+
+  pl = ol->path.bbpos;
+  pr = or->path.bbpos;
+  if (pl != pr)
+    return (pl-pr);
+
+  pl = ol->path.bepos;
+  pr = or->path.bepos;
+  if (pl != pr)
+    return (pl-pr);
+
+  pl = ol->path.diffs;
+  pr = or->path.diffs;
+  if (pl != pr)
+    return (pl-pr);
+
   if (ol < or)
     return (-1);
   else if (ol > or)
@@ -95,6 +147,50 @@ static int SORT_MAP(const void *x, const void *y)
     return (0);
 }
 
+static int EQUAL(Overlap *ol, Overlap *or)
+{ int      al, ar;
+  int      bl, br;
+  int      cl, cr;
+  int      pl, pr;
+
+  al = ol->aread;
+  ar = or->aread;
+  if (al != ar)
+    return (0);
+
+  bl = ol->bread;
+  br = or->bread;
+  if (bl != br)
+    return (0);
+
+  cl = COMP(ol->flags);
+  cr = COMP(or->flags);
+  if (cl != cr)
+    return (0);
+
+  pl = ol->path.abpos;
+  pr = or->path.abpos;
+  if (pl != pr)
+    return (0);
+
+  pl = ol->path.aepos;
+  pr = or->path.aepos;
+  if (pl != pr)
+    return (0);
+
+  pl = ol->path.bbpos;
+  pr = or->path.bbpos;
+  if (pl != pr)
+    return (0);
+
+  pl = ol->path.bepos;
+  pr = or->path.bepos;
+  if (pl != pr)
+    return (0);
+
+  return (1);
+}
+
 int main(int argc, char *argv[])
 { char     *iblock, *fblock, *iend;
   int64     isize,   osize;
@@ -249,30 +345,39 @@ int main(int argc, char *argv[])
             qsort(perm,sov,sizeof(int64),SORT_MAP);
           else
             qsort(perm,sov,sizeof(int64),SORT_OVL);
-    
+
           //  Output the records in sorted order
     
-          { int      j;
-            Overlap *w;
+          { int      j, equal;
+            Overlap *w, *x, y;
             int64    tsize, span;
             char    *fptr, *ftop, *wo;
     
+            y.aread = ((Overlap *) (iblock+perm[0]))->aread+1;
+            x = &y;
+
             fptr = fblock;
             ftop = fblock + osize;
             for (j = 0; j < sov; j++)
               { w = (Overlap *) (wo = iblock+perm[j]);
                 do
-                  { tsize = w->path.tlen*tbytes;
+                  { equal = EQUAL(w,x); 
+                    tsize = w->path.tlen*tbytes;
                     span  = ovlsize + tsize;
                     if (fptr + span > ftop)
                       { if (fwrite(fblock,1,fptr-fblock,foutput) != (size_t) (fptr-fblock))
                           SYSTEM_WRITE_ERROR
                         fptr = fblock;
                       }
-                    memmove(fptr,((char *) w)+ptrsize,ovlsize);
-                    fptr += ovlsize;
-                    memmove(fptr,(char *) (w+1),tsize);
-                    fptr += tsize;
+                    if (equal)
+                      fptr += (ovlsize + tsize);
+                    else
+                      { memmove(fptr,((char *) w)+ptrsize,ovlsize);
+                        fptr += ovlsize;
+                        memmove(fptr,(char *) (w+1),tsize);
+                        fptr += tsize;
+                      }
+                    x = w;
                     w = (Overlap *) (wo += span);
                   }
                 while (wo < iend && CHAIN_NEXT(w->flags));


=====================================
LAsplit.c
=====================================
@@ -64,14 +64,16 @@ int main(int argc, char *argv[])
 
     parts = strtol(argv[2],&eptr,10);
     if (*eptr != '\0')
-      { pwd   = PathTo(argv[2]);
+      { pwd = PathTo(argv[2]);
         if (strcmp(argv[2]+(strlen(argv[2])-4),".dam") == 0)
           { root = Root(argv[2],".dam");
             stub = Read_DB_Stub(Catenate(pwd,"/",root,".dam"),DB_STUB_BLOCKS);
+            parts = stub->nblocks;
           }
         else
           { root = Root(argv[2],".db");
             stub = Read_DB_Stub(Catenate(pwd,"/",root,".db"),DB_STUB_BLOCKS);
+            parts = stub->nblocks;
           }
         free(pwd);
         free(root);
@@ -173,7 +175,7 @@ int main(int argc, char *argv[])
                 last = w->aread;
               }
             else
-              { if (w->aread > last)
+              { if (w->aread >= last)
                   break;
               }
 


=====================================
daligner.c
=====================================
@@ -51,8 +51,8 @@
 #include "filter.h"
 
 static char *Usage[] =
-  { "[-vaABI] [-k<int(16)>] [-%<int(28)>] [-h<int(50)>] [-w<int(6)>] [-t<int>] [-M<int>]",
-    "         [-e<double(.75)] [-l<int(1500)>] [-s<int(100)>] [-H<int>]",
+  { "[-vaABI] [-k<int(16)>] [-%<int(28)>] [-h<int(50)>] [-w<int(6)>] [-t<int>]",
+    "         [-M<int>] [-e<double(.75)] [-l<int(1500)>] [-s<int(100)>] [-H<int>]",
     "         [-T<int(4)>] [-P<dir(/tmp)>] [-m<track>]+",
     "         <subject:db|dam> <target:db|dam> ...",
   };



View it on GitLab: https://salsa.debian.org/med-team/daligner/-/commit/2d72004df837dc57a328b587472bd73124dcb382

-- 
View it on GitLab: https://salsa.debian.org/med-team/daligner/-/commit/2d72004df837dc57a328b587472bd73124dcb382
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20200613/4225bba1/attachment-0001.html>


More information about the debian-med-commit mailing list