f04df66eae07dfd571642966b1d787256ffaf825 braney Wed Jan 18 14:32:49 2017 -0800 cytoBandIdeogram on assembly hubs diff --git src/hg/hgTracks/cytoBandTrack.c src/hg/hgTracks/cytoBandTrack.c index 0ec2154..03089d5 100644 --- src/hg/hgTracks/cytoBandTrack.c +++ src/hg/hgTracks/cytoBandTrack.c @@ -80,30 +80,49 @@ else mapBoxHc(hvg, band->chromStart, band->chromEnd, x1,y,w,heightPer, tg->track, band->name, band->name); } static void loadCytoBands(struct track *tg) /* Load up simpleRepeats from database table to track items. */ { bedLoadItem(tg, "cytoBand", (ItemLoader)cytoBandLoad); } static void loadCytoBandsIdeo(struct track *tg) /* Load up cytoBandIdeo from database table to track items. */ { +if (tg->isBigBed) + { + struct lm *lm = lmInit(0); + int start = 0; + int end = hChromSize(database, chromName); + struct bigBedInterval *bb, *bbList = bigBedSelectRange(tg, chromName, start, end, lm); + char *bedRow[32]; + char startBuf[16], endBuf[16]; + + for (bb = bbList; bb != NULL; bb = bb->next) + { + bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow)); + struct cytoBand *bed = cytoBandLoad(bedRow); + slAddHead(&tg->items, bed); + } + slReverse(&tg->items); + lmCleanup(&lm); + return; + } char query[256]; sqlSafef(query, sizeof(query), "select * from cytoBandIdeo where chrom like '%s'", chromName); if(hTableExists(database, "cytoBandIdeo")) bedLoadItemByQuery(tg, "cytoBandIdeo", query, (ItemLoader)cytoBandLoad); if(slCount(tg->items) == 0) { tg->limitedVisSet = TRUE; tg->limitedVis = tvHide; } } static void freeCytoBands(struct track *tg) /* Free up isochore items. */ {