1e2e00c67a11edf9693b019c75596e2158723ba0
braney
  Mon May 2 15:40:57 2016 -0700
add a mode to bedOrBlocks to cluster based on name, use this mode to
build the pFam track on the new hg38 knownGene

diff --git src/lib/basicBed.c src/lib/basicBed.c
index 9578abb..93a599e 100644
--- src/lib/basicBed.c
+++ src/lib/basicBed.c
@@ -155,30 +155,47 @@
     dif = (a->chromStart - b->chromStart) * 1000 +(a->score - b->score);
     }
 return dif;
 }
 
 int bedCmpSize(const void *va, const void *vb)
 /* Compare to sort based on size of element (end-start == size) */
 {
 const struct bed *a = *((struct bed **)va);
 const struct bed *b = *((struct bed **)vb);
 int a_size = a->chromEnd - a->chromStart;
 int b_size = b->chromEnd - b->chromStart;
 return (a_size - b_size);
 }
 
+int bedCmpChromStrandStartName(const void *va, const void *vb)
+/* Compare to sort based on chrom,strand,chromStart. */
+{
+const struct bed *a = *((struct bed **)va);
+const struct bed *b = *((struct bed **)vb);
+int dif;
+
+dif = strcmp(a->name, b->name);
+if (dif == 0)
+    dif = strcmp(a->chrom, b->chrom);
+if (dif == 0)
+    dif = strcmp(a->strand, b->strand);
+if (dif == 0)
+    dif = a->chromStart - b->chromStart;
+return dif;
+}
+
 int bedCmpChromStrandStart(const void *va, const void *vb)
 /* Compare to sort based on chrom,strand,chromStart. */
 {
 const struct bed *a = *((struct bed **)va);
 const struct bed *b = *((struct bed **)vb);
 int dif;
 dif = strcmp(a->chrom, b->chrom);
 if (dif == 0)
     dif = strcmp(a->strand, b->strand);
 if (dif == 0)
     dif = a->chromStart - b->chromStart;
 return dif;
 }
 
 struct bedLine *bedLineNew(char *line)