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;
|
||||
|
||||
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.TreeReducible;
|
||||
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 TraverseLoci traversalEngine = null;
|
||||
|
||||
/**
|
||||
* 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 ) {
|
||||
super( walker, reads, refFile, rods );
|
||||
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 ) {
|
||||
|
|
@ -211,7 +208,7 @@ public class HierarchicalMicroScheduler extends MicroScheduler implements Reduce
|
|||
Shard shard = traverseTasks.remove();
|
||||
OutputMerger outputMerger = new OutputMerger();
|
||||
|
||||
ShardTraverser traverser = new ShardTraverser( traversalEngine,
|
||||
ShardTraverser traverser = new ShardTraverser( getTraversalEngine(),
|
||||
walker,
|
||||
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.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.OutputTracker;
|
||||
import org.broadinstitute.sting.gatk.walkers.Walker;
|
||||
|
|
@ -25,12 +25,12 @@ import java.util.concurrent.Callable;
|
|||
*/
|
||||
public class ShardTraverser implements Callable {
|
||||
private Walker walker;
|
||||
private TraverseLoci traversalEngine;
|
||||
private TraversalEngine traversalEngine;
|
||||
private Shard shard;
|
||||
private ShardDataProvider dataProvider;
|
||||
private OutputMerger output;
|
||||
|
||||
public ShardTraverser( TraverseLoci traversalEngine,
|
||||
public ShardTraverser( TraversalEngine traversalEngine,
|
||||
Walker walker,
|
||||
Shard shard,
|
||||
ShardDataProvider dataProvider,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import org.broadinstitute.sting.utils.Utils;
|
|||
import org.broadinstitute.sting.utils.Pileup;
|
||||
import org.broadinstitute.sting.utils.BasicPileup;
|
||||
import org.broadinstitute.sting.utils.ReadBackedPileup;
|
||||
import org.broadinstitute.sting.utils.StingException;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
|
|
@ -17,14 +18,14 @@ import org.broadinstitute.sting.utils.ReadBackedPileup;
|
|||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
@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)
|
||||
public boolean CONTINUE_AFTER_AN_ERROR = false;
|
||||
|
||||
public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) {
|
||||
Pileup pileup = new ReadBackedPileup(ref, context);
|
||||
Pileup truePileup = (Pileup)tracker.lookup("pileup", null);
|
||||
|
||||
|
||||
if ( truePileup == null ) {
|
||||
System.out.printf("No truth pileup data available at %s%n", pileup.getPileupString());
|
||||
if ( ! CONTINUE_AFTER_AN_ERROR ) {
|
||||
|
|
@ -51,6 +52,13 @@ public class ValidatingPileupWalker extends LocusWalker<Integer, ValidationStats
|
|||
sum.nBases += value;
|
||||
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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue