Support for -continue_after_errors flag in the validating pileup walker in case you want to see errors as they arise, rather than aborting greedily

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@461 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
depristo 2009-04-17 03:13:11 +00:00
parent ee5ab9536f
commit 50ae1763f7
1 changed files with 20 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
import org.broadinstitute.sting.gatk.refdata.rodSAMPileup; import org.broadinstitute.sting.gatk.refdata.rodSAMPileup;
import org.broadinstitute.sting.utils.cmdLine.Argument; import org.broadinstitute.sting.utils.cmdLine.Argument;
import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.Utils;
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;
@ -16,21 +17,27 @@ import org.broadinstitute.sting.utils.ReadBackedPileup;
* To change this template use File | Settings | File Templates. * To change this template use File | Settings | File Templates.
*/ */
public class ValidatingPileupWalker extends LocusWalker<Integer, ValidationStats> { public class ValidatingPileupWalker extends LocusWalker<Integer, ValidationStats> {
@Argument(fullName="verbose",required=false,defaultValue="false") @Argument(fullName="continue_after_error",required=false,defaultValue="false")
public boolean VERBOSE; public boolean CONTINUE_AFTER_AN_ERROR;
public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) { public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) {
ReadBackedPileup pileup = new ReadBackedPileup(ref, context); Pileup pileup = new ReadBackedPileup(ref, context);
Pileup truePileup = (Pileup)tracker.lookup("pileup", null);
rodSAMPileup truePileup = (rodSAMPileup)tracker.lookup("pileup", null);
if ( truePileup == null ) if ( truePileup == null ) {
Utils.scareUser(String.format("No pileup data available at %s given GATK's output of %s -- this walker requires samtools pileup data over all bases", System.out.printf("No truth pileup data available at %s%n", pileup.getPileupString());
context.getLocation(), pileup.getBases())); if ( ! CONTINUE_AFTER_AN_ERROR ) {
Utils.scareUser(String.format("No pileup data available at %s given GATK's output of %s -- this walker requires samtools pileup data over all bases",
String pileupDiff = BasicPileup.pileupDiff(pileup, truePileup); context.getLocation(), pileup.getBases()));
if ( pileupDiff != null ) { }
out.printf("%s vs. %s%n", pileup.getPileupString(), truePileup.getPileupString()); } else {
throw new RuntimeException(String.format("Pileups aren't equal: %s", pileupDiff)); String pileupDiff = BasicPileup.pileupDiff(pileup, truePileup);
if ( pileupDiff != null ) {
out.printf("%s vs. %s%n", pileup.getPileupString(), truePileup.getPileupString());
if ( ! CONTINUE_AFTER_AN_ERROR ) {
throw new RuntimeException(String.format("Pileups aren't equal: %s", pileupDiff));
}
}
} }
return pileup.size(); return pileup.size();