diff --git a/java/src/org/broadinstitute/sting/gatk/dataSources/providers/ReferenceProvider.java b/java/src/org/broadinstitute/sting/gatk/dataSources/providers/ReferenceProvider.java index df46e9619..f2e088a49 100755 --- a/java/src/org/broadinstitute/sting/gatk/dataSources/providers/ReferenceProvider.java +++ b/java/src/org/broadinstitute/sting/gatk/dataSources/providers/ReferenceProvider.java @@ -2,6 +2,7 @@ package org.broadinstitute.sting.gatk.dataSources.providers; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.fasta.IndexedFastaSequenceFile; +import org.broadinstitute.sting.gatk.dataSources.shards.Shard; import edu.mit.broad.picard.reference.ReferenceSequence; import net.sf.samtools.util.StringUtil; @@ -16,7 +17,8 @@ public class ReferenceProvider { private ReferenceSequence referenceSequence; private GenomeLoc referenceInterval; - public ReferenceProvider( IndexedFastaSequenceFile sequenceFile, GenomeLoc position ) { + public ReferenceProvider( IndexedFastaSequenceFile sequenceFile, Shard shard ) { + GenomeLoc position = shard.getGenomeLoc(); this.referenceSequence = sequenceFile.getSubsequenceAt( position.getContig(), position.getStart(), position.getStop() ); diff --git a/java/src/org/broadinstitute/sting/gatk/executive/HierarchicalMicroScheduler.java b/java/src/org/broadinstitute/sting/gatk/executive/HierarchicalMicroScheduler.java index d404250d0..3ea4bce11 100755 --- a/java/src/org/broadinstitute/sting/gatk/executive/HierarchicalMicroScheduler.java +++ b/java/src/org/broadinstitute/sting/gatk/executive/HierarchicalMicroScheduler.java @@ -117,7 +117,7 @@ public class HierarchicalMicroScheduler extends MicroScheduler implements Reduce throw new StingException("Unable to retrieve result", ex ); } - traversalEngine.printOnTraversalDone("loci", result); + traversalEngine.printOnTraversalDone(result); walker.onTraversalDone(result); } diff --git a/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java b/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java index 0be399f48..0e246a0a7 100644 --- a/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java +++ b/java/src/org/broadinstitute/sting/gatk/executive/LinearMicroScheduler.java @@ -5,12 +5,10 @@ import org.broadinstitute.sting.gatk.dataSources.providers.ReferenceProvider; import org.broadinstitute.sting.gatk.dataSources.shards.Shard; import org.broadinstitute.sting.gatk.dataSources.shards.ShardStrategy; import org.broadinstitute.sting.gatk.dataSources.simpleDataSources.SAMDataSource; -import org.broadinstitute.sting.gatk.dataSources.simpleDataSources.SimpleDataSourceLoadException; import org.broadinstitute.sting.gatk.iterators.StingSAMIterator; import org.broadinstitute.sting.gatk.traversals.TraverseByReads; import org.broadinstitute.sting.gatk.traversals.TraverseLociByReference; import org.broadinstitute.sting.gatk.traversals.TraverseReads; -import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.walkers.ReadWalker; import org.broadinstitute.sting.gatk.walkers.Walker; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; @@ -61,7 +59,7 @@ public class LinearMicroScheduler extends MicroScheduler { StingSAMIterator readShard = dataSource.seek(shard); - ReferenceProvider referenceProvider = new ReferenceProvider(reference, shard.getGenomeLoc()); + ReferenceProvider referenceProvider = new ReferenceProvider(reference, shard); LocusContextProvider locusProvider = new LocusContextProvider(readShard); if (!isAReadWalker) { @@ -73,8 +71,7 @@ public class LinearMicroScheduler extends MicroScheduler { readShard.close(); } - String type = (isAReadWalker) ? "read" : "loci"; - traversalEngine.printOnTraversalDone(type, accumulator); + traversalEngine.printOnTraversalDone(accumulator); walker.onTraversalDone(accumulator); } diff --git a/java/src/org/broadinstitute/sting/gatk/executive/ShardTraverser.java b/java/src/org/broadinstitute/sting/gatk/executive/ShardTraverser.java index 06f5714b6..10330aefb 100755 --- a/java/src/org/broadinstitute/sting/gatk/executive/ShardTraverser.java +++ b/java/src/org/broadinstitute/sting/gatk/executive/ShardTraverser.java @@ -53,12 +53,12 @@ public class ShardTraverser implements Callable { } public Object call() { - Object accumulator = ((LocusWalker)walker).reduceInit(); + Object accumulator = walker.reduceInit(); CloseableIterator readShard = null; readShard = reads.seek( shard ); - ReferenceProvider referenceProvider = new ReferenceProvider( reference, shard.getGenomeLoc() ); + ReferenceProvider referenceProvider = new ReferenceProvider( reference, shard ); LocusContextProvider locusProvider = new LocusContextProvider( readShard ); OutputTracker outputTracker = GenomeAnalysisTK.Instance.getOutputTracker(); diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java index 1ab5510bf..a24e95684 100755 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java @@ -280,6 +280,16 @@ public abstract class TraversalEngine { } } + /** + * A passthrough method so that subclasses can report which types of traversals they're using. + * TODO: Make this method abstract once all traversals support it. + * @param sum Result of the computation. + * @param Type of the computation. + */ + public void printOnTraversalDone( T sum ) { + throw new UnsupportedOperationException( "This method should be overridden." ); + } + /** * Called after a traversal to print out information about the traversal process * @@ -287,7 +297,7 @@ public abstract class TraversalEngine { * @param sum The reduce result of the traversal * @param ReduceType of the traversal */ - public void printOnTraversalDone(final String type, T sum) { + protected void printOnTraversalDone(final String type, T sum) { printProgress(true, type, null); logger.info("Traversal reduce result is " + sum); final long curTime = System.currentTimeMillis(); diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseLociByReference.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseLociByReference.java index bd9cf4df1..d5119f0a8 100755 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseLociByReference.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseLociByReference.java @@ -90,4 +90,14 @@ public class TraverseLociByReference extends TraversalEngine { return sum; } + + /** + * Temporary override of printOnTraversalDone. + * TODO: Add some sort of TE.getName() function once all TraversalEngines are ported. + * @param sum Result of the computation. + * @param Type of the result. + */ + public void printOnTraversalDone( T sum ) { + printOnTraversalDone( "loci", sum ); + } } diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReads.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReads.java index ae2c0ef4e..763bf812f 100755 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReads.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseReads.java @@ -119,4 +119,13 @@ public class TraverseReads extends TraversalEngine { return sum; } + /** + * Temporary override of printOnTraversalDone. + * TODO: Add some sort of TE.getName() function once all TraversalEngines are ported. + * @param sum Result of the computation. + * @param Type of the result. + */ + public void printOnTraversalDone( T sum ) { + printOnTraversalDone( "reads", sum ); + } }