dd919a184eed24110f134dec8b56b61f034d23a0 kate Mon Jun 10 18:26:45 2019 -0700 Finish initial implementation of multi-region link on interact track details. refs #22422 diff --git src/hg/lib/interact.c src/hg/lib/interact.c index bad6c50..51aa19a 100644 --- src/hg/lib/interact.c +++ src/hg/lib/interact.c @@ -299,30 +299,42 @@ /* Get other chromosome from an interaaction. Return NULL if same chromosome */ { if (sameString(inter->sourceChrom, inter->targetChrom)) return NULL; if (inter->chromStart == inter->sourceStart) return cloneString(inter->targetChrom); return cloneString(inter->sourceChrom); } int interactRegionCenter(int start, int end) /* Return genomic location of center of region */ { return ((double)(end - start + .5) / 2) + start; } +boolean interactEndsOverlap(struct interact *inter) +/* Determine if there is any overlap of interact endpoints */ +{ +if (differentString(inter->sourceChrom, inter->targetChrom)) + return FALSE; +if (inter->sourceStart < inter->targetStart && inter->sourceEnd < inter->targetEnd) + return FALSE; +if (inter->targetStart < inter->sourceStart && inter->targetEnd < inter->sourceEnd) + return FALSE; +return TRUE; +} + int interactRegionDistance(struct interact *inter) /* Return distance between region midpoints. Return -1 for other chromosome */ { if (interactOtherChrom(inter)) return -1; return abs(interactRegionCenter(inter->sourceStart, inter->sourceEnd) - interactRegionCenter(inter->targetStart, inter->targetEnd)); } int interactDistanceCmp(const void *va, const void *vb) /* Compare based on distance between region midpoints */ { struct interact *a = *((struct interact **)va); struct interact *b = *((struct interact **)vb);