64a0072b507cd210fe56ebfbc214bb1bdaa7e60d
kent
  Mon Apr 8 19:14:49 2013 -0700
Sorting before building index.
diff --git src/utils/bedToBigBed/bedToBigBed.c src/utils/bedToBigBed/bedToBigBed.c
index 8ad1037..65a909b 100644
--- src/utils/bedToBigBed/bedToBigBed.c
+++ src/utils/bedToBigBed/bedToBigBed.c
@@ -642,30 +642,32 @@
 /* Call monster zoom maker library function that bedGraphToBigWig also uses. */
 int zoomLevels = bbiWriteZoomLevels(lf, f, blockSize, itemsPerSlot,
     bedWriteReducedOnceReturnReducedTwice, fieldCount,
     doCompress, indexOffset - dataOffset, 
     usageList, resTryCount, resScales, resSizes, 
     zoomAmounts, zoomDataOffsets, zoomIndexOffsets, &totalSum);
 
 /* Write out extra indexes if need be. */
 if (eim)
     {
     int i;
     for (i=0; i < eim->indexCount; ++i)
         {
 	eim->fileOffsets[i] = ftell(f);
 	maxBedNameSize = eim->maxFieldSize[i];
+	qsort(eim->chunkArrayArray[i], bedCount, 
+	    sizeof(struct bbNamedFileChunk), bbNamedFileChunkCmpByName);
 	assert(sizeof(struct bbNamedFileChunk) == sizeof(eim->chunkArrayArray[i][0]));
 	bptFileBulkIndexToOpenFile(eim->chunkArrayArray[i], sizeof(eim->chunkArrayArray[i][0]), 
 	    bedCount, blockSize, bbNamedFileChunkKey, maxBedNameSize, bbNamedFileChunkVal, 
 	    sizeof(bits64) + sizeof(bits64), f);
 	verboseTime(1, "Sorting and writing extra index %d", i);
 	}
     }
 
 /* Figure out buffer size needed for uncompression if need be. */
 if (doCompress)
     {
     int maxZoomUncompSize = itemsPerSlot * sizeof(struct bbiSummaryOnDisk);
     uncompressBufSize = max(maxBlockSize, maxZoomUncompSize);
     }