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)