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:
parent
cd80e3f372
commit
ec2e8d5726
|
|
@ -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),
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue