440d84ee43c6a5f8a22bfe7886681db4ee7cc202 braney Thu Aug 28 16:55:27 2014 -0700 adding more support for bigGenePred in hgc and hgTables. diff --git src/hg/hgTracks/bigBedTrack.c src/hg/hgTracks/bigBedTrack.c index e3789d5..9f280a3 100644 --- src/hg/hgTracks/bigBedTrack.c +++ src/hg/hgTracks/bigBedTrack.c @@ -132,73 +132,30 @@ char* restField(struct bigBedInterval *bb, int fieldIdx) /* return a given field from the bb->rest field, NULL on error */ { if (fieldIdx==0) // we don't return the first(=name) field of bigBed return NULL; char *rest = cloneString(bb->rest); char *restFields[256]; int restCount = chopTabs(rest, restFields); char *field = NULL; if (fieldIdx < restCount) field = cloneString(restFields[fieldIdx]); freeMem(rest); return field; } -struct genePred *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 genePred *gp; -AllocVar(gp); - -gp->chrom = chrom; -gp->txStart = bb->start; -gp->txEnd = bb->end; -gp->name = cloneString(row[ 0]); -gp->strand[0] = row[ 2][0]; -gp->strand[1] = row[ 2][1]; -gp->cdsStart = atoi(row[ 3]); -gp->cdsEnd = atoi(row[ 4]); -gp->exonCount = atoi(row[ 6]); -int numBlocks; -sqlUnsignedDynamicArray(row[ 8], &gp->exonStarts, &numBlocks); -assert (numBlocks == gp->exonCount); -sqlUnsignedDynamicArray(row[ 7], &gp->exonEnds, &numBlocks); -assert (numBlocks == gp->exonCount); - -int ii; -for(ii=0; ii < numBlocks; ii++) - { - gp->exonStarts[ii] += bb->start; - gp->exonEnds[ii] += gp->exonStarts[ii]; - } - -gp->name2 = cloneString(row[ 9]); - -gp->cdsStartStat = parseCdsStat(row[ 10]); -gp->cdsEndStat = parseCdsStat(row[ 11]); -sqlSignedDynamicArray(row[ 12], &gp->exonFrames, &numBlocks); -assert (numBlocks == gp->exonCount); - -return gp; -} void bigBedAddLinkedFeaturesFrom(struct track *track, char *chrom, int start, int end, int scoreMin, int scoreMax, boolean useItemRgb, int fieldCount, struct linkedFeatures **pLfList) /* Read in items in chrom:start-end from bigBed file named in track->bbiFileName, convert * them to linkedFeatures, and add to head of list. */ { struct lm *lm = lmInit(0); struct trackDb *tdb = track->tdb; struct bigBedInterval *bb, *bbList = bigBedSelectRange(track, chrom, start, end, lm); char *bedRow[32]; char startBuf[16], endBuf[16]; char *scoreFilter = cartOrTdbString(cart, track->tdb, "scoreFilter", NULL); char *mouseOverField = cartOrTdbString(cart, track->tdb, "mouseOverField", NULL); int minScore = 0;