src/hg/hgTracks/hgTracks.c 1.1553
1.1553 2009/02/10 22:16:52 kent
Creating bigBed type custom tracks.
Index: src/hg/hgTracks/hgTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/hgTracks.c,v
retrieving revision 1.1552
retrieving revision 1.1553
diff -b -B -U 4 -r1.1552 -r1.1553
--- src/hg/hgTracks/hgTracks.c 9 Feb 2009 22:24:08 -0000 1.1552
+++ src/hg/hgTracks/hgTracks.c 10 Feb 2009 22:16:52 -0000 1.1553
@@ -29,8 +29,9 @@
#include "cutterTrack.h"
#include "wikiTrack.h"
#include "ctgPos.h"
#include "bed.h"
+#include "bigBed.h"
#include "bedCart.h"
#include "customTrack.h"
#include "cytoBand.h"
#include "ensFace.h"
@@ -2605,8 +2606,26 @@
tg = trackFromTrackDb(tdb);
tg->bbiFileName = trackDbSetting(tdb, "dataUrl");
tg->labelNextItemButtonable = FALSE;
}
+else if (sameString(type, "bigBed"))
+ {
+ /* Figure out file name from settings. */
+ char *fileName = trackDbSetting(tdb, "dataUrl");
+
+ /* Briefly open file to find field counts, and from that revise the
+ * tdb->type to be more complete. */
+ struct bbiFile *bbi = bigBedFileOpen(fileName);
+ char extra = (bbi->fieldCount > bbi->definedFieldCount ? '+' : '.');
+ char typeBuf[64];
+ safef(typeBuf, sizeof(typeBuf), "bigBed %d %c", bbi->definedFieldCount, extra);
+ tdb->type = cloneString(typeBuf);
+ bbiFileClose(&bbi);
+
+ /* Finish wrapping track around tdb. */
+ tg = trackFromTrackDb(tdb);
+ tg->bbiFileName = fileName;
+ }
else if (sameString(type, "bedGraph"))
{
tg = trackFromTrackDb(tdb);
tg->canPack = FALSE;