src/hg/hgTracks/bamTrack.c 1.27
1.27 2010/02/26 06:54:57 angie
Added option to (not) display item names in bam tracks. Also, when coloring by alignment qual and not pairing, sort by score.
Index: src/hg/hgTracks/bamTrack.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/bamTrack.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -b -B -U 4 -r1.26 -r1.27
--- src/hg/hgTracks/bamTrack.c 24 Feb 2010 01:10:25 -0000 1.26
+++ src/hg/hgTracks/bamTrack.c 26 Feb 2010 06:54:57 -0000 1.27
@@ -329,8 +329,19 @@
ret = a->start - b->start;
return ret;
}
+static int linkedFeaturesCmpScore(const void *va, const void *vb)
+/* Help sort linkedFeatures by score (descending), then by starting pos. */
+{
+const struct linkedFeatures *a = *((struct linkedFeatures **)va);
+const struct linkedFeatures *b = *((struct linkedFeatures **)vb);
+int ret = b->score - a->score;
+if (ret == 0)
+ ret = a->start - b->start;
+return ret;
+}
+
void bamLoadItemsCore(struct track *tg, boolean isPaired)
/* Load BAM data into tg->items item list, unless zoomed out so far
* that the data would just end up in dense mode and be super-slow. */
{
@@ -377,8 +388,11 @@
if (isPaired)
slSort(&(tg->items), linkedFeaturesSeriesCmp);
else if (sameString(colorMode, BAM_COLOR_MODE_STRAND))
slSort(&(tg->items), linkedFeaturesCmpOri);
+ else if (sameString(colorMode, BAM_COLOR_MODE_GRAY) &&
+ sameString(grayMode, BAM_GRAY_MODE_ALI_QUAL))
+ slSort(&(tg->items), linkedFeaturesCmpScore);
else
slSort(&(tg->items), linkedFeaturesCmpStart);
if (slCount(tg->items) > MAX_ITEMS_FOR_MAPBOX)
tg->mapItem = dontMapItem;
@@ -525,8 +539,15 @@
prevEnd = lf->end;
}
}
+static void dontDrawLeftLabels(struct track *tg, int seqStart, int seqEnd, struct hvGfx *hvg,
+ int xOff, int yOff, int width, int height, boolean withCenterLabels,
+ MgFont *font, Color color, enum trackVisibility vis)
+/* Allow left labels to be inhibited by tdb and/or cart. */
+{
+}
+
void bamMethods(struct track *track)
/* Methods for BAM alignment files. */
{
@@ -540,8 +561,11 @@
boolean compositeLevel = isNameAtCompositeLevel(track->tdb, BAM_PAIR_ENDS_BY_NAME);
boolean isPaired = cartUsualBooleanClosestToHome(cart, track->tdb, compositeLevel,
BAM_PAIR_ENDS_BY_NAME,
(trackDbSettingClosestToHome(track->tdb, BAM_PAIR_ENDS_BY_NAME) != NULL));
+char *tdbShowNames = trackDbSettingClosestToHome(track->tdb, BAM_SHOW_NAMES);
+boolean showNames = cartUsualBooleanClosestToHome(cart, track->tdb, compositeLevel,
+ BAM_SHOW_NAMES, !sameOk(tdbShowNames, "off"));
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)
{
@@ -565,8 +589,14 @@
linkedFeaturesMethods(track);
track->loadItems = bamLoadItems;
track->drawItemAt = bamDrawAt;
}
+if (!showNames)
+ {
+ track->drawName = TRUE; // ironic, but this is how to suppress item labels in pack mode.
+ track->drawLeftLabels = dontDrawLeftLabels;
+ }
+
track->nextItemButtonable = track->nextExonButtonable = FALSE;
track->nextPrevItem = NULL;
track->nextPrevExon = NULL;
track->colorShades = shadesOfGray;