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,