gatk-3.8/java/src/net/sf/samtools/ChunkTestHarness.java

52 lines
1.7 KiB
Java

package net.sf.samtools;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
/**
* Test harness for playing with sharding by BGZF block.
*
* @author mhanna
* @version 0.1
*/
public class ChunkTestHarness {
private static void usage() {
System.out.println("Usage: ChunkTestHarness <filename>.bam");
System.exit(1);
}
public static void main(String args[]) throws IOException {
if(args.length == 0)
usage();
String bamFileName = args[0];
if(!bamFileName.endsWith(".bam"))
usage();
File bamFile = new File(bamFileName);
if(!bamFile.exists())
usage();
FileInputStream bamInputStream = new FileInputStream(bamFile);
FileChannel bamInputChannel = bamInputStream.getChannel();
BAMChunkIterator chunkIterator = new BAMChunkIterator(bamInputChannel);
long chunkCount = 0;
long startTime = System.currentTimeMillis();
while(chunkIterator.hasNext()) {
Chunk chunk = chunkIterator.next();
chunkCount++;
System.out.printf("Chunk: [%d,%d)\tByte offsets: [%d,%d)%n",chunk.getChunkStart(),
chunk.getChunkEnd(),
chunk.getChunkStart()>>16,
chunk.getChunkEnd()>>16);
}
long endTime = System.currentTimeMillis();
System.out.printf("Number of chunks: %d; elasped time: %dms%n", chunkCount, endTime-startTime);
}
}