A few misc usability fixes:

- Clarify the message emitted when -XL is supplied so I don't spend another half day chasing a bug that doesn't exist.  
- Crash with a helpful message when running -nt with non-TreeReducible walkers.
- Crash with a helpful message when running -nt with reduceByInterval walkers.


git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3405 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
hanna 2010-05-20 19:02:02 +00:00
parent b543dd4ac4
commit 7389077b3b
3 changed files with 12 additions and 7 deletions

View File

@ -210,9 +210,9 @@ public class GenomeAnalysisEngine {
long toPruneSize = includeSortedSet.coveredSize();
long toExcludeSize = excludeSortedSet.coveredSize();
long intervalSize = intervals.coveredSize();
logger.info(String.format("Initial include intervals cover %d bases", toPruneSize));
logger.info(String.format("Excluding %d bases from original intervals (%.2f%% reduction)",
toExcludeSize, (toPruneSize - intervalSize) / (0.01 * toPruneSize)));
logger.info(String.format("Initial include intervals span %d loci; exclude intervals span %d loci", toPruneSize, toExcludeSize));
logger.info(String.format("Excluding %d loci from original intervals (%.2f%% reduction)",
toPruneSize - intervalSize, (toPruneSize - intervalSize) / (0.01 * toPruneSize)));
}
}
@ -295,7 +295,7 @@ public class GenomeAnalysisEngine {
* @param walkerType Type of walker.
* @return Name of the walker.
*/
public String getWalkerName(Class<Walker> walkerType) {
public String getWalkerName(Class<? extends Walker> walkerType) {
return walkerManager.getName(walkerType);
}

View File

@ -96,7 +96,7 @@ public class HierarchicalMicroScheduler extends MicroScheduler implements Hierar
public Object execute( Walker walker, ShardStrategy shardStrategy, int maxIterations ) {
// Fast fail for walkers not supporting TreeReducible interface.
if (!( walker instanceof TreeReducible ))
throw new IllegalArgumentException("Hierarchical microscheduler only works with TreeReducible walkers");
throw new IllegalArgumentException("The GATK can currently run in parallel only with TreeReducible walkers");
// Having maxiterations in the execute method is a holdover from the old TraversalEngine days.
// Lets do something else with this.

View File

@ -37,7 +37,9 @@ import org.broadinstitute.sting.gatk.iterators.StingSAMIterator;
import org.broadinstitute.sting.gatk.iterators.NullSAMIterator;
import org.broadinstitute.sting.gatk.Reads;
import org.broadinstitute.sting.gatk.GenomeAnalysisEngine;
import org.broadinstitute.sting.gatk.WalkerManager;
import org.broadinstitute.sting.utils.fasta.IndexedFastaSequenceFile;
import org.broadinstitute.sting.utils.StingException;
import java.util.*;
import java.io.File;
@ -80,10 +82,13 @@ public abstract class MicroScheduler {
*/
public static MicroScheduler create(GenomeAnalysisEngine engine, Walker walker, SAMDataSource reads, IndexedFastaSequenceFile reference, Collection<ReferenceOrderedDataSource> rods, int nThreadsToUse) {
if (walker instanceof TreeReducible && nThreadsToUse > 1) {
logger.info("Creating hierarchical microscheduler");
if(walker.isReduceByInterval())
throw new StingException(String.format("The analysis %s aggregates results by interval. Due to a current limitation of the GATK, analyses of this type do not support parallel execution. Please run your analysis without the -nt option.", engine.getWalkerName(walker.getClass())));
logger.info(String.format("Running the GATK in parallel mode with %d concurrent threads",nThreadsToUse));
return new HierarchicalMicroScheduler(engine, walker, reads, reference, rods, nThreadsToUse);
} else {
logger.info("Creating linear microscheduler");
if(nThreadsToUse > 1)
throw new StingException(String.format("The analysis %s currently does not support parallel execution. Please run your analysis without the -nt option.", engine.getWalkerName(walker.getClass())));
return new LinearMicroScheduler(engine, walker, reads, reference, rods);
}
}