void tigrOperonMethods(struct track *tg) { linkedFeaturesMethods(tg); tg->loadItems = loadOperon; tg->colorShades = shadesOfGray; tg->drawItemAt = tigrOperonDrawAt; }
void bamMethods(struct track *track) /* Methods for BAM alignment files. */ { knetUdcInstall(); boolean isBamWig = cartUsualBooleanClosestToHome(cart, track->tdb, FALSE, BAMWIG_MODE, (trackDbSettingClosestToHome(track->tdb, BAMWIG_MODE) != NULL)); if (isBamWig) { bamWigMethods(track, track->tdb, 0, NULL); return; } track->canPack = TRUE; boolean isPaired = cartUsualBooleanClosestToHome(cart, track->tdb, FALSE, BAM_PAIR_ENDS_BY_NAME, (trackDbSettingClosestToHome(track->tdb, BAM_PAIR_ENDS_BY_NAME) != NULL)); char *tdbShowNames = trackDbSetting(track->tdb, BAM_SHOW_NAMES); boolean showNames = cartUsualBooleanClosestToHome(cart, track->tdb, FALSE, BAM_SHOW_NAMES, SETTING_IS_ON(tdbShowNames)); char *colorMode = cartOrTdbString(cart, track->tdb, BAM_COLOR_MODE, BAM_COLOR_MODE_DEFAULT); char *userTag = cartOrTdbString(cart, track->tdb, BAM_COLOR_TAG, BAM_COLOR_TAG_DEFAULT); if (sameString(colorMode, BAM_COLOR_MODE_TAG) && userTag != NULL) { if (! (isalpha(userTag[0]) && isalnum(userTag[1]) && userTag[2] == '\0')) { warn("%s: BAM tag '%s' is not valid -- must be a letter followed by a letter or number.", track->tdb->shortLabel, htmlEncode(userTag)); cartRemoveVariableClosestToHome(cart, track->tdb, FALSE, BAM_COLOR_TAG); } } addBamBaseAndIndelSettings(track->tdb); if (isPaired) { linkedFeaturesSeriesMethods(track); track->loadItems = bamPairedLoadItems; track->drawItems = bamLinkedFeaturesSeriesDraw; track->drawItemAt = bamPairedDrawAt; } else { linkedFeaturesMethods(track); track->loadItems = bamLoadItems; track->drawItems = bamLinkedFeaturesDraw; track->drawItemAt = bamDrawAt; } if (!showNames) { track->drawName = TRUE; // ironic, but this is how to suppress item labels in pack mode. track->drawLeftLabels = maybeDrawLeftLabels; } track->nextItemButtonable = track->nextExonButtonable = FALSE; track->nextPrevItem = NULL; track->nextPrevExon = NULL; if (sameString(colorMode, BAM_COLOR_MODE_GRAY)) track->colorShades = shadesOfGray; }
void sampleLinkedFeaturesMethods(struct track *tg) /* Fill in track methods for 'sample' tracks. */ { linkedFeaturesMethods(tg); tg->drawItems = wiggleLinkedFeaturesDraw; tg->totalHeight = sampleTotalHeight; tg->itemHeight = tgFixedItemHeight; }
void chainMethods(struct track *tg, struct trackDb *tdb, int wordCount, char *words[]) /* Fill in custom parts of alignment chains. */ { struct cartOptions *chainCart; AllocVar(chainCart); boolean normScoreAvailable = chainDbNormScoreAvailable(tdb); /* what does the cart say about coloring option */ chainCart->chainColor = chainFetchColorOption(cart, tdb, FALSE); chainCart->scoreFilter = cartUsualIntClosestToHome(cart, tdb, FALSE, SCORE_FILTER, 0); linkedFeaturesMethods(tg); tg->itemColor = lfChromColor; /* default coloring option */ /* if normScore column is available, then allow coloring */ if (normScoreAvailable) { switch (chainCart->chainColor) { case (chainColorScoreColors): tg->itemColor = chainScoreColor; tg->colorShades = shadesOfGray; break; case (chainColorNoColors): setNoColor(tg); break; default: case (chainColorChromColors): break; } } else { char *optionStr; /* this old option was broken before */ optionStr = cartUsualStringClosestToHome(cart, tdb, FALSE, "color", "on"); if (differentWord("on",optionStr)) { setNoColor(tg); chainCart->chainColor = chainColorNoColors; } else chainCart->chainColor = chainColorChromColors; } tg->loadItems = chainLoadItems; tg->drawItems = chainDraw; tg->mapItemName = lfMapNameFromExtra; tg->subType = lfSubChain; tg->extraUiData = (void *) chainCart; }
void lrgMethods(struct track *tg) /* Locus Reference Genomic (bigBed 12 +) handlers. */ { linkedFeaturesMethods(tg); tg->canPack = TRUE; tg->isBigBed = TRUE; tg->loadItems = lrgLoadItems; tg->itemName = lrgItemName; tg->nextPrevExon = simpleBedNextPrevEdge; }
void cgapSageMethods(struct track *tg) /* Make track for simple repeats. */ { linkedFeaturesMethods(tg); tg->loadItems = cgapSageLoadItems; tg->itemColor = cgapSageItemColor; tg->drawItems = cgapSageDrawItems; tg->mapItemName = cgapSageMapItemName; tg->mapItem = cgapSageMapItem; }
void encodePeakMethods(struct track *tg) /* Methods for ENCODE peak track uses mostly linkedFeatures. */ { linkedFeaturesMethods(tg); tg->loadItems = encodePeakLoadItemsNormal; tg->drawItemAt = encodePeakDrawAt; tg->nextPrevItem = linkedFeaturesLabelNextPrevItem; tg->itemName = encodePeakItemName; tg->canPack = TRUE; }
void addWikiTrack(struct track **pGroupList) /* Add wiki track and append to group list. */ { if (wikiTrackEnabled(database, NULL)) { struct track *tg = trackNew(); static char longLabel[80]; struct trackDb *tdb; struct sqlConnection *wikiConn = wikiConnect(); if (! sqlTableExists(wikiConn,WIKI_TRACK_TABLE)) errAbort("loadWikiTrack configuration error, set wikiTrack.URL in hg.conf"); linkedFeaturesMethods(tg); AllocVar(tdb); tg->track = WIKI_TRACK_TABLE; tg->table = WIKI_TRACK_TABLE; tg->canPack = TRUE; tg->visibility = tvHide; tg->hasUi = TRUE; tg->shortLabel = cloneString(WIKI_TRACK_LABEL); safef(longLabel, sizeof(longLabel), WIKI_TRACK_LONGLABEL); tg->longLabel = longLabel; tg->loadItems = wikiTrackLoadItems; tg->itemName = linkedFeaturesName; tg->mapItemName = wikiTrackMapItemName; tg->mapItem = wikiTrackMapItem; tg->priority = WIKI_TRACK_PRIORITY; tg->defaultPriority = WIKI_TRACK_PRIORITY; tg->groupName = cloneString("map"); tg->defaultGroupName = cloneString("map"); tg->exonArrows = TRUE; tg->nextItemButtonable = TRUE; tdb->track = cloneString(tg->track); tdb->canPack = tg->canPack; tdb->table = cloneString(tg->table); tdb->shortLabel = cloneString(tg->shortLabel); tdb->longLabel = cloneString(tg->longLabel); tdb->useScore = 1; tdb->grp = cloneString(tg->groupName); tdb->priority = tg->priority; trackDbPolish(tdb); tg->tdb = tdb; slAddHead(pGroupList, tg); wikiDisconnect(&wikiConn); } }