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;