Fixes for getting ValidatingPileup running in parallel.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@807 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
hanna 2009-05-22 21:20:24 +00:00
parent cd80e3f372
commit ec2e8d5726
3 changed files with 15 additions and 10 deletions

View File

@ -1,6 +1,7 @@
package org.broadinstitute.sting.gatk.executive; package org.broadinstitute.sting.gatk.executive;
import org.broadinstitute.sting.gatk.traversals.TraverseLoci; import org.broadinstitute.sting.gatk.traversals.TraverseLoci;
import org.broadinstitute.sting.gatk.traversals.TraversalEngine;
import org.broadinstitute.sting.gatk.walkers.Walker; import org.broadinstitute.sting.gatk.walkers.Walker;
import org.broadinstitute.sting.gatk.walkers.TreeReducible; import org.broadinstitute.sting.gatk.walkers.TreeReducible;
import org.broadinstitute.sting.gatk.dataSources.shards.ShardStrategy; import org.broadinstitute.sting.gatk.dataSources.shards.ShardStrategy;
@ -42,8 +43,6 @@ public class HierarchicalMicroScheduler extends MicroScheduler implements Reduce
*/ */
private static final int MAX_OUTSTANDING_OUTPUT_MERGES = 50; private static final int MAX_OUTSTANDING_OUTPUT_MERGES = 50;
private TraverseLoci traversalEngine = null;
/** /**
* Manage currently running threads. * Manage currently running threads.
*/ */
@ -62,8 +61,6 @@ public class HierarchicalMicroScheduler extends MicroScheduler implements Reduce
protected HierarchicalMicroScheduler( Walker walker, Reads reads, File refFile, List<ReferenceOrderedData<? extends ReferenceOrderedDatum>> rods, int nThreadsToUse ) { protected HierarchicalMicroScheduler( Walker walker, Reads reads, File refFile, List<ReferenceOrderedData<? extends ReferenceOrderedDatum>> rods, int nThreadsToUse ) {
super( walker, reads, refFile, rods ); super( walker, reads, refFile, rods );
this.threadPool = Executors.newFixedThreadPool(nThreadsToUse); this.threadPool = Executors.newFixedThreadPool(nThreadsToUse);
if( !(traversalEngine instanceof TraverseLoci) )
throw new UnsupportedOperationException("Traversal engine supports only traverse loci by reference at this time.");
} }
public Object execute( Walker walker, List<GenomeLoc> intervals ) { public Object execute( Walker walker, List<GenomeLoc> intervals ) {
@ -211,7 +208,7 @@ public class HierarchicalMicroScheduler extends MicroScheduler implements Reduce
Shard shard = traverseTasks.remove(); Shard shard = traverseTasks.remove();
OutputMerger outputMerger = new OutputMerger(); OutputMerger outputMerger = new OutputMerger();
ShardTraverser traverser = new ShardTraverser( traversalEngine, ShardTraverser traverser = new ShardTraverser( getTraversalEngine(),
walker, walker,
shard, shard,
getShardDataProvider(shard), getShardDataProvider(shard),

View File

@ -2,7 +2,7 @@ package org.broadinstitute.sting.gatk.executive;
import org.broadinstitute.sting.gatk.dataSources.providers.ShardDataProvider; import org.broadinstitute.sting.gatk.dataSources.providers.ShardDataProvider;
import org.broadinstitute.sting.gatk.dataSources.shards.Shard; import org.broadinstitute.sting.gatk.dataSources.shards.Shard;
import org.broadinstitute.sting.gatk.traversals.TraverseLoci; import org.broadinstitute.sting.gatk.traversals.TraversalEngine;
import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine;
import org.broadinstitute.sting.gatk.OutputTracker; import org.broadinstitute.sting.gatk.OutputTracker;
import org.broadinstitute.sting.gatk.walkers.Walker; import org.broadinstitute.sting.gatk.walkers.Walker;
@ -25,12 +25,12 @@ import java.util.concurrent.Callable;
*/ */
public class ShardTraverser implements Callable { public class ShardTraverser implements Callable {
private Walker walker; private Walker walker;
private TraverseLoci traversalEngine; private TraversalEngine traversalEngine;
private Shard shard; private Shard shard;
private ShardDataProvider dataProvider; private ShardDataProvider dataProvider;
private OutputMerger output; private OutputMerger output;
public ShardTraverser( TraverseLoci traversalEngine, public ShardTraverser( TraversalEngine traversalEngine,
Walker walker, Walker walker,
Shard shard, Shard shard,
ShardDataProvider dataProvider, ShardDataProvider dataProvider,

View File

@ -8,6 +8,7 @@ import org.broadinstitute.sting.utils.Utils;
import org.broadinstitute.sting.utils.Pileup; import org.broadinstitute.sting.utils.Pileup;
import org.broadinstitute.sting.utils.BasicPileup; import org.broadinstitute.sting.utils.BasicPileup;
import org.broadinstitute.sting.utils.ReadBackedPileup; import org.broadinstitute.sting.utils.ReadBackedPileup;
import org.broadinstitute.sting.utils.StingException;
/** /**
* Created by IntelliJ IDEA. * Created by IntelliJ IDEA.
@ -17,7 +18,7 @@ import org.broadinstitute.sting.utils.ReadBackedPileup;
* To change this template use File | Settings | File Templates. * To change this template use File | Settings | File Templates.
*/ */
@Requires(value={DataSource.READS,DataSource.REFERENCE},referenceMetaData=@RMD(name="pileup",type=rodSAMPileup.class)) @Requires(value={DataSource.READS,DataSource.REFERENCE},referenceMetaData=@RMD(name="pileup",type=rodSAMPileup.class))
public class ValidatingPileupWalker extends LocusWalker<Integer, ValidationStats> { public class ValidatingPileupWalker extends LocusWalker<Integer, ValidationStats> implements TreeReducible<ValidationStats> {
@Argument(fullName="continue_after_error",doc="Continue after an error",required=false) @Argument(fullName="continue_after_error",doc="Continue after an error",required=false)
public boolean CONTINUE_AFTER_AN_ERROR = false; public boolean CONTINUE_AFTER_AN_ERROR = false;
@ -51,6 +52,13 @@ public class ValidatingPileupWalker extends LocusWalker<Integer, ValidationStats
sum.nBases += value; sum.nBases += value;
return sum; return sum;
} }
public ValidationStats treeReduce( ValidationStats lhs, ValidationStats rhs ) {
ValidationStats combined = new ValidationStats();
combined.nLoci = lhs.nLoci + rhs.nLoci;
combined.nBases = lhs.nBases + rhs.nBases;
return combined;
}
} }
class ValidationStats { class ValidationStats {