Merge branch 'master' into rr
This commit is contained in:
commit
6857d0324e
|
|
@ -97,7 +97,6 @@ public class HierarchicalMicroScheduler extends MicroScheduler implements Hierar
|
||||||
if (!( walker instanceof TreeReducible ))
|
if (!( walker instanceof TreeReducible ))
|
||||||
throw new IllegalArgumentException("The GATK can currently run in parallel only with TreeReducible walkers");
|
throw new IllegalArgumentException("The GATK can currently run in parallel only with TreeReducible walkers");
|
||||||
|
|
||||||
traversalEngine.startTimers();
|
|
||||||
ReduceTree reduceTree = new ReduceTree(this);
|
ReduceTree reduceTree = new ReduceTree(this);
|
||||||
initializeWalker(walker);
|
initializeWalker(walker);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,6 @@ public class LinearMicroScheduler extends MicroScheduler {
|
||||||
* @param shardStrategy A strategy for sharding the data.
|
* @param shardStrategy A strategy for sharding the data.
|
||||||
*/
|
*/
|
||||||
public Object execute(Walker walker, ShardStrategy shardStrategy) {
|
public Object execute(Walker walker, ShardStrategy shardStrategy) {
|
||||||
traversalEngine.startTimers();
|
|
||||||
walker.initialize();
|
walker.initialize();
|
||||||
Accumulator accumulator = Accumulator.create(engine,walker);
|
Accumulator accumulator = Accumulator.create(engine,walker);
|
||||||
|
|
||||||
|
|
@ -54,6 +53,7 @@ public class LinearMicroScheduler extends MicroScheduler {
|
||||||
if ( done || shard == null ) // we ran out of shards that aren't owned
|
if ( done || shard == null ) // we ran out of shards that aren't owned
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
traversalEngine.startTimersIfNecessary();
|
||||||
if(shard.getShardType() == Shard.ShardType.LOCUS) {
|
if(shard.getShardType() == Shard.ShardType.LOCUS) {
|
||||||
LocusWalker lWalker = (LocusWalker)walker;
|
LocusWalker lWalker = (LocusWalker)walker;
|
||||||
WindowMaker windowMaker = new WindowMaker(shard, engine.getGenomeLocParser(), getReadIterator(shard), shard.getGenomeLocs(), engine.getSampleMetadata());
|
WindowMaker windowMaker = new WindowMaker(shard, engine.getGenomeLocParser(), getReadIterator(shard), shard.getGenomeLocs(), engine.getSampleMetadata());
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ public class ShardTraverser implements Callable {
|
||||||
|
|
||||||
public Object call() {
|
public Object call() {
|
||||||
try {
|
try {
|
||||||
|
traversalEngine.startTimersIfNecessary();
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
Object accumulator = walker.reduceInit();
|
Object accumulator = walker.reduceInit();
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ public abstract class TraversalEngine<M,T,WalkerType extends Walker<M,T>,Provide
|
||||||
LinkedList<ProcessingHistory> history = new LinkedList<ProcessingHistory>();
|
LinkedList<ProcessingHistory> history = new LinkedList<ProcessingHistory>();
|
||||||
|
|
||||||
/** We use the SimpleTimer to time our run */
|
/** We use the SimpleTimer to time our run */
|
||||||
private SimpleTimer timer = new SimpleTimer("Traversal");
|
private SimpleTimer timer = null;
|
||||||
|
|
||||||
// How long can we go without printing some progress info?
|
// How long can we go without printing some progress info?
|
||||||
private static final int PRINT_PROGRESS_CHECK_FREQUENCY_IN_CYCLES = 1000;
|
private static final int PRINT_PROGRESS_CHECK_FREQUENCY_IN_CYCLES = 1000;
|
||||||
|
|
@ -209,11 +209,16 @@ public abstract class TraversalEngine<M,T,WalkerType extends Walker<M,T>,Provide
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Should be called to indicate that we're going to process records and the timer should start ticking
|
* Should be called to indicate that we're going to process records and the timer should start ticking. This
|
||||||
|
* function should be called right before any traversal work is done, to avoid counting setup costs in the
|
||||||
|
* processing costs and inflating the estimated runtime.
|
||||||
*/
|
*/
|
||||||
public void startTimers() {
|
public void startTimersIfNecessary() {
|
||||||
timer.start();
|
if ( timer == null ) {
|
||||||
lastProgressPrintTime = timer.currentTime();
|
timer = new SimpleTimer("Traversal");
|
||||||
|
timer.start();
|
||||||
|
lastProgressPrintTime = timer.currentTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import org.broadinstitute.sting.gatk.walkers.RodWalker;
|
||||||
import org.broadinstitute.sting.gatk.walkers.TreeReducible;
|
import org.broadinstitute.sting.gatk.walkers.TreeReducible;
|
||||||
import org.broadinstitute.sting.gatk.walkers.Window;
|
import org.broadinstitute.sting.gatk.walkers.Window;
|
||||||
import org.broadinstitute.sting.gatk.walkers.varianteval.evaluators.VariantEvaluator;
|
import org.broadinstitute.sting.gatk.walkers.varianteval.evaluators.VariantEvaluator;
|
||||||
|
import org.broadinstitute.sting.gatk.walkers.varianteval.stratifications.JexlExpression;
|
||||||
import org.broadinstitute.sting.gatk.walkers.varianteval.stratifications.VariantStratifier;
|
import org.broadinstitute.sting.gatk.walkers.varianteval.stratifications.VariantStratifier;
|
||||||
import org.broadinstitute.sting.gatk.walkers.varianteval.util.*;
|
import org.broadinstitute.sting.gatk.walkers.varianteval.util.*;
|
||||||
import org.broadinstitute.sting.gatk.walkers.variantrecalibration.Tranche;
|
import org.broadinstitute.sting.gatk.walkers.variantrecalibration.Tranche;
|
||||||
|
|
@ -24,6 +25,7 @@ import org.broadinstitute.sting.utils.codecs.vcf.VCFHeader;
|
||||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFUtils;
|
import org.broadinstitute.sting.utils.codecs.vcf.VCFUtils;
|
||||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||||
import org.broadinstitute.sting.utils.exceptions.StingException;
|
import org.broadinstitute.sting.utils.exceptions.StingException;
|
||||||
|
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.Allele;
|
import org.broadinstitute.sting.utils.variantcontext.Allele;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
|
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.VariantContextUtils;
|
import org.broadinstitute.sting.utils.variantcontext.VariantContextUtils;
|
||||||
|
|
@ -224,12 +226,6 @@ public class VariantEvalWalker extends RodWalker<Integer, Integer> implements Tr
|
||||||
}
|
}
|
||||||
sampleNamesForStratification.add(ALL_SAMPLE_NAME);
|
sampleNamesForStratification.add(ALL_SAMPLE_NAME);
|
||||||
|
|
||||||
// Initialize select expressions
|
|
||||||
for (VariantContextUtils.JexlVCMatchExp jexl : VariantContextUtils.initializeMatchExps(SELECT_NAMES, SELECT_EXPS)) {
|
|
||||||
SortableJexlVCMatchExp sjexl = new SortableJexlVCMatchExp(jexl.name, jexl.exp);
|
|
||||||
jexlExpressions.add(sjexl);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add select expressions for anything in the tranches file
|
// Add select expressions for anything in the tranches file
|
||||||
if ( TRANCHE_FILENAME != null ) {
|
if ( TRANCHE_FILENAME != null ) {
|
||||||
// we are going to build a few select names automatically from the tranches file
|
// we are going to build a few select names automatically from the tranches file
|
||||||
|
|
@ -240,16 +236,27 @@ public class VariantEvalWalker extends RodWalker<Integer, Integer> implements Tr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize select expressions
|
||||||
|
for (VariantContextUtils.JexlVCMatchExp jexl : VariantContextUtils.initializeMatchExps(SELECT_NAMES, SELECT_EXPS)) {
|
||||||
|
SortableJexlVCMatchExp sjexl = new SortableJexlVCMatchExp(jexl.name, jexl.exp);
|
||||||
|
jexlExpressions.add(sjexl);
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the set of stratifications and evaluations to use
|
// Initialize the set of stratifications and evaluations to use
|
||||||
stratificationObjects = variantEvalUtils.initializeStratificationObjects(this, NO_STANDARD_STRATIFICATIONS, STRATIFICATIONS_TO_USE);
|
stratificationObjects = variantEvalUtils.initializeStratificationObjects(this, NO_STANDARD_STRATIFICATIONS, STRATIFICATIONS_TO_USE);
|
||||||
Set<Class<? extends VariantEvaluator>> evaluationObjects = variantEvalUtils.initializeEvaluationObjects(NO_STANDARD_MODULES, MODULES_TO_USE);
|
Set<Class<? extends VariantEvaluator>> evaluationObjects = variantEvalUtils.initializeEvaluationObjects(NO_STANDARD_MODULES, MODULES_TO_USE);
|
||||||
|
boolean usingJEXL = false;
|
||||||
for ( VariantStratifier vs : getStratificationObjects() ) {
|
for ( VariantStratifier vs : getStratificationObjects() ) {
|
||||||
if ( vs.getClass().getSimpleName().equals("Filter") )
|
if ( vs.getClass().getSimpleName().equals("Filter") )
|
||||||
byFilterIsEnabled = true;
|
byFilterIsEnabled = true;
|
||||||
else if ( vs.getClass().getSimpleName().equals("Sample") )
|
else if ( vs.getClass().getSimpleName().equals("Sample") )
|
||||||
perSampleIsEnabled = true;
|
perSampleIsEnabled = true;
|
||||||
|
usingJEXL = usingJEXL || vs.getClass().equals(JexlExpression.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( TRANCHE_FILENAME != null && ! usingJEXL )
|
||||||
|
throw new UserException.BadArgumentValue("tf", "Requires the JexlExpression ST to enabled");
|
||||||
|
|
||||||
// Initialize the evaluation contexts
|
// Initialize the evaluation contexts
|
||||||
evaluationContexts = variantEvalUtils.initializeEvaluationContexts(stratificationObjects, evaluationObjects, null, null);
|
evaluationContexts = variantEvalUtils.initializeEvaluationContexts(stratificationObjects, evaluationObjects, null, null);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue