1156e1e9fd3c14d702772fdd0ff3978049f9e764
kent
  Tue Mar 29 14:33:06 2011 -0700
Having bigWigValsOnChromFetchData read bigWig directly rather than going through bigWigIntervalQuery in hopes of speeding up particularly on things that have a value for each base and are stored as fixedStep.   It does speed it up by 2x when you are not too i/o bound.
diff --git src/lib/bwgQuery.c src/lib/bwgQuery.c
index ba12585..1ea9dce 100644
--- src/lib/bwgQuery.c
+++ src/lib/bwgQuery.c
@@ -22,60 +22,48 @@
 
 static char const rcsid[] = "$Id: bwgQuery.c,v 1.24 2010/06/03 18:08:37 kent Exp $";
 
 struct bbiFile *bigWigFileOpen(char *fileName)
 /* Open up big wig file. */
 {
 return bbiFileOpen(fileName, bigWigSig, "big wig");
 }
 
 boolean bigWigFileCheckSigs(char *fileName)
 /* check file signatures at beginning and end of file */
 {
 return bbiFileCheckSigs(fileName, bigWigSig, "big wig");
 }
 
-struct bwgSectionHead
-/* A header from a bigWig file section */
-    {
-    bits32 chromId;	/* Chromosome short identifier. */
-    bits32 start,end;	/* Range covered. */
-    bits32 itemStep;	/* For some section types, the # of bases between items. */
-    bits32 itemSpan;	/* For some section types, the # of bases in each item. */
-    UBYTE type;		/* Type byte. */
-    UBYTE reserved;	/* Always zero for now. */
-    bits16 itemCount;	/* Number of items in block. */
-    };
-
 #ifdef OLD
 static void bwgSectionHeadRead(struct bbiFile *bwf, struct bwgSectionHead *head)
 /* Read section header. */
 {
 struct udcFile *udc = bwf->udc;
 boolean isSwapped = bwf->isSwapped;
 head->chromId = udcReadBits32(udc, isSwapped);
 head->start = udcReadBits32(udc, isSwapped);
 head->end = udcReadBits32(udc, isSwapped);
 head->itemStep = udcReadBits32(udc, isSwapped);
 head->itemSpan = udcReadBits32(udc, isSwapped);
 head->type = udcGetChar(udc);
 head->reserved = udcGetChar(udc);
 head->itemCount = udcReadBits16(udc, isSwapped);
 }
 #endif /* OLD */
 
-static void bwgSectionHeadFromMem(char **pPt, struct bwgSectionHead *head, boolean isSwapped)
+void bwgSectionHeadFromMem(char **pPt, struct bwgSectionHead *head, boolean isSwapped)
 /* Read section header. */
 {
 char *pt = *pPt;
 head->chromId = memReadBits32(&pt, isSwapped);
 head->start = memReadBits32(&pt, isSwapped);
 head->end = memReadBits32(&pt, isSwapped);
 head->itemStep = memReadBits32(&pt, isSwapped);
 head->itemSpan = memReadBits32(&pt, isSwapped);
 head->type = *pt++;
 head->reserved = *pt++;
 head->itemCount = memReadBits16(&pt, isSwapped);
 *pPt = pt;
 }
 
 static int bigWigBlockDumpIntersectingRange(boolean isSwapped, char *blockPt, char *blockEnd,