src/hg/hgTracks/bamTrack.c 1.19

1.19 2009/12/10 15:02:12 angie
Got rid of bogus bamIgnoreStrand() -- make useStrand explicit. Added auto-detect of missing 'chr' in sequence names, so stripPrefix setting is no longer necessary. Better message for samopen failures.
Index: src/hg/hgTracks/bamTrack.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/bamTrack.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -b -B -U 4 -r1.18 -r1.19
--- src/hg/hgTracks/bamTrack.c	30 Nov 2009 19:26:51 -0000	1.18
+++ src/hg/hgTracks/bamTrack.c	10 Dec 2009 15:02:12 -0000	1.19
@@ -138,9 +138,9 @@
 int length;
 lf->components = sfFromNumericCigar(bam, &length);
 lf->start = lf->tallStart = core->pos;
 lf->end = lf->tallEnd = core->pos + length;
-lf->extra = bamGetQuerySequence(bam);
+lf->extra = bamGetQuerySequence(bam, TRUE);
 if (sameString(btd->colorMode, BAM_COLOR_MODE_GRAY) &&
     sameString(btd->grayMode, BAM_GRAY_MODE_ALI_QUAL))
     {
     // hardcode min & max for now; if user demand, make into tdb/cart vars.
@@ -148,9 +148,9 @@
     }
 else if (sameString(btd->colorMode, BAM_COLOR_MODE_GRAY) &&
 	 sameString(btd->grayMode, BAM_GRAY_MODE_BASE_QUAL))
     {
-    UBYTE *quals = bamGetQueryQuals(bam);
+    UBYTE *quals = bamGetQueryQuals(bam, TRUE);
     lf->components = expandSfQuals(lf->components, quals, lf->orientation, core->l_qseq);
     lf->grayIx = maxShade - 3;
     }
 else if (sameString(btd->colorMode, BAM_COLOR_MODE_TAG) && isNotEmpty(btd->userTag))
@@ -337,15 +337,8 @@
 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. */
 {
-char *seqNameForBam = chromName;
-char *stripPrefix = trackDbSettingClosestToHome(tg->tdb, "stripPrefix");
-if (stripPrefix && startsWith(stripPrefix, chromName))
-    seqNameForBam = chromName + strlen(stripPrefix);
-char posForBam[512];
-safef(posForBam, sizeof(posForBam), "%s:%d-%d", seqNameForBam, winStart, winEnd);
-
 struct hash *pairHash = isPaired ? hashNew(18) : NULL;
 int minAliQual = atoi(cartOrTdbClosest(tg->tdb, BAM_MIN_ALI_QUAL, BAM_MIN_ALI_QUAL_DEFAULT));
 char *colorMode = cartOrTdbClosest(tg->tdb, BAM_COLOR_MODE, BAM_COLOR_MODE_DEFAULT);
 char *grayMode = cartOrTdbClosest(tg->tdb, BAM_GRAY_MODE, BAM_GRAY_MODE_DEFAULT);
@@ -358,10 +351,10 @@
     if (fileName == NULL)
 	errAbort("bamLoadItemsCore: can't find bigDataUrl for custom track %s", tg->mapName);
     }
 else
-    fileName = bamFileNameFromTable(database, tg->mapName, seqNameForBam);
-bamFetch(fileName, posForBam, (isPaired ? addBamPaired : addBam), &btd);
+    fileName = bamFileNameFromTable(database, tg->mapName, chromName);
+bamFetch(fileName, position, (isPaired ? addBamPaired : addBam), &btd);
 if (isPaired)
     {
     char *setting = trackDbSettingClosestToHomeOrDefault(tg->tdb, "pairSearchRange", "20000");
     int pairSearchRange = atoi(setting);
@@ -371,9 +364,10 @@
 	// (i.e. improperly paired reads whose mates aren't in the window)
 	struct hash *newPairHash = hashNew(12);
 	btd.nameHash = pairHash;
 	btd.pairHash = newPairHash;
-	safef(posForBam, sizeof(posForBam), "%s:%d-%d", seqNameForBam,
+	char posForBam[512];
+	safef(posForBam, sizeof(posForBam), "%s:%d-%d", chromName,
 	      max(0, winStart-pairSearchRange), winEnd+pairSearchRange);
 	bamFetch(fileName, posForBam, addBamPaired, &btd);
 	}
     struct hashEl *hel;