13b584581e6d7b1860e0cab97adc3594b1899308 braney Mon Aug 7 12:05:10 2023 -0700 add instaPort to bigBed support diff --git src/hg/lib/genePred.c src/hg/lib/genePred.c index 04525f0..30a9dbc 100644 --- src/hg/lib/genePred.c +++ src/hg/lib/genePred.c @@ -2097,30 +2097,55 @@ // Yet to reach the target base... accumulate exon worth codingBasesSoFar += (exonEnd - exonStart); } exonIx += (reverse ? -1 : 1); } if (isCoding != NULL && codingBasesSoFar > 0) { *isCoding = FALSE; return codingBasesSoFar; } return -1; // introns not okay } +struct genePredExt *genePredFromBedBigGenePred( char *chrom, struct bed *bed, struct bigBedInterval *bb) +/* build a genePred from a bigGenePred and a bed file */ +{ +char *extra = cloneString(bb->rest); +int numCols = 12 + 8 - 3; +char *row[numCols]; +int wordCount = chopByChar(extra, '\t', row, numCols); +assert(wordCount == numCols); + +struct genePredExt *gp = bedToGenePredExt(bed); + +gp->name2 = cloneString(row[ 9]); + +int numBlocks; +sqlSignedDynamicArray(row[ 12], &gp->exonFrames, &numBlocks); +gp->optFields |= genePredExonFramesFld; +//assert (numBlocks == gp->exonCount); + +gp->type = cloneString(row[13]); +gp->geneName = cloneString(row[14]); +gp->geneName2 = cloneString(row[15]); + +return gp; +} + struct genePredExt *genePredFromBigGenePred( char *chrom, struct bigBedInterval *bb) /* build a genePred from a bigGenePred */ { char *extra = cloneString(bb->rest); int numCols = 12 + 8 - 3; char *row[numCols]; int wordCount = chopByChar(extra, '\t', row, numCols); assert(wordCount == numCols); struct genePredExt *gp; AllocVar(gp); gp->chrom = chrom; gp->txStart = bb->start; gp->txEnd = bb->end;