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;