diff --git a/build.xml b/build.xml index 438e9c90c..1e4badc2c 100644 --- a/build.xml +++ b/build.xml @@ -168,7 +168,7 @@ - + diff --git a/public/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java b/public/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java index ebdafc703..efdc64066 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java @@ -114,7 +114,7 @@ public abstract class CommandLineExecutable extends CommandLineProgram { logger.warn("################################################################################"); } - Collection oldStyle = ListFileUtils.unpackRODBindings(getArgumentCollection().RODBindings, getArgumentCollection().DBSNPFile, parser); + Collection oldStyle = ListFileUtils.unpackRODBindingsOldStyle(getArgumentCollection().RODBindings, parser); oldStyle.addAll(newStyle); engine.setReferenceMetaDataFiles(oldStyle); diff --git a/public/java/src/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollection.java b/public/java/src/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollection.java index ee2e85025..62135f21b 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollection.java +++ b/public/java/src/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollection.java @@ -117,11 +117,6 @@ public class GATKArgumentCollection { @Argument(fullName = "nonDeterministicRandomSeed", shortName = "ndrs", doc = "Makes the GATK behave non deterministically, that is, the random numbers generated will be different in every run", required = false) public boolean nonDeterministicRandomSeed = false; - - @Element(required = false) - @Input(fullName = "DBSNP", shortName = "D", doc = "DBSNP file", required = false) - public String DBSNPFile = null; - /** * The override mechanism in the GATK, by default, populates the command-line arguments, then * the defaults from the walker annotations. Unfortunately, walker annotations should be trumped @@ -380,9 +375,6 @@ public class GATKArgumentCollection { if (!other.excludeIntervals.equals(this.excludeIntervals)) { return false; } - if (!other.DBSNPFile.equals(this.DBSNPFile)) { - return false; - } if (!other.unsafe.equals(this.unsafe)) { return false; } diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java b/public/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java index 7ee560d1d..297c163ab 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java @@ -68,66 +68,81 @@ public class RefMetaDataTracker { // // ------------------------------------------------------------------------------------------ - public List getValues(Class type) { + public List getValues(final Class type) { return addValues(map.keySet(), type, new ArrayList(), null, false, false); } - public List getValues(Class type, final GenomeLoc onlyAtThisLoc) { + public List getValues(final Class type, final GenomeLoc onlyAtThisLoc) { return addValues(map.keySet(), type, new ArrayList(), onlyAtThisLoc, true, false); } - public List getValues(Class type, final String name) { + public List getValues(final Class type, final String name) { return addValues(name, type, new ArrayList(), getTrackDataByName(name), null, false, false); } - public List getValues(Class type, final String name, final GenomeLoc onlyAtThisLoc) { + public List getValues(final Class type, final String name, final GenomeLoc onlyAtThisLoc) { return addValues(name, type, new ArrayList(), getTrackDataByName(name), onlyAtThisLoc, true, false); } - public List getValues(Class type, final Collection names) { + public List getValues(final Class type, final Collection names) { return addValues(names, type, new ArrayList(), null, false, false); } - public List getValues(Class type, final Collection names, final GenomeLoc onlyAtThisLoc) { + public List getValues(final Class type, final Collection names, final GenomeLoc onlyAtThisLoc) { return addValues(names, type, new ArrayList(), onlyAtThisLoc, true, false); } - public T getFirstValue(Class type) { + public T getFirstValue(final Class type) { return safeGetFirst(getValues(type)); } - public T getFirstValue(Class type, final GenomeLoc onlyAtThisLoc) { + public T getFirstValue(final Class type, final GenomeLoc onlyAtThisLoc) { return safeGetFirst(getValues(type, onlyAtThisLoc)); } - public T getFirstValue(Class type, final String name) { + public T getFirstValue(final Class type, final String name) { return safeGetFirst(getValues(type, name)); } - public T getFirstValue(Class type, final String name, final GenomeLoc onlyAtThisLoc) { + public T getFirstValue(final Class type, final String name, final GenomeLoc onlyAtThisLoc) { return safeGetFirst(getValues(type, name, onlyAtThisLoc)); } - public T getFirstValue(Class type, final Collection names) { + public T getFirstValue(final Class type, final Collection names) { return safeGetFirst(getValues(type, names)); } - public T getFirstValue(Class type, final Collection names, final GenomeLoc onlyAtThisLoc) { + public T getFirstValue(final Class type, final Collection names, final GenomeLoc onlyAtThisLoc) { return safeGetFirst(getValues(type, names, onlyAtThisLoc)); } // // ROD binding accessors // - public List getValues(RodBinding rodBinding) { + public List getValues(final RodBinding rodBinding) { return getValues(rodBinding.getType(), rodBinding.getVariableName()); } - public List getValues(RodBinding rodBinding, final GenomeLoc onlyAtThisLoc) { + + public List getValues(final Collection> rodBindings) { + List results = new ArrayList(); + for ( RodBinding rodBinding : rodBindings ) + results.addAll(getValues(rodBinding)); + return results; + } + + public List getValues(final RodBinding rodBinding, final GenomeLoc onlyAtThisLoc) { return getValues(rodBinding.getType(), rodBinding.getVariableName(), onlyAtThisLoc); } - public T getFirstValue(RodBinding rodBinding) { + public List getValues(final Collection> rodBindings, final GenomeLoc onlyAtThisLoc) { + List results = new ArrayList(); + for ( RodBinding rodBinding : rodBindings ) + results.addAll(getValues(rodBinding, onlyAtThisLoc)); + return results; + } + + public T getFirstValue(final RodBinding rodBinding) { return getFirstValue(rodBinding.getType(), rodBinding.getVariableName()); } - public T getFirstValue(RodBinding rodBinding, final GenomeLoc onlyAtThisLoc) { + public T getFirstValue(final RodBinding rodBinding, final GenomeLoc onlyAtThisLoc) { return getFirstValue(rodBinding.getType(), rodBinding.getVariableName(), onlyAtThisLoc); } - public boolean hasValues(RodBinding rodBinding) { + public boolean hasValues(final RodBinding rodBinding) { return hasValues(rodBinding.getVariableName()); } - public List getValuesAsGATKFeatures(RodBinding rodBinding) { + public List getValuesAsGATKFeatures(final RodBinding rodBinding) { return getValuesAsGATKFeatures(rodBinding.getVariableName()); } @@ -142,7 +157,7 @@ public class RefMetaDataTracker { * @param * @return */ - final private T safeGetFirst(List l) { + final private T safeGetFirst(final List l) { // todo: should we be warning people here? Throwing an error? return l.isEmpty() ? null : l.get(0); } @@ -277,10 +292,12 @@ public class RefMetaDataTracker { for ( String name : names ) { RODRecordList rodList = getTrackDataByName(name); // require that the name is an exact match addValues(name, type, values, rodList, curLocation, requireStartHere, takeFirstOnly ); - } + } + + return values; + } + - return values; - } private List addValues(final String name, final Class type, diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java index 1484841b3..fd9bf5734 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java @@ -25,9 +25,11 @@ package org.broadinstitute.sting.gatk.walkers; +import org.broad.tribble.Feature; import org.broad.tribble.dbsnp.DbSNPFeature; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -68,6 +70,9 @@ public class PileupWalker extends LocusWalker implements TreeR @Argument(fullName="showIndelPileups",shortName="show_indels",doc="In addition to base pileups, generate pileups of extended indel events") public boolean SHOW_INDEL_PILEUPS = false; + @Argument(fullName="rodBind",shortName="-B",doc="Add these ROD bindings to the output Pileup", required=false) + public List> rods; + public void initialize() { } @@ -112,18 +117,11 @@ public class PileupWalker extends LocusWalker implements TreeR */ private String getReferenceOrderedData( RefMetaDataTracker tracker ) { ArrayList rodStrings = new ArrayList(); - for ( GATKFeature datum : tracker.getAllValuesAsGATKFeatures() ) { - if ( datum != null && datum.getUnderlyingObject() instanceof ReferenceOrderedDatum ) { - rodStrings.add(((ReferenceOrderedDatum)datum.getUnderlyingObject()).toSimpleString()); // TODO: Aaron: this line still survives, try to remove it - } + for ( Feature datum : tracker.getValues(rods) ) { + rodStrings.add(datum.toString()); } String rodString = Utils.join(", ", rodStrings); - DbSNPFeature dbsnp = tracker.getFirstValue(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME, DbSNPFeature.class); - - if ( dbsnp != null) - rodString += DbSNPHelper.toMediumString(dbsnp); - if ( !rodString.equals("") ) rodString = "[ROD: " + rodString + "]"; @@ -132,8 +130,6 @@ public class PileupWalker extends LocusWalker implements TreeR @Override public void onTraversalDone(Integer result) { - // Double check traversal result to make count is the same. - // TODO: Is this check necessary? out.println("[REDUCE RESULT] Traversal result is: " + result); } } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java index 97a4b6a8f..e4773bf4d 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java @@ -26,7 +26,9 @@ package org.broadinstitute.sting.gatk.walkers.beagle; import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.datasources.rmd.ReferenceOrderedDataSource; @@ -51,15 +53,22 @@ import static java.lang.Math.log10; /** * Takes files produced by Beagle imputation engine and creates a vcf with modified annotations. */ -@Requires(value={},referenceMetaData=@RMD(name=BeagleOutputToVCFWalker.INPUT_ROD_NAME, type=VariantContext.class)) - +@Requires(value={}) public class BeagleOutputToVCFWalker extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; - public static final String INPUT_ROD_NAME = "variant"; - public static final String COMP_ROD_NAME = "comp"; - public static final String R2_ROD_NAME = "beagleR2"; - public static final String PROBS_ROD_NAME = "beagleProbs"; - public static final String PHASED_ROD_NAME = "beaglePhased"; + @Input(fullName="comp", shortName = "comp", doc="Comparison VCF file", required=false) + public RodBinding comp; + + @Input(fullName="beagleR2", shortName = "beagleR2", doc="VCF file", required=true) + public RodBinding beagleR2; + + @Input(fullName="beagleProbs", shortName = "beagleProbs", doc="VCF file", required=true) + public RodBinding beagleProbs; + + @Input(fullName="beaglePhased", shortName = "beaglePhased", doc="VCF file", required=true) + public RodBinding beaglePhased; @Output(doc="File to which variants should be written",required=true) protected VCFWriter vcfWriter = null; @@ -98,7 +107,7 @@ public class BeagleOutputToVCFWalker extends RodWalker { final List dataSources = this.getToolkit().getRodDataSources(); for( final ReferenceOrderedDataSource source : dataSources ) { - if (source.getName().equals(COMP_ROD_NAME)) { + if (source.getName().equals(comp.getVariableName())) { hInfo.add(new VCFInfoHeaderLine("ACH", 1, VCFHeaderLineType.Integer, "Allele Count from Comparison ROD at this site")); hInfo.add(new VCFInfoHeaderLine("ANH", 1, VCFHeaderLineType.Integer, "Allele Frequency from Comparison ROD at this site")); hInfo.add(new VCFInfoHeaderLine("AFH", 1, VCFHeaderLineType.Float, "Allele Number from Comparison ROD at this site")); @@ -107,7 +116,7 @@ public class BeagleOutputToVCFWalker extends RodWalker { } - Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(INPUT_ROD_NAME)); + Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(variants.getVariableName())); final VCFHeader vcfHeader = new VCFHeader(hInfo, samples); vcfWriter.writeHeader(vcfHeader); @@ -119,9 +128,9 @@ public class BeagleOutputToVCFWalker extends RodWalker { return 0; GenomeLoc loc = context.getLocation(); - VariantContext vc_input = tracker.getFirstValue(VariantContext.class, INPUT_ROD_NAME, loc); + VariantContext vc_input = tracker.getFirstValue(variants, loc); - VariantContext vc_comp = tracker.getFirstValue(VariantContext.class, COMP_ROD_NAME, loc); + VariantContext vc_comp = tracker.getFirstValue(comp, loc); if ( vc_input == null ) return 0; @@ -130,30 +139,24 @@ public class BeagleOutputToVCFWalker extends RodWalker { vcfWriter.add(vc_input, ref.getBase()); return 1; } - List r2rods = tracker.getValues(R2_ROD_NAME); + BeagleFeature beagleR2Feature = tracker.getFirstValue(beagleR2); // ignore places where we don't have a variant - if ( r2rods.size() == 0 ) + if ( beagleR2Feature == null ) return 0; - BeagleFeature beagleR2Feature = (BeagleFeature)r2rods.get(0); - List gProbsrods = tracker.getValues(PROBS_ROD_NAME); + BeagleFeature beagleProbsFeature = tracker.getFirstValue(beagleProbs); // ignore places where we don't have a variant - if ( gProbsrods.size() == 0 ) + if ( beagleProbsFeature == null ) return 0; - BeagleFeature beagleProbsFeature = (BeagleFeature)gProbsrods.get(0); - - List gPhasedrods = tracker.getValues(PHASED_ROD_NAME); - + BeagleFeature beaglePhasedFeature = tracker.getFirstValue(beaglePhased); // ignore places where we don't have a variant - if ( gPhasedrods.size() == 0 ) + if ( beaglePhasedFeature == null ) return 0; - BeagleFeature beaglePhasedFeature = (BeagleFeature)gPhasedrods.get(0); - // get reference base for current position byte refByte = ref.getBase(); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java index 354b032f2..291ef7201 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/ProduceBeagleInputWalker.java @@ -25,10 +25,7 @@ package org.broadinstitute.sting.gatk.walkers.beagle; -import org.broadinstitute.sting.commandline.Argument; -import org.broadinstitute.sting.commandline.Hidden; -import org.broadinstitute.sting.commandline.Input; -import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.*; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; @@ -54,10 +51,13 @@ import java.util.*; /** * Produces an input file to Beagle imputation engine, listing genotype likelihoods for each sample in input variant file */ -@Requires(value={},referenceMetaData=@RMD(name=ProduceBeagleInputWalker.ROD_NAME, type=VariantContext.class)) +@Requires(value={}) public class ProduceBeagleInputWalker extends RodWalker { - public static final String ROD_NAME = "variant"; - public static final String VALIDATION_ROD_NAME = "validation"; + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; + + @Input(fullName="validation", shortName = "validation", doc="Input VCF file", required=false) + public RodBinding validation; @Output(doc="File to which BEAGLE input should be written",required=true) protected PrintStream beagleWriter = null; @@ -99,7 +99,7 @@ public class ProduceBeagleInputWalker extends RodWalker { public void initialize() { - samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(ROD_NAME)); + samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(variants.getVariableName())); beagleWriter.print("marker alleleA alleleB"); for ( String sample : samples ) @@ -121,8 +121,8 @@ public class ProduceBeagleInputWalker extends RodWalker { public Integer map( RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context ) { if( tracker != null ) { GenomeLoc loc = context.getLocation(); - VariantContext variant_eval = tracker.getFirstValue(VariantContext.class, ROD_NAME, loc); - VariantContext validation_eval = tracker.getFirstValue(VariantContext.class, VALIDATION_ROD_NAME, loc); + VariantContext variant_eval = tracker.getFirstValue(variants, loc); + VariantContext validation_eval = tracker.getFirstValue(validation, loc); if ( goodSite(variant_eval,validation_eval) ) { if ( useValidation(validation_eval, ref) ) { @@ -303,9 +303,7 @@ public class ProduceBeagleInputWalker extends RodWalker { } private void initializeVcfWriter() { - - final ArrayList inputNames = new ArrayList(); - inputNames.add( VALIDATION_ROD_NAME ); + final List inputNames = Arrays.asList(validation.getVariableName()); // setup the header fields Set hInfo = new HashSet(); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/VariantsToBeagleUnphasedWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/VariantsToBeagleUnphasedWalker.java index b95f3097d..3c221087a 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/VariantsToBeagleUnphasedWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/VariantsToBeagleUnphasedWalker.java @@ -26,7 +26,9 @@ package org.broadinstitute.sting.gatk.walkers.beagle; import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -54,9 +56,10 @@ import java.util.Set; * in input variant file. Will additional hold back a fraction of the sites for evaluation, marking the * genotypes at that sites as missing, and writing the truth of these sites to a second VCF file */ -@Requires(value={},referenceMetaData=@RMD(name= VariantsToBeagleUnphasedWalker.ROD_NAME, type=VariantContext.class)) +@Requires(value={}) public class VariantsToBeagleUnphasedWalker extends RodWalker { - public static final String ROD_NAME = "variant"; + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Output(doc="File to which BEAGLE unphased genotypes should be written",required=true) protected PrintStream beagleWriter = null; @@ -75,7 +78,7 @@ public class VariantsToBeagleUnphasedWalker extends RodWalker private int testSetSize = 0; public void initialize() { - samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(ROD_NAME)); + samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(variants.getVariableName())); beagleWriter.print("I marker alleleA alleleB"); for ( String sample : samples ) @@ -102,7 +105,7 @@ public class VariantsToBeagleUnphasedWalker extends RodWalker public Integer map( RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context ) { if( tracker != null ) { GenomeLoc loc = context.getLocation(); - VariantContext vc = tracker.getFirstValue(VariantContext.class, ROD_NAME, loc); + VariantContext vc = tracker.getFirstValue(variants, loc); if ( ProduceBeagleInputWalker.canBeOutputToBeagle(vc) ) { // do we want to hold back this site? diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/GCContentByIntervalWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/GCContentByIntervalWalker.java similarity index 96% rename from public/java/src/org/broadinstitute/sting/gatk/walkers/GCContentByIntervalWalker.java rename to public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/GCContentByIntervalWalker.java index 68bea4dba..a4944e939 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/GCContentByIntervalWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/GCContentByIntervalWalker.java @@ -22,12 +22,13 @@ * OTHER DEALINGS IN THE SOFTWARE. */ -package org.broadinstitute.sting.gatk.walkers; +package org.broadinstitute.sting.gatk.walkers.coverage; import org.broadinstitute.sting.commandline.Output; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; +import org.broadinstitute.sting.gatk.walkers.*; import org.broadinstitute.sting.utils.BaseUtils; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.collections.Pair; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceWalker.java index 2865c2380..fe58fb038 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceWalker.java @@ -25,6 +25,8 @@ package org.broadinstitute.sting.gatk.walkers.fasta; +import org.broadinstitute.sting.commandline.Input; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -45,6 +47,8 @@ import java.util.Collection; @Reference(window=@Window(start=-1,stop=50)) @Requires(value={DataSource.REFERENCE}) public class FastaAlternateReferenceWalker extends FastaReferenceWalker { + @Input(fullName="snpmask", shortName = "snpmask", doc="SNP mask VCF file", required=true) + public RodBinding snpmask; private int deletionBasesRemaining = 0; @@ -57,20 +61,18 @@ public class FastaAlternateReferenceWalker extends FastaReferenceWalker { String refBase = String.valueOf((char)ref.getBase()); - Collection vcs = tracker.getValues(VariantContext.class); + Collection vcs = tracker.getValues(snpmask); // Check to see if we have a called snp for ( VariantContext vc : vcs ) { - if ( !vc.getSource().startsWith("snpmask") ) { - if ( vc.isDeletion()) { - deletionBasesRemaining = vc.getReference().length(); - // delete the next n bases, not this one - return new Pair(context.getLocation(), refBase); - } else if ( vc.isInsertion()) { - return new Pair(context.getLocation(), refBase.concat(vc.getAlternateAllele(0).toString())); - } else if (vc.isSNP()) { - return new Pair(context.getLocation(), vc.getAlternateAllele(0).toString()); - } + if ( vc.isDeletion()) { + deletionBasesRemaining = vc.getReference().length(); + // delete the next n bases, not this one + return new Pair(context.getLocation(), refBase); + } else if ( vc.isInsertion()) { + return new Pair(context.getLocation(), refBase.concat(vc.getAlternateAllele(0).toString())); + } else if (vc.isSNP()) { + return new Pair(context.getLocation(), vc.getAlternateAllele(0).toString()); } } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/filters/VariantFiltrationWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/filters/VariantFiltrationWalker.java index 9e89944a5..22c45df19 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/filters/VariantFiltrationWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/filters/VariantFiltrationWalker.java @@ -26,7 +26,9 @@ package org.broadinstitute.sting.gatk.walkers.filters; import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.datasources.rmd.ReferenceOrderedDataSource; @@ -46,9 +48,11 @@ import java.util.*; /** * Filters variant calls using a number of user-selectable, parameterizable criteria. */ -@Requires(value={},referenceMetaData=@RMD(name="variant", type=VariantContext.class)) +@Requires(value={}) @Reference(window=@Window(start=-50,stop=50)) public class VariantFiltrationWalker extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Output(doc="File to which variants should be written", required=true) protected VCFWriter writer = null; @@ -80,7 +84,6 @@ public class VariantFiltrationWalker extends RodWalker { List filterExps; List genotypeFilterExps; - public static final String INPUT_VARIANT_ROD_BINDING_NAME = "variant"; public static final String CLUSTERED_SNP_FILTER_NAME = "SnpCluster"; private ClusteredSnps clusteredSNPs = null; private GenomeLoc previousMaskPosition = null; @@ -92,8 +95,7 @@ public class VariantFiltrationWalker extends RodWalker { private void initializeVcfWriter() { - final ArrayList inputNames = new ArrayList(); - inputNames.add( INPUT_VARIANT_ROD_BINDING_NAME ); + final List inputNames = Arrays.asList(variants.getVariableName()); // setup the header fields Set hInfo = new HashSet(); @@ -149,7 +151,7 @@ public class VariantFiltrationWalker extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getValues(VariantContext.class, INPUT_VARIANT_ROD_BINDING_NAME, context.getLocation()); + Collection VCs = tracker.getValues(variants, context.getLocation()); // is there a SNP mask present? boolean hasMask = tracker.getValues("mask").size() > 0; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/VariantEvaluator.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/VariantEvaluator.java index e29e7ed50..83a1c2f3b 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/VariantEvaluator.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/evaluators/VariantEvaluator.java @@ -8,6 +8,8 @@ import org.broadinstitute.sting.gatk.walkers.varianteval.util.NewEvaluationConte import org.broadinstitute.sting.gatk.walkers.varianteval.util.StateKey; import org.broadinstitute.sting.utils.variantcontext.VariantContext; +import java.util.Collection; + public abstract class VariantEvaluator { public void initialize(VariantEvalWalker walker) {} @@ -17,25 +19,18 @@ public abstract class VariantEvaluator { public abstract int getComparisonOrder(); // called at all sites, regardless of eval context itself; useful for counting processed bases - public void update0(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { } + public void update0(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - public String update1(VariantContext vc1, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { + } + + public String update1(VariantContext eval, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { return null; } - public String update1(VariantContext vc1, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context, NewEvaluationContext group) { - return update1(vc1, tracker, ref, context); - } - - - public String update2(VariantContext vc1, VariantContext vc2, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { + public String update2(VariantContext eval, VariantContext comp, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { return null; } - public String update2(VariantContext vc1, VariantContext vc2, RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context, NewEvaluationContext group) { - return update2(vc1, vc2, tracker, ref, context); - } - public void finalizeEvaluation() {} protected double rate(long n, long d) { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java index 79cd89ca3..61a959c99 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/varianteval/util/VariantEvalUtils.java @@ -330,9 +330,7 @@ public class VariantEvalUtils { * to do this) * @return a mapping of track names to a list of VariantContext objects */ - public HashMap> bindVariantContexts(RefMetaDataTracker tracker, ReferenceContext ref, Set trackNames, EnumSet allowableTypes, boolean byFilter, boolean subsetBySample, boolean trackPerSample) { - HashMap> bindings = new HashMap>(); - + protected void bindVariantContexts(HashMap> bindings, RefMetaDataTracker tracker, ReferenceContext ref, Set trackNames, EnumSet allowableTypes, boolean byFilter, boolean subsetBySample, boolean trackPerSample) { for (String trackName : trackNames) { HashMap vcs = new HashMap(); @@ -364,8 +362,6 @@ public class VariantEvalUtils { bindings.put(trackName, vcs); } } - - return bindings; } /** @@ -393,11 +389,8 @@ public class VariantEvalUtils { } } - HashMap> evalBindings = bindVariantContexts(tracker, ref, evalNames, allowableTypes, byFilter, true, perSampleIsEnabled); - HashMap> compBindings = bindVariantContexts(tracker, ref, compNames, allowableTypes, byFilter, false, false); - - vcs.putAll(compBindings); - vcs.putAll(evalBindings); + bindVariantContexts(vcs, tracker, ref, evalNames, allowableTypes, byFilter, true, perSampleIsEnabled); + bindVariantContexts(vcs, tracker, ref, compNames, allowableTypes, byFilter, false, false); return vcs; } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java index eec9bda79..6d1d75c03 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java @@ -54,7 +54,6 @@ import java.util.*; @Reference(window=@Window(start=-50,stop=50)) @Requires(value={}) public class CombineVariants extends RodWalker { - @Output(doc="File to which variants should be written",required=true) protected VCFWriter vcfWriter = null; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/FilterLiftedVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/FilterLiftedVariants.java index 2a5a4e97c..4f36bb6a3 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/FilterLiftedVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/FilterLiftedVariants.java @@ -24,7 +24,9 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -44,8 +46,10 @@ import java.util.Set; * Filters a lifted-over VCF file for ref bases that have been changed. */ @Reference(window=@Window(start=0,stop=100)) -@Requires(value={},referenceMetaData=@RMD(name="variant",type= VariantContext.class)) +@Requires(value={}) public class FilterLiftedVariants extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; private static final int MAX_VARIANT_SIZE = 100; @@ -55,10 +59,10 @@ public class FilterLiftedVariants extends RodWalker { private long failedLocs = 0, totalLocs = 0; public void initialize() { - Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList("variant")); - Map vcfHeaders = VCFUtils.getVCFHeadersFromRods(getToolkit(), Arrays.asList("variant")); + Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(variants.getVariableName())); + Map vcfHeaders = VCFUtils.getVCFHeadersFromRods(getToolkit(), Arrays.asList(variants.getVariableName())); - final VCFHeader vcfHeader = new VCFHeader(vcfHeaders.containsKey("variant") ? vcfHeaders.get("variant").getMetaData() : null, samples); + final VCFHeader vcfHeader = new VCFHeader(vcfHeaders.containsKey(variants.getVariableName()) ? vcfHeaders.get(variants.getVariableName()).getMetaData() : null, samples); writer.writeHeader(vcfHeader); } @@ -85,7 +89,7 @@ public class FilterLiftedVariants extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getValues(VariantContext.class, "variant", context.getLocation()); + Collection VCs = tracker.getValues(variants, context.getLocation()); for ( VariantContext vc : VCs ) filterAndWrite(ref.getBases(), vc); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java index e7e21d256..38f6a2f39 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java @@ -28,7 +28,9 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; import net.sf.samtools.Cigar; import net.sf.samtools.CigarElement; import net.sf.samtools.CigarOperator; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -46,8 +48,10 @@ import java.util.*; * Left-aligns indels from a variants file. */ @Reference(window=@Window(start=-200,stop=200)) -@Requires(value={},referenceMetaData=@RMD(name="variant", type=VariantContext.class)) +@Requires(value={}) public class LeftAlignVariants extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Output(doc="File to which variants should be written",required=true) protected VCFWriter baseWriter = null; @@ -55,10 +59,10 @@ public class LeftAlignVariants extends RodWalker { private SortingVCFWriter writer; public void initialize() { - Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList("variant")); - Map vcfHeaders = VCFUtils.getVCFHeadersFromRods(getToolkit(), Arrays.asList("variant")); + Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(variants.getVariableName())); + Map vcfHeaders = VCFUtils.getVCFHeadersFromRods(getToolkit(), Arrays.asList(variants.getVariableName())); - Set headerLines = vcfHeaders.get("variant").getMetaData(); + Set headerLines = vcfHeaders.get(variants.getVariableName()).getMetaData(); baseWriter.writeHeader(new VCFHeader(headerLines, samples)); writer = new SortingVCFWriter(baseWriter, 200); @@ -68,7 +72,7 @@ public class LeftAlignVariants extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getValues(VariantContext.class, "variant", context.getLocation()); + Collection VCs = tracker.getValues(variants, context.getLocation()); int changedSites = 0; for ( VariantContext vc : VCs ) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LiftoverVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LiftoverVariants.java index 5e85d03cb..4a4ab1eb6 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LiftoverVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LiftoverVariants.java @@ -30,7 +30,9 @@ import net.sf.picard.util.Interval; import net.sf.samtools.SAMFileHeader; import net.sf.samtools.SAMFileReader; import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -49,8 +51,10 @@ import java.util.*; /** * Lifts a VCF file over from one build to another. Note that the resulting VCF could be mis-sorted. */ -@Requires(value={},referenceMetaData=@RMD(name="variant", type=VariantContext.class)) +@Requires(value={}) public class LiftoverVariants extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Output(doc="File to which variants should be written",required=true) protected File file = null; @@ -85,12 +89,12 @@ public class LiftoverVariants extends RodWalker { throw new UserException.BadInput("the chain file you are using is not compatible with the reference you are trying to lift over to; please use the appropriate chain file for the given reference"); } - Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList("variant")); - Map vcfHeaders = VCFUtils.getVCFHeadersFromRods(getToolkit(), Arrays.asList("variant")); + Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(variants.getVariableName())); + Map vcfHeaders = VCFUtils.getVCFHeadersFromRods(getToolkit(), Arrays.asList(variants.getVariableName())); Set metaData = new HashSet(); - if ( vcfHeaders.containsKey("variant") ) - metaData.addAll(vcfHeaders.get("variant").getMetaData()); + if ( vcfHeaders.containsKey(variants.getVariableName()) ) + metaData.addAll(vcfHeaders.get(variants.getVariableName()).getMetaData()); if ( RECORD_ORIGINAL_LOCATION ) { metaData.add(new VCFInfoHeaderLine("OriginalChr", 1, VCFHeaderLineType.String, "Original contig name for the record")); metaData.add(new VCFInfoHeaderLine("OriginalStart", 1, VCFHeaderLineType.Integer, "Original start position for the record")); @@ -143,7 +147,7 @@ public class LiftoverVariants extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getValues(VariantContext.class, "variant", context.getLocation()); + Collection VCs = tracker.getValues(variants, context.getLocation()); for ( VariantContext vc : VCs ) convertAndWrite(vc, ref); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/RandomlySplitVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/RandomlySplitVariants.java index b3926bc34..8ccdef2d3 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/RandomlySplitVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/RandomlySplitVariants.java @@ -25,7 +25,9 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; @@ -39,16 +41,15 @@ import org.broadinstitute.sting.utils.exceptions.UserException; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; +import java.util.*; /** * Takes a VCF file, randomly splits variants into two different sets, and outputs 2 new VCFs with the results. */ -@Requires(value={},referenceMetaData=@RMD(name="variant", type=VariantContext.class)) +@Requires(value={}) public class RandomlySplitVariants extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Output(fullName="out1", shortName="o1", doc="File #1 to which variants should be written", required=true) protected VCFWriter vcfWriter1 = null; @@ -61,8 +62,6 @@ public class RandomlySplitVariants extends RodWalker { @Argument(fullName="fractionToOut1", shortName="fraction", doc="Fraction of records to be placed in out1 (must be 0 >= fraction <= 1); all other records are placed in out2", required=false) protected double fraction = 0.5; - protected static final String INPUT_VARIANT_ROD_BINDING_NAME = "variant"; - protected int iFraction; /** @@ -74,8 +73,7 @@ public class RandomlySplitVariants extends RodWalker { iFraction = (int)(fraction * 1000.0); // setup the header info - final ArrayList inputNames = new ArrayList(); - inputNames.add( INPUT_VARIANT_ROD_BINDING_NAME ); + final List inputNames = Arrays.asList(variants.getVariableName()); Set samples = SampleUtils.getUniqueSamplesFromRods(getToolkit(), inputNames); Set hInfo = new HashSet(); hInfo.addAll(VCFUtils.getHeaderFields(getToolkit(), inputNames)); @@ -97,7 +95,7 @@ public class RandomlySplitVariants extends RodWalker { if ( tracker == null ) return 0; - Collection vcs = tracker.getValues(VariantContext.class, INPUT_VARIANT_ROD_BINDING_NAME, context.getLocation()); + Collection vcs = tracker.getValues(variants, context.getLocation()); for ( VariantContext vc : vcs ) { int random = GenomeAnalysisEngine.getRandomGenerator().nextInt(1000); if ( random < iFraction ) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index dc24287e9..1926d68a0 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -24,7 +24,7 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; -import org.broadinstitute.sting.commandline.Hidden; +import org.broadinstitute.sting.commandline.*; import org.broadinstitute.sting.utils.MathUtils; import org.broadinstitute.sting.utils.codecs.vcf.*; import org.broadinstitute.sting.utils.exceptions.UserException; @@ -32,8 +32,6 @@ import org.broadinstitute.sting.utils.text.XReadLines; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.MendelianViolation; import org.broadinstitute.sting.utils.variantcontext.VariantContext; -import org.broadinstitute.sting.commandline.Argument; -import org.broadinstitute.sting.commandline.Output; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -54,8 +52,10 @@ import java.util.*; * Takes a VCF file, selects variants based on sample(s) in which it was found and/or on various annotation criteria, * recompute the value of certain annotations based on the new sample set, and output a new VCF with the results. */ -@Requires(value={},referenceMetaData=@RMD(name="variant", type=VariantContext.class)) +@Requires(value={}) public class SelectVariants extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Output(doc="File to which variants should be written",required=true) protected VCFWriter vcfWriter = null; @@ -156,9 +156,6 @@ public class SelectVariants extends RodWalker { private Set mvSet = new HashSet(); - /* default name for the variant dataset (VCF) */ - private final String variantRodName = "variant"; - /* variables used by the SELECT RANDOM modules */ private boolean SELECT_RANDOM_NUMBER = false; @@ -183,8 +180,7 @@ public class SelectVariants extends RodWalker { */ public void initialize() { // Get list of samples to include in the output - ArrayList rodNames = new ArrayList(); - rodNames.add(variantRodName); + List rodNames = Arrays.asList(variants.getVariableName()); Map vcfRods = VCFUtils.getVCFHeadersFromRods(getToolkit(), rodNames); TreeSet vcfSamples = new TreeSet(SampleUtils.getSampleList(vcfRods, VariantContextUtils.GenotypeMergeType.REQUIRE_UNIQUE)); @@ -308,7 +304,7 @@ public class SelectVariants extends RodWalker { if ( tracker == null ) return 0; - Collection vcs = tracker.getValues(VariantContext.class, variantRodName, context.getLocation()); + Collection vcs = tracker.getValues(variants, context.getLocation()); if ( vcs == null || vcs.size() == 0) { return 0; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java index 6655d26dc..775d749b6 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/ValidateVariants.java @@ -29,6 +29,8 @@ import org.broad.tribble.TribbleException; import org.broad.tribble.dbsnp.DbSNPFeature; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Hidden; +import org.broadinstitute.sting.commandline.Input; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.datasources.rmd.ReferenceOrderedDataSource; @@ -50,10 +52,10 @@ import java.util.Set; * Validates a variants file. */ @Reference(window=@Window(start=0,stop=100)) -@Requires(value={},referenceMetaData=@RMD(name=ValidateVariants.TARGET_ROD_NAME, type=VariantContext.class)) +@Requires(value={}) public class ValidateVariants extends RodWalker { - - protected static final String TARGET_ROD_NAME = "variant"; + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; public enum ValidationType { ALL, REF, IDS, ALLELES, CHR_COUNTS @@ -74,19 +76,14 @@ public class ValidateVariants extends RodWalker { private File file = null; public void initialize() { - for ( ReferenceOrderedDataSource source : getToolkit().getRodDataSources() ) { - if ( source.getName().equals(TARGET_ROD_NAME) ) { - file = source.getFile(); - break; - } - } + file = new File(variants.getSource()); } public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { if ( tracker == null ) return 0; - Collection VCs = tracker.getValues(VariantContext.class, "variant", context.getLocation()); + Collection VCs = tracker.getValues(variants, context.getLocation()); for ( VariantContext vc : VCs ) validate(vc, tracker, ref); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantValidationAssessor.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantValidationAssessor.java index 245ed9edd..93f5c872f 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantValidationAssessor.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantValidationAssessor.java @@ -26,7 +26,9 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -45,10 +47,10 @@ import java.util.*; * Converts Sequenom files to a VCF annotated with QC metrics (HW-equilibrium, % failed probes) */ @Reference(window=@Window(start=0,stop=40)) -@Requires(value={},referenceMetaData=@RMD(name=VariantValidationAssessor.INPUT_VARIANT_ROD_BINDING_NAME, type=VariantContext.class)) +@Requires(value={}) public class VariantValidationAssessor extends RodWalker,Integer> { - - public static final String INPUT_VARIANT_ROD_BINDING_NAME = "variant"; + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Output(doc="File to which variants should be written",required=true) protected VCFWriter vcfwriter = null; @@ -93,7 +95,7 @@ public class VariantValidationAssessor extends RodWalker inputNames = new ArrayList(); - inputNames.add( INPUT_VARIANT_ROD_BINDING_NAME ); + final List inputNames = Arrays.asList(variants.getVariableName()); // setup the header fields Set hInfo = new HashSet(); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java index 4f0821477..fb6ccfb76 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java @@ -24,6 +24,8 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; +import org.broadinstitute.sting.commandline.Input; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.utils.MathUtils; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.commandline.Argument; @@ -45,6 +47,9 @@ import java.util.*; */ @Requires(value={}) public class VariantsToTable extends RodWalker { + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; + @Output(doc="File to which results should be written",required=true) protected PrintStream out; @@ -132,8 +137,7 @@ public class VariantsToTable extends RodWalker { return 0; if ( ++nRecords < MAX_RECORDS || MAX_RECORDS == -1 ) { - Collection vcs = tracker.getValues(VariantContext.class, context.getLocation()); - for ( VariantContext vc : vcs) { + for ( VariantContext vc : tracker.getValues(variants, context.getLocation())) { if ( (keepMultiAllelic || vc.isBiallelic()) && ( showFiltered || vc.isNotFiltered() ) ) { List vals = extractFields(vc, fieldsToTake, ALLOW_MISSING_DATA); out.println(Utils.join("\t", vals)); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCF.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCF.java index 39822d7a6..b57606927 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCF.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToVCF.java @@ -29,7 +29,9 @@ import net.sf.samtools.util.CloseableIterator; import org.broad.tribble.dbsnp.DbSNPCodec; import org.broad.tribble.dbsnp.DbSNPFeature; import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.datasources.rmd.ReferenceOrderedDataSource; @@ -54,7 +56,7 @@ import java.util.*; /** * Converts variants from other file formats to VCF format. */ -@Requires(value={},referenceMetaData=@RMD(name=VariantsToVCF.INPUT_ROD_NAME, type=VariantContext.class)) +@Requires(value={}) @Reference(window=@Window(start=-40,stop=40)) public class VariantsToVCF extends RodWalker { @@ -62,7 +64,8 @@ public class VariantsToVCF extends RodWalker { protected VCFWriter baseWriter = null; private SortingVCFWriter vcfwriter; // needed because hapmap indel records move - public static final String INPUT_ROD_NAME = "variant"; + @Input(fullName="variant", shortName = "V", doc="Input VCF file", required=true) + public RodBinding variants; @Argument(fullName="sample", shortName="sample", doc="The sample name represented by the variant rod (for data like GELI with genotypes)", required=false) protected String sampleName = null; @@ -98,8 +101,8 @@ public class VariantsToVCF extends RodWalker { } // set the appropriate sample name if necessary - if ( sampleName != null && vc.hasGenotypes() && vc.hasGenotype(INPUT_ROD_NAME) ) { - Genotype g = Genotype.modifyName(vc.getGenotype(INPUT_ROD_NAME), sampleName); + if ( sampleName != null && vc.hasGenotypes() && vc.hasGenotype(variants.getVariableName()) ) { + Genotype g = Genotype.modifyName(vc.getGenotype(variants.getVariableName()), sampleName); Map genotypes = new HashMap(); genotypes.put(sampleName, g); vc = VariantContext.modifyGenotypes(vc, genotypes); @@ -114,7 +117,7 @@ public class VariantsToVCF extends RodWalker { private Collection getVariantContexts(RefMetaDataTracker tracker, ReferenceContext ref) { // we need to special case the HapMap format because indels aren't handled correctly - List features = tracker.getValues(INPUT_ROD_NAME); + List features = tracker.getValues(variants.getVariableName()); if ( features.size() > 0 && features.get(0) instanceof HapMapFeature ) { ArrayList hapmapVCs = new ArrayList(features.size()); for ( Object feature : features ) { @@ -148,7 +151,7 @@ public class VariantsToVCF extends RodWalker { } refBase = ref.getBases()[hapmap.getStart() - ref.getWindow().getStart()]; } - VariantContext vc = VariantContextAdaptors.toVariantContext(INPUT_ROD_NAME, hapmap, ref); + VariantContext vc = VariantContextAdaptors.toVariantContext(variants.getVariableName(), hapmap, ref); if ( vc != null ) { if ( refBase != null ) { Map attrs = new HashMap(vc.getAttributes()); @@ -162,7 +165,7 @@ public class VariantsToVCF extends RodWalker { } // for everything else, we can just convert to VariantContext - return tracker.getValues(VariantContext.class, INPUT_ROD_NAME, ref.getLocus()); + return tracker.getValues(variants, ref.getLocus()); } private DbSNPFeature getDbsnpFeature(String rsID) { @@ -216,10 +219,10 @@ public class VariantsToVCF extends RodWalker { samples.add(sampleName); } else { // try VCF first - samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(INPUT_ROD_NAME)); + samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList(variants.getVariableName())); if ( samples.isEmpty() ) { - List rods = tracker.getValues(INPUT_ROD_NAME); + List rods = tracker.getValues(variants.getVariableName()); if ( rods.size() == 0 ) throw new IllegalStateException("No rod data is present"); diff --git a/public/java/src/org/broadinstitute/sting/utils/text/ListFileUtils.java b/public/java/src/org/broadinstitute/sting/utils/text/ListFileUtils.java index b8e39fb61..d758b4e5c 100644 --- a/public/java/src/org/broadinstitute/sting/utils/text/ListFileUtils.java +++ b/public/java/src/org/broadinstitute/sting/utils/text/ListFileUtils.java @@ -93,7 +93,8 @@ public class ListFileUtils { * @param RODBindings a text equivale * @return a list of expanded, bound RODs. */ - public static Collection unpackRODBindings(final Collection RODBindings, final String dbSNPFile, final ParsingEngine parser) { + @Deprecated + public static Collection unpackRODBindingsOldStyle(final Collection RODBindings, final ParsingEngine parser) { // todo -- this is a strange home for this code. Move into ROD system Collection rodBindings = new ArrayList(); @@ -122,17 +123,6 @@ public class ListFileUtils { rodBindings.add(new RMDTriplet(name,type,fileName,storageType,tags)); } - if (dbSNPFile != null) { - if(dbSNPFile.toLowerCase().contains("vcf")) - throw new UserException("--DBSNP (-D) argument currently does not support VCF. To use dbSNP in VCF format, please use -B:dbsnp,vcf ."); - - final Tags tags = parser.getTags(dbSNPFile); - String fileName = expandFileName(dbSNPFile); - RMDTriplet.RMDStorageType storageType = fileName.toLowerCase().endsWith("stdin") ? RMDTriplet.RMDStorageType.STREAM : RMDTriplet.RMDStorageType.FILE; - - rodBindings.add(new RMDTriplet(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME,"dbsnp",fileName,storageType,tags)); - } - return rodBindings; } diff --git a/public/java/test/org/broadinstitute/sting/BaseTest.java b/public/java/test/org/broadinstitute/sting/BaseTest.java index ef46d4bff..13b3e1df3 100755 --- a/public/java/test/org/broadinstitute/sting/BaseTest.java +++ b/public/java/test/org/broadinstitute/sting/BaseTest.java @@ -64,9 +64,7 @@ public abstract class BaseTest { public static final String b37Refseq = refseqAnnotationLocation + "refGene-big-table-b37.txt"; public static final String dbsnpDataLocation = GATKDataLocation; - public static final String hg18dbSNP129 = dbsnpDataLocation + "dbsnp_129_hg18.rod"; - public static final String b36dbSNP129 = dbsnpDataLocation + "dbsnp_129_b36.rod"; - public static final String b37dbSNP129 = dbsnpDataLocation + "dbsnp_129_b37.rod"; + public static final String b37dbSNP129 = dbsnpDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf"; public static final String b37dbSNP132 = dbsnpDataLocation + "dbsnp_132_b37.vcf"; public static final String hapmapDataLocation = comparisonDataLocation + "Validated/HapMap/3.3/"; diff --git a/public/java/test/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollectionUnitTest.java b/public/java/test/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollectionUnitTest.java index 59edf934e..f3e868474 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollectionUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/arguments/GATKArgumentCollectionUnitTest.java @@ -81,7 +81,6 @@ public class GATKArgumentCollectionUnitTest extends BaseTest { collect.samFiles = input; collect.strictnessLevel = SAMFileReader.ValidationStringency.STRICT; collect.referenceFile = new File("referenceFile".toLowerCase()); - collect.DBSNPFile = "DBSNPFile".toLowerCase(); collect.unsafe = ValidationExclusion.TYPE.ALL; collect.downsampleFraction = null; collect.downsampleCoverage = null; diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java index e6300e6c9..5a6a66bbd 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java @@ -94,7 +94,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { @Test public void testDBTagWithDbsnp() { WalkerTestSpec spec = new WalkerTestSpec( - baseTestString() + " -D " + GATKDataLocation + "dbsnp_129_b36.rod -G \"Standard\" -B:variant,VCF3 " + validationDataLocation + "vcfexample3empty.vcf -BTI variant", 1, + baseTestString() + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf -G \"Standard\" -B:variant,VCF3 " + validationDataLocation + "vcfexample3empty.vcf -BTI variant", 1, Arrays.asList("3da8ca2b6bdaf6e92d94a8c77a71313d")); executeTest("getting DB tag with dbSNP", spec); } diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceIntegrationTest.java index 0c034eba9..9db2c82c7 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/fasta/FastaAlternateReferenceIntegrationTest.java @@ -29,10 +29,11 @@ public class FastaAlternateReferenceIntegrationTest extends WalkerTest { Arrays.asList("3a48986c3832a768b478c3e95f994b0f")); executeTest("testFastaAlternateReferenceIndels", spec2); - WalkerTestSpec spec3 = new WalkerTestSpec( - "-T FastaAlternateReferenceMaker -R " + b36KGReference + " -B:snps,GeliText " + validationDataLocation + "NA12878.chr1_10mb_11mb.slx.geli.calls -B:snpmask,dbsnp " + GATKDataLocation + "dbsnp_129_b36.rod -L 1:10,023,400-10,023,500;1:10,029,200-10,029,500 -o %s", - 1, - Arrays.asList("82705a88f6fc25880dd2331183531d9a")); - executeTest("testFastaAlternateReferenceSnps", spec3); + // TODO : Eric, update with new DBSNP +// WalkerTestSpec spec3 = new WalkerTestSpec( +// "-T FastaAlternateReferenceMaker -R " + b36KGReference + " -B:snps,GeliText " + validationDataLocation + "NA12878.chr1_10mb_11mb.slx.geli.calls -B:snpmask,dbsnp " + GATKDataLocation + "dbsnp_129_b36.rod -L 1:10,023,400-10,023,500;1:10,029,200-10,029,500 -o %s", +// 1, +// Arrays.asList("82705a88f6fc25880dd2331183531d9a")); +// executeTest("testFastaAlternateReferenceSnps", spec3); } } diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperPerformanceTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperPerformanceTest.java index 866c27f8d..738580ab1 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperPerformanceTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperPerformanceTest.java @@ -15,7 +15,7 @@ public class UnifiedGenotyperPerformanceTest extends WalkerTest { " -glm BOTH" + " -I " + evaluationDataLocation + "NA12878.GAII.chr1.50MB.bam" + " -L chr1:1-50,000,000" + - " -D " + GATKDataLocation + "dbsnp_129_hg18.rod" + + " -B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -o /dev/null", 0, new ArrayList(0)); @@ -30,7 +30,7 @@ public class UnifiedGenotyperPerformanceTest extends WalkerTest { " -glm BOTH" + " -I " + evaluationDataLocation + "NA12878.ESP.WEx.chr1.bam" + " -L " + evaluationDataLocation + "whole_exome_agilent_designed_120.targets.chr1.interval_list" + - " -D " + GATKDataLocation + "dbsnp_129_hg18.rod" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -o /dev/null", 0, new ArrayList(0)); @@ -46,7 +46,7 @@ public class UnifiedGenotyperPerformanceTest extends WalkerTest { " -glm BOTH" + " -L chr1:1-50,000,000" + " -nt 10" + - " -D " + GATKDataLocation + "dbsnp_129_hg18.rod" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -o /dev/null", 0, new ArrayList(0)); diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java index 2676f7067..bcb0c3a57 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerIntegrationTest.java @@ -34,7 +34,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { executeTest("test realigner defaults with VCF", spec2); WalkerTestSpec spec3 = new WalkerTestSpec( - baseCommand + "-D " + GATKDataLocation + "dbsnp_129_b36.rod", + baseCommand + "-B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf", 1, Arrays.asList(base_md5)); executeTest("realigner defaults with dbsnp", spec3); @@ -50,7 +50,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { executeTest("realigner known indels only from VCF", spec1); WalkerTestSpec spec2 = new WalkerTestSpec( - baseCommand + "--consensusDeterminationModel KNOWNS_ONLY -D " + GATKDataLocation + "dbsnp_129_b36.rod", + baseCommand + "--consensusDeterminationModel KNOWNS_ONLY -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf", 1, Arrays.asList("05a114623c126b0398fbc1703437461e")); executeTest("realigner known indels only from dbsnp", spec2); @@ -65,7 +65,7 @@ public class IndelRealignerIntegrationTest extends WalkerTest { executeTest("realigner use SW from VCF", spec1); WalkerTestSpec spec2 = new WalkerTestSpec( - baseCommand + "--consensusDeterminationModel USE_SW -D " + GATKDataLocation + "dbsnp_129_b36.rod", + baseCommand + "--consensusDeterminationModel USE_SW -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf", 1, Arrays.asList(base_md5_with_SW_or_VCF)); executeTest("realigner use SW from dbsnp", spec2); diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerPerformanceTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerPerformanceTest.java index fd5ad0b22..2c702dec4 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerPerformanceTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/IndelRealignerPerformanceTest.java @@ -30,7 +30,7 @@ public class IndelRealignerPerformanceTest extends WalkerTest { " -LOD 5" + " -maxConsensuses 100" + " -greedy 100" + - " -D /humgen/gsa-hpprojects/GATK/data/dbsnp_129_hg18.rod" + + " -B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -o /dev/null" + " -I " + evaluationDataLocation + "NA12878.GAII.chr1.50MB.bam" + " -L chr1:1-5,650,000" + diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java index 0992dbe31..97748cf7f 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersIntegrationTest.java @@ -52,7 +52,7 @@ public class RecalibrationWalkersIntegrationTest extends WalkerTest { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-R " + b36KGReference + - " --DBSNP " + GATKDataLocation + "dbsnp_132_b37.vcf" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -T CountCovariates" + " -I " + bam + ( bam.equals( validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.allTechs.bam" ) @@ -129,7 +129,7 @@ public class RecalibrationWalkersIntegrationTest extends WalkerTest { " -standard" + " -OQ" + " -recalFile %s" + - " --DBSNP " + GATKDataLocation + "dbsnp_132_b37.vcf", + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf", 1, // just one output file Arrays.asList(md5)); executeTest("testCountCovariatesUseOriginalQuals", spec); @@ -176,7 +176,7 @@ public class RecalibrationWalkersIntegrationTest extends WalkerTest { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-R " + b36KGReference + - " --DBSNP " + GATKDataLocation + "dbsnp_132_b37.vcf" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -T CountCovariates" + " -I " + bam + " -standard" + @@ -281,7 +281,7 @@ public class RecalibrationWalkersIntegrationTest extends WalkerTest { " -B:anyNameABCD,VCF3 " + validationDataLocation + "vcfexample3.vcf" + " -T CountCovariates" + " -I " + bam + - " --DBSNP " + GATKDataLocation + "dbsnp_132_b37.vcf" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -L 1:10,000,000-10,200,000" + " -cov ReadGroupCovariate" + " -cov QualityScoreCovariate" + @@ -306,7 +306,7 @@ public class RecalibrationWalkersIntegrationTest extends WalkerTest { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-R " + b36KGReference + - " --DBSNP " + GATKDataLocation + "dbsnp_132_b37.vcf" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -T CountCovariates" + " -I " + bam + " -cov ReadGroupCovariate" + diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersPerformanceTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersPerformanceTest.java index ade34c964..1a063ec2a 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersPerformanceTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/recalibration/RecalibrationWalkersPerformanceTest.java @@ -16,7 +16,7 @@ public class RecalibrationWalkersPerformanceTest extends WalkerTest { " -L chr1:1-50,000,000" + " -standard" + " -OQ" + - " --DBSNP " + GATKDataLocation + "dbsnp_129_hg18.rod" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -recalFile /dev/null" + moreArgs, 0, new ArrayList(0)); @@ -31,7 +31,7 @@ public class RecalibrationWalkersPerformanceTest extends WalkerTest { " -L " + evaluationDataLocation + "whole_exome_agilent_designed_120.targets.chr1.interval_list" + " -standard" + " -OQ" + - " --DBSNP " + GATKDataLocation + "dbsnp_129_hg18.rod" + + " -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -recalFile /dev/null" + moreArgs, 0, new ArrayList(0)); diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalIntegrationTest.java index 38663ad42..1362a1f88 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/varianteval/VariantEvalIntegrationTest.java @@ -36,7 +36,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -56,7 +56,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -77,7 +77,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -99,7 +99,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -120,7 +120,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -141,7 +141,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -162,7 +162,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -183,7 +183,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -206,7 +206,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestVCF, "-noEV", "-EV CountVariants", @@ -342,7 +342,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestSNPsVCF, "-noEV", "-EV CompOverlap", @@ -360,7 +360,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestSNPsOneSampleVCF, "-noEV", "-EV CompOverlap", @@ -381,7 +381,7 @@ public class VariantEvalIntegrationTest extends WalkerTest { buildCommandLine( "-T VariantEval", "-R " + b37KGReference, - "-D " + b37dbSNP129, + "-B:dbsnp,VCF " + GATKDataLocation + "dbsnp_132_b37.vcf", "-B:eval,VCF " + fundamentalTestSNPsVCF, "-noEV", "-EV CountVariants", diff --git a/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextIntegrationTest.java b/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextIntegrationTest.java index 1a2285b22..772112026 100755 --- a/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextIntegrationTest.java @@ -15,7 +15,7 @@ public class VariantContextIntegrationTest extends WalkerTest { " -R " + b36KGReference; private static String root = cmdRoot + - " -D " + GATKDataLocation + "dbsnp_129_b36.rod" + + " -L 1:1-1,000,000 -B:dbsnp,vcf " + GATKDataLocation + "dbsnp_132.b36.excluding_sites_after_129.vcf" + " -B:vcf,VCF3 " + validationDataLocation + "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf"; private static final class VCITTest extends TestDataProvider { @@ -30,17 +30,15 @@ public class VariantContextIntegrationTest extends WalkerTest { @DataProvider(name = "VCITTestData") public Object[][] createVCITTestData() { - new VCITTest("-L 1:1-10000 --printPerLocus", "e4ee2eaa3114888e918a1c82df7a027a"); - new VCITTest("-L 1:1-10000 --printPerLocus --onlyContextsOfType SNP", "2097e32988d603d3b353b50218c86d3b"); - new VCITTest("-L 1:1-10000 --printPerLocus --onlyContextsOfType INDEL", "033bd952fca048fe1a4f6422b57ab2ed"); - new VCITTest("-L 1:1-10000 --printPerLocus --onlyContextsOfType MIXED", "e5a00766f8c1ff9cf92310bafdec3126"); - new VCITTest("-L 1:1-10000 --printPerLocus --onlyContextsOfType NO_VARIATION", "39335acdb34c8a2af433dc50d619bcbc"); - - // TODO : Eric, these are bad because the conversion fails - //new VCITTest("-L 1:1-10000 --printPerLocus --takeFirstOnly", "5b5635e4877d82e8a27d70dac24bda2f"); - //new VCITTest("-L 1:1-10000 --printPerLocus --onlyContextsOfType INDEL --onlyContextsStartinAtCurrentPosition", "5e40980c02797f90821317874426a87a"); - //new VCITTest("-L 1:1-10000 --printPerLocus --onlyContextsStartinAtCurrentPosition", "ceced3f270b4fe407ee83bc9028becde"); - //new VCITTest("-L 1:1-10000 --printPerLocus --takeFirstOnly --onlyContextsStartinAtCurrentPosition", "9a9b9e283553c28bf58de1cafa38fe92"); + new VCITTest("--printPerLocus", "f36b81b8bcd210c0e3a1058d791b78ec"); + new VCITTest("--printPerLocus --onlyContextsOfType SNP", "a77492ba003a1fca8d8e0227fa642f34"); + new VCITTest("--printPerLocus --onlyContextsOfType INDEL", "9e0375a1b680d7df0971dbf256944d7a"); + new VCITTest("--printPerLocus --onlyContextsOfType MIXED", "93628cbba30033398e7e680b92cb3680"); + new VCITTest("--printPerLocus --onlyContextsOfType NO_VARIATION", "39335acdb34c8a2af433dc50d619bcbc"); + new VCITTest("--printPerLocus --takeFirstOnly", "c4a3d7545d26880635e0e5e4e69952e2"); + new VCITTest("--printPerLocus --onlyContextsOfType INDEL --onlyContextsStartinAtCurrentPosition", "22a7bb9e63d5f2950322c26397670e5c"); + new VCITTest("--printPerLocus --onlyContextsStartinAtCurrentPosition", "6387c1a400d1872ae4394d01e533c296"); + new VCITTest("--printPerLocus --takeFirstOnly --onlyContextsStartinAtCurrentPosition", "dde3a3db4d9c57f5042e0dfe03380987"); return VCITTest.getTests(VCITTest.class); } @@ -53,7 +51,7 @@ public class VariantContextIntegrationTest extends WalkerTest { WalkerTestSpec spec = new WalkerTestSpec( root + " " + extraArgs + " -o %s", 1, // just one output file Arrays.asList(md5)); - executeTest("testDbSNPAndVCFConversions", spec); + executeTest("testSelectors", spec); } @Test @@ -65,13 +63,4 @@ public class VariantContextIntegrationTest extends WalkerTest { Arrays.asList("e3c35d0c4b5d4935c84a270f9df0951f", "ff91731213fd0bbdc200ab6fd1c93e63")); executeTest("testToVCF", spec); } - - @Test - public void testLargeScaleConversion() { - // this really just tests that we are seeing the same number of objects over all of chr1 - WalkerTestSpec spec = new WalkerTestSpec( root + " -L 1" + " -o %s", - 1, // just one output file - Arrays.asList("529f936aa6c303658b23caf4e527782f")); - executeTest("testLargeScaleConversion", spec); - } }