diff --git a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ReadShard.java b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ReadShard.java index 96b55674a..f5a4cb4cf 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ReadShard.java +++ b/public/java/src/org/broadinstitute/sting/gatk/datasources/reads/ReadShard.java @@ -58,6 +58,15 @@ public class ReadShard extends Shard { MAX_READS = bufferSize; } + /** + * What read buffer size are we using? + * + * @return + */ + public static int getReadBufferSize() { + return MAX_READS; + } + /** * Returns true if this shard is meant to buffer reads, rather * than just holding pointers to their locations. diff --git a/public/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReadsNano.java b/public/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReadsNano.java index dc774230b..9d543c322 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReadsNano.java +++ b/public/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReadsNano.java @@ -51,12 +51,12 @@ public class TraverseReadsNano extends TraversalEngine, /** our log, which we want to capture anything from this class */ protected static final Logger logger = Logger.getLogger(TraverseReadsNano.class); private static final boolean DEBUG = false; - final int bufferSize = ReadShard.MAX_READS; - final int mapGroupSize = bufferSize / 10 + 1; - final int nThreads; + final NanoScheduler nanoScheduler; public TraverseReadsNano(int nThreads) { - this.nThreads = nThreads; + final int bufferSize = ReadShard.getReadBufferSize() + 1; // actually has 1 more than max + final int mapGroupSize = bufferSize / 10 + 1; + nanoScheduler = new NanoScheduler(bufferSize, mapGroupSize, nThreads); } @Override @@ -87,18 +87,23 @@ public class TraverseReadsNano extends TraversalEngine, final ReadReferenceView reference = new NotImplementedReadReferenceView(dataProvider); final ReadBasedReferenceOrderedView rodView = new ReadBasedReferenceOrderedView(dataProvider); - final NanoScheduler nanoScheduler = new NanoScheduler(bufferSize, mapGroupSize, nThreads); nanoScheduler.setDebug(DEBUG); final TraverseReadsMap myMap = new TraverseReadsMap(reads, reference, rodView, walker); final TraverseReadsReduce myReduce = new TraverseReadsReduce(walker); T result = nanoScheduler.execute(reads.iterator().iterator(), myMap, sum, myReduce); - nanoScheduler.shutdown(); + // TODO -- how do we print progress? //printProgress(dataProvider.getShard(), ???); return result; } + @Override + public void printOnTraversalDone() { + nanoScheduler.shutdown(); + super.printOnTraversalDone(); //To change body of overridden methods use File | Settings | File Templates. + } + private static class NotImplementedReadReferenceView extends ReadReferenceView { private NotImplementedReadReferenceView(ShardDataProvider provider) { super(provider); diff --git a/public/java/src/org/broadinstitute/sting/utils/nanoScheduler/NanoScheduler.java b/public/java/src/org/broadinstitute/sting/utils/nanoScheduler/NanoScheduler.java index c587e44c6..4bca3728f 100644 --- a/public/java/src/org/broadinstitute/sting/utils/nanoScheduler/NanoScheduler.java +++ b/public/java/src/org/broadinstitute/sting/utils/nanoScheduler/NanoScheduler.java @@ -136,7 +136,7 @@ public class NanoScheduler { private void debugPrint(final String format, Object ... args) { if ( isDebug() ) - logger.info(String.format(format, args)); + logger.info("Thread " + Thread.currentThread().getId() + ":" + String.format(format, args)); } @@ -205,7 +205,7 @@ public class NanoScheduler { final MapFunction map, final ReduceType initialValue, final ReduceFunction reduce) { - debugPrint("Executing nanoScheduler with initial reduce value " + initialValue); + debugPrint("Executing nanoScheduler"); ReduceType sum = initialValue; while ( inputReader.hasNext() ) { try {