0ce1bce6d812a094882d0e857c3c23742f86d0fe
kent
Fri Jan 7 18:13:52 2011 -0800
Removing some debugging statements.
diff --git src/hg/hgTracks/bigBedTrack.c src/hg/hgTracks/bigBedTrack.c
index 331d6fb..e859a8d 100644
--- src/hg/hgTracks/bigBedTrack.c
+++ src/hg/hgTracks/bigBedTrack.c
@@ -1,147 +1,146 @@
/* bigBed - stuff to handle loading and display of bigBed type tracks in browser.
* Mostly just links to bed code, but handles a few things itself, like the dense
* drawing code. */
#include "common.h"
#include "hash.h"
#include "linefile.h"
#include "jksql.h"
#include "hdb.h"
#include "bedCart.h"
#include "hgTracks.h"
#include "hmmstats.h"
#include "localmem.h"
#include "wigCommon.h"
#include "bbiFile.h"
#include "obscure.h"
#include "bigWig.h"
#include "bigBed.h"
char *bbiNameFromSettingOrTable(struct trackDb *tdb, struct sqlConnection *conn, char *table)
/* Return file name from little table. */
{
char *fileName = cloneString(trackDbSetting(tdb, "bigDataUrl"));
if (fileName == NULL)
{
char query[256];
safef(query, sizeof(query), "select fileName from %s", table);
fileName = sqlQuickString(conn, query);
- uglyf("query=%s, fileName=%s
\n", query, fileName);
if (fileName == NULL)
errAbort("Missing fileName in %s table", table);
}
return fileName;
}
static struct bbiFile *fetchBbiForTrack(struct track *track)
/* Fetch bbiFile from track, opening it if it is not already open. */
{
struct bbiFile *bbi = track->bbiFile;
if (bbi == NULL)
{
struct sqlConnection *conn = hAllocConnTrack(database, track->tdb);
char *fileName = bbiNameFromSettingOrTable(track->tdb, conn, track->table);
hFreeConn(&conn);
bbi = track->bbiFile = bigBedFileOpen(fileName);
}
return bbi;
}
struct bigBedInterval *bigBedSelectRange(struct track *track,
char *chrom, int start, int end, struct lm *lm)
/* Return list of intervals in range. */
{
struct bbiFile *bbi = fetchBbiForTrack(track);
int maxItems = maximumTrackItems(track) + 1;
struct bigBedInterval *result = bigBedIntervalQuery(bbi, chrom, start, end, maxItems, lm);
if (slCount(result) >= maxItems)
{
track->limitedVis = tvDense;
track->limitedVisSet = TRUE;
result = NULL;
}
return result;
}
void bigBedAddLinkedFeaturesFrom(struct track *track,
char *chrom, int start, int end, int scoreMin, int scoreMax, boolean useItemRgb,
int fieldCount, struct linkedFeatures **pLfList)
/* Read in items in chrom:start-end from bigBed file named in track->bbiFileName, convert
* them to linkedFeatures, and add to head of list. */
{
struct lm *lm = lmInit(0);
struct trackDb *tdb = track->tdb;
struct bigBedInterval *bb, *bbList = bigBedSelectRange(track, chrom, 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 bed *bed = bedLoadN(bedRow, fieldCount);
struct linkedFeatures *lf = bedMungToLinkedFeatures(&bed, tdb, fieldCount,
scoreMin, scoreMax, useItemRgb);
slAddHead(pLfList, lf);
}
lmCleanup(&lm);
}
boolean canDrawBigBedDense(struct track *tg)
/* Return TRUE if conditions are such that can do the fast bigBed dense data fetch and
* draw. */
{
return tg->isBigBed;
}
void bigBedDrawDense(struct track *tg, int seqStart, int seqEnd,
struct hvGfx *hvg, int xOff, int yOff, int width,
MgFont *font, Color color)
/* Use big-bed summary data to quickly draw bigBed. */
{
struct bbiSummaryElement summary[width];
struct bbiFile *bbi = fetchBbiForTrack(tg);
if (bigBedSummaryArrayExtended(bbi, chromName, seqStart, seqEnd, width, summary))
{
char *denseCoverage = trackDbSettingClosestToHome(tg->tdb, "denseCoverage");
if (denseCoverage != NULL)
{
double startVal = 0, endVal = atof(denseCoverage);
if (endVal <= 0)
{
struct bbiSummaryElement sumAll = bbiTotalSummary(bbi);
double mean = sumAll.sumData/sumAll.validCount;
double std = calcStdFromSums(sumAll.sumData, sumAll.sumSquares, sumAll.validCount);
rangeFromMinMaxMeanStd(0, sumAll.maxVal, mean, std, &startVal, &endVal);
}
int x;
for (x=0; x 0)
{
Color color = shadesOfGray[grayInRange(summary[x].maxVal, startVal, endVal)];
hvGfxBox(hvg, x+xOff, yOff, 1, tg->heightPer, color);
}
}
}
else
{
int x;
for (x=0; x 0)
{
hvGfxBox(hvg, x+xOff, yOff, 1, tg->heightPer, color);
}
}
}
}
}
void bigBedMethods(struct track *track, struct trackDb *tdb,
int wordCount, char *words[])
/* Set up bigBed methods. */
{
complexBedMethods(track, tdb, TRUE, wordCount, words);
}