static int gpBedBasesShared(struct genePred *gp, struct bed *bed) /* Return number of bases genePred and bed share. */ { int intersect = 0; int i, blockCount = bed->blockCount; int s,e; for (i=0; i<blockCount; ++i) { s = bed->chromStart + bed->chromStarts[i]; e = s + bed->blockSizes[i]; intersect += gpRangeIntersection(gp, s, e); } return intersect; }
static int basesShared(struct genePred *gp, struct psl *psl) /* Return number of bases a&b share. */ { int intersect = 0; int i, blockCount = psl->blockCount; int s,e; for (i=0; i<blockCount; ++i) { s = psl->tStarts[i]; e = s + psl->blockSizes[i]; if (psl->strand[1] == '-') reverseIntRange(&s, &e, psl->tSize); intersect += gpRangeIntersection(gp, s, e); } return intersect; }