From f7a126722b0fca143386135ff4789390082e8bec Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Thu, 28 Jul 2011 00:16:34 -0400 Subject: [PATCH] Cleaned up VariantContext accessors in RefMetaDataTracker It's no longer possible to provided allowed types, as this was a very rarely used feature in the engine. These get methods have been removed and local uses replaced with tests directly in their code. This simplified the RefMetaDataTracker significantly VariantContextRodBinding now forwards along all of the RefMetaDataTracker methods, so it is possible to create a full equivalent VariantContextRodBinding now as a walker field variable. All walkers updated to the new RefMetaDataTracker function call style --- .../sting/commandline/RodBinding.java | 16 ++-- .../commandline/VariantContextRodBinding.java | 68 ++++++++------ .../gatk/refdata/RefMetaDataTracker.java | 90 +++++++++++-------- .../walkers/annotator/VariantAnnotator.java | 2 +- .../annotator/VariantAnnotatorEngine.java | 4 +- .../genomicannotator/GenomicAnnotator.java | 2 +- .../beagle/BeagleOutputToVCFWalker.java | 4 +- .../beagle/ProduceBeagleInputWalker.java | 4 +- .../VariantsToBeagleUnphasedWalker.java | 2 +- .../filters/VariantFiltrationWalker.java | 2 +- ...elGenotypeLikelihoodsCalculationModel.java | 12 +-- ...NPGenotypeLikelihoodsCalculationModel.java | 2 +- .../walkers/genotyper/UGCallVariants.java | 2 +- .../walkers/phasing/AnnotateMNPsWalker.java | 2 +- .../phasing/MergeAndMatchHaplotypes.java | 4 +- .../gatk/walkers/phasing/MergeMNPsWalker.java | 2 +- ...ergeSegregatingAlternateAllelesWalker.java | 2 +- .../walkers/phasing/PhaseByTransmission.java | 2 +- .../phasing/ReadBackedPhasingWalker.java | 2 +- .../varianteval/stratifications/Novelty.java | 9 +- .../varianteval/util/VariantEvalUtils.java | 27 +----- .../ApplyRecalibration.java | 2 +- .../VariantDataManager.java | 2 +- .../VariantRecalibrator.java | 2 +- .../walkers/variantutils/CombineVariants.java | 2 +- .../variantutils/FilterLiftedVariants.java | 2 +- .../variantutils/LeftAlignVariants.java | 2 +- .../variantutils/LiftoverVariants.java | 2 +- .../variantutils/RandomlySplitVariants.java | 2 +- .../walkers/variantutils/SelectVariants.java | 6 +- .../variantutils/ValidateVariants.java | 2 +- .../walkers/variantutils/VariantsToVCF.java | 30 ++++--- 32 files changed, 163 insertions(+), 151 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/commandline/RodBinding.java b/public/java/src/org/broadinstitute/sting/commandline/RodBinding.java index 8ad92e2d1..ec2117127 100644 --- a/public/java/src/org/broadinstitute/sting/commandline/RodBinding.java +++ b/public/java/src/org/broadinstitute/sting/commandline/RodBinding.java @@ -26,13 +26,13 @@ package org.broadinstitute.sting.commandline; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature; -import org.broadinstitute.sting.gatk.refdata.utils.RODRecordList; -import org.broadinstitute.sting.utils.exceptions.UserException; -import java.util.*; +import java.util.List; /** + * A RodBinding representing a walker argument that gets bound to a ROD track. * + * There is no constraint on the type of the ROD bound. */ public class RodBinding { final String variableName; @@ -53,23 +53,23 @@ public class RodBinding { return source; } - public List getValues(RefMetaDataTracker tracker) { + public List getValues(final RefMetaDataTracker tracker) { return tracker.getValues(variableName); } - public List getValues(RefMetaDataTracker tracker, Class clazz) { + public List getValues(final RefMetaDataTracker tracker, final Class clazz) { return tracker.getValues(variableName, clazz); } - public T getFirstValue(RefMetaDataTracker tracker, Class clazz) { + public T getFirstValue(final RefMetaDataTracker tracker, final Class clazz) { return tracker.getFirstValue(variableName, clazz); } - public boolean hasValues(RefMetaDataTracker tracker) { + public boolean hasValues(final RefMetaDataTracker tracker) { return tracker.hasValues(variableName); } - public List getValuesAsGATKFeatures(RefMetaDataTracker tracker) { + public List getValuesAsGATKFeatures(final RefMetaDataTracker tracker) { return tracker.getValuesAsGATKFeatures(variableName); } diff --git a/public/java/src/org/broadinstitute/sting/commandline/VariantContextRodBinding.java b/public/java/src/org/broadinstitute/sting/commandline/VariantContextRodBinding.java index a9ce824f8..f5e29986e 100644 --- a/public/java/src/org/broadinstitute/sting/commandline/VariantContextRodBinding.java +++ b/public/java/src/org/broadinstitute/sting/commandline/VariantContextRodBinding.java @@ -29,42 +29,54 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.variantcontext.VariantContext; -import java.io.File; -import java.util.List; +import java.util.Collection; /** - * + * A RodBinding representing a walker argument that gets bound to a ROD track containing VariantContexts */ public class VariantContextRodBinding extends RodBinding { + /** + * Create a new RodBinding specialized to provide VariantContexts. + * @param variableName the name of the field in the walker that we will bind the ROD track too + * @param sourceFile the data source from which we will read the VCs + * @param parser the Engine parser used to obtain information about this argument, such as its underlying file type + */ protected VariantContextRodBinding(final String variableName, final String sourceFile, final ParsingEngine parser) { super(variableName, sourceFile, parser); } - public VariantContext getVariantContext(RefMetaDataTracker tracker, ReferenceContext ref, GenomeLoc loc) { - return tracker.getVariantContext(ref, variableName, loc); + /** + * Forwarding method to identical tracker method + */ + public Collection getVariantContexts(final RefMetaDataTracker tracker, + final ReferenceContext ref, + final GenomeLoc curLocation, + final boolean requireStartHere, + final boolean takeFirstOnly ) { + return tracker.getVariantContexts(ref, variableName, curLocation, requireStartHere, takeFirstOnly); } -// public Collection getAllVariantContexts(ReferenceContext ref) { -// } -// -// public Collection getAllVariantContexts(ReferenceContext ref, GenomeLoc curLocation) { -// } -// -// public Collection getAllVariantContexts(ReferenceContext ref, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { -// } -// -// public Collection getVariantContexts(ReferenceContext ref, String name, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { -// } -// -// public Collection getVariantContexts(ReferenceContext ref, Collection names, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { -// } -// -// public Collection getVariantContextsByPrefix(ReferenceContext ref, Collection names, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { -// } -// -// public VariantContext getVariantContext(ReferenceContext ref, String name, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere ) { -// } -// -// public VariantContext getVariantContext(ReferenceContext ref, String name, GenomeLoc curLocation) { -// } + /** + * Forwarding method to identical tracker method + * @param tracker + * @param ref + * @param curLocation + * @param requireStartHere + * @return + */ + public VariantContext getVariantContext(final RefMetaDataTracker tracker, + final ReferenceContext ref, + final GenomeLoc curLocation, + final boolean requireStartHere ) { + return tracker.getVariantContext(ref, variableName, curLocation, requireStartHere); + } + + /** + * Forwarding method to identical tracker method + */ + public VariantContext getVariantContext(final RefMetaDataTracker tracker, + final ReferenceContext ref, + final GenomeLoc curLocation) { + return tracker.getVariantContext(ref, variableName, curLocation); + } } 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 926158a36..40cf4cbd4 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java @@ -54,7 +54,7 @@ public class RefMetaDataTracker { * * Important: The list returned by this function is guaranteed not to be null, but may be empty! */ - public List getValues(final String name, Class clazz) { + public List getValues(final String name, final Class clazz) { RODRecordList list = getTrackDataByName(name); if (list == null) @@ -73,10 +73,10 @@ public class RefMetaDataTracker { } /** - * get a singleton record, given the name and a type. This function will return the first record at the current position seen, - * and emit a logger warning if there were more than one option. + * get a singleton record, given the name and a type. This function will return the first record at the + * current position seen. The object is cast into a type clazz, or thoses an error if this isn't possible. * - * WARNING: we now suppport more than one RMD at a single position for all tracks. If there are + * * WARNING: we now suppport more than one RMD at a single position for all tracks. If there are * are multiple RMD objects at this location, there is no contract for which object this method will pick, and which object gets * picked may change from time to time! BE WARNED! * @@ -85,7 +85,7 @@ public class RefMetaDataTracker { * @param the type to parameterize on, matching the clazz argument * @return a record of type T, or null if no record is present. */ - public T getFirstValue(final String name, Class clazz) { + public T getFirstValue(final String name, final Class clazz) { RODRecordList objects = getTrackDataByName(name); // if empty or null return null; @@ -172,6 +172,8 @@ public class RefMetaDataTracker { * Binds the list of reference ordered data records (RMDs) to track name at this site. Should be used only by the traversal * system to provide access to RMDs in a structured way to the walkers. * + * DO NOT USE THIS FUNCTION UNLESS YOU ARE THE GATK ENGINE + * * @param name the name of the track * @param rod the collection of RMD data */ @@ -180,6 +182,13 @@ public class RefMetaDataTracker { map.put(canonicalName(name), rod); } + // ------------------------------------------------------------------------------------------ + // + // + // VariantContext helpers + // + // + // ------------------------------------------------------------------------------------------ /** * Converts all possible ROD tracks to VariantContexts objects, of all types, allowing any start and any number @@ -189,8 +198,8 @@ public class RefMetaDataTracker { * @param ref reference context * @return variant context */ - public Collection getAllVariantContexts(ReferenceContext ref) { - return getAllVariantContexts(ref, null, null, false, false); + public Collection getAllVariantContexts(final ReferenceContext ref) { + return getAllVariantContexts(ref, null, false, false); } /** @@ -199,8 +208,9 @@ public class RefMetaDataTracker { * @param curLocation * @return */ - public Collection getAllVariantContexts(ReferenceContext ref, GenomeLoc curLocation) { - return getAllVariantContexts(ref, null, curLocation, true, false); + public Collection getAllVariantContexts(final ReferenceContext ref, + final GenomeLoc curLocation) { + return getAllVariantContexts(ref, curLocation, true, false); } /** @@ -215,17 +225,19 @@ public class RefMetaDataTracker { * The name of each VariantContext corresponds to the ROD name. * * @param ref reference context - * @param allowedTypes allowed types * @param curLocation location * @param requireStartHere do we require the rod to start at this location? * @param takeFirstOnly do we take the first rod only? * @return variant context */ - public Collection getAllVariantContexts(ReferenceContext ref, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { + public Collection getAllVariantContexts(final ReferenceContext ref, + final GenomeLoc curLocation, + final boolean requireStartHere, + final boolean takeFirstOnly ) { List contexts = new ArrayList(); for ( RODRecordList rodList : getBoundRodTracks() ) { - addVariantContexts(contexts, rodList, ref, allowedTypes, curLocation, requireStartHere, takeFirstOnly); + addVariantContexts(contexts, rodList, ref, curLocation, requireStartHere, takeFirstOnly); } return contexts; @@ -239,31 +251,30 @@ public class RefMetaDataTracker { * @param ref ReferenceContext to enable conversion to variant context * @param name name * @param curLocation location - * @param allowedTypes allowed types * @param requireStartHere do we require the rod to start at this location? * @param takeFirstOnly do we take the first rod only? * @return variant context */ -// public Collection getVariantContexts(String name, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { -// return getVariantContexts(null, Arrays.asList(name), allowedTypes, curLocation, requireStartHere, takeFirstOnly); -// } - - public Collection getVariantContexts(ReferenceContext ref, String name, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { - return getVariantContexts(ref, Arrays.asList(name), allowedTypes, curLocation, requireStartHere, takeFirstOnly); + public Collection getVariantContexts(final ReferenceContext ref, + final String name, + final GenomeLoc curLocation, + final boolean requireStartHere, + final boolean takeFirstOnly ) { + return getVariantContexts(ref, Arrays.asList(name), curLocation, requireStartHere, takeFirstOnly); } -// public Collection getVariantContexts(Collection names, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { -// return getVariantContexts(null, names, allowedTypes, curLocation, requireStartHere, takeFirstOnly); -// } - - public Collection getVariantContexts(ReferenceContext ref, Collection names, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { + public Collection getVariantContexts(final ReferenceContext ref, + final Collection names, + final GenomeLoc curLocation, + final boolean requireStartHere, + final boolean takeFirstOnly ) { Collection contexts = new ArrayList(); for ( String name : names ) { RODRecordList rodList = getTrackDataByName(name); // require that the name is an exact match if ( rodList != null ) - addVariantContexts(contexts, rodList, ref, allowedTypes, curLocation, requireStartHere, takeFirstOnly ); + addVariantContexts(contexts, rodList, ref, curLocation, requireStartHere, takeFirstOnly ); } return contexts; @@ -275,12 +286,14 @@ public class RefMetaDataTracker { * * @param name name * @param curLocation location - * @param allowedTypes allowed types * @param requireStartHere do we require the rod to start at this location? * @return variant context */ - public VariantContext getVariantContext(ReferenceContext ref, String name, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere ) { - Collection contexts = getVariantContexts(ref, name, allowedTypes, curLocation, requireStartHere, false ); + public VariantContext getVariantContext(final ReferenceContext ref, + final String name, + final GenomeLoc curLocation, + final boolean requireStartHere ) { + Collection contexts = getVariantContexts(ref, name, curLocation, requireStartHere, false ); if ( contexts.size() > 1 ) throw new ReviewedStingException("Requested a single VariantContext object for track " + name + " but multiple variants were present at position " + curLocation); @@ -299,24 +312,27 @@ public class RefMetaDataTracker { * @param curLocation * @return */ - public VariantContext getVariantContext(ReferenceContext ref, String name, GenomeLoc curLocation) { - return getVariantContext(ref, name, null, curLocation, true); + public VariantContext getVariantContext(final ReferenceContext ref, + final String name, + final GenomeLoc curLocation) { + return getVariantContext(ref, name, curLocation, true); } - private void addVariantContexts(Collection contexts, RODRecordList rodList, ReferenceContext ref, EnumSet allowedTypes, GenomeLoc curLocation, boolean requireStartHere, boolean takeFirstOnly ) { + private void addVariantContexts(final Collection contexts, + final RODRecordList rodList, + final ReferenceContext ref, + final GenomeLoc curLocation, + final boolean requireStartHere, + final boolean takeFirstOnly ) { for ( GATKFeature rec : rodList ) { if ( VariantContextAdaptors.canBeConvertedToVariantContext(rec.getUnderlyingObject()) ) { // ok, we might actually be able to turn this record in a variant context - VariantContext vc = VariantContextAdaptors.toVariantContext(rodList.getName(), rec.getUnderlyingObject(), ref); + final VariantContext vc = VariantContextAdaptors.toVariantContext(rodList.getName(), rec.getUnderlyingObject(), ref); if ( vc == null ) // sometimes the track has odd stuff in it that can't be converted continue; - // now, let's decide if we want to keep it - boolean goodType = allowedTypes == null || allowedTypes.contains(vc.getType()); - boolean goodPos = ! requireStartHere || rec.getLocation().getStart() == curLocation.getStart(); - - if ( goodType && goodPos ) { // ok, we are going to keep this thing + if ( ! requireStartHere || rec.getLocation().getStart() == curLocation.getStart() ) { // ok, we are going to keep this thing contexts.add(vc); if ( takeFirstOnly ) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotator.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotator.java index acbeee3b2..207c4118d 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotator.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotator.java @@ -202,7 +202,7 @@ public class VariantAnnotator extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false); + Collection VCs = tracker.getVariantContexts(ref, "variant", context.getLocation(), true, false); if ( VCs.size() == 0 ) return 0; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java index 3cf96d443..73249d343 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java @@ -203,7 +203,7 @@ public class VariantAnnotatorEngine { infoAnnotations.put(VariantContext.ID_KEY, rsID); } else { boolean overlapsComp = false; - for ( VariantContext comp : tracker.getVariantContexts(ref, dbSet.getKey(), null, ref.getLocus(), false, false) ) { + for ( VariantContext comp : tracker.getVariantContexts(ref, dbSet.getKey(), ref.getLocus(), false, false) ) { if ( !comp.isFiltered() ) { overlapsComp = true; break; @@ -216,7 +216,7 @@ public class VariantAnnotatorEngine { private void annotateExpressions(RefMetaDataTracker tracker, ReferenceContext ref, Map infoAnnotations) { for ( VAExpression expression : requestedExpressions ) { - Collection VCs = tracker.getVariantContexts(ref, expression.bindingName, null, ref.getLocus(), false, true); + Collection VCs = tracker.getVariantContexts(ref, expression.bindingName, ref.getLocus(), false, true); if ( VCs.size() == 0 ) continue; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/genomicannotator/GenomicAnnotator.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/genomicannotator/GenomicAnnotator.java index b42310780..82d2af283 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/genomicannotator/GenomicAnnotator.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/genomicannotator/GenomicAnnotator.java @@ -244,7 +244,7 @@ public class GenomicAnnotator extends RodWalker implements Tre return 0; Set results = new LinkedHashSet(); - for (VariantContext vc : tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false)) { + for (VariantContext vc : tracker.getVariantContexts(ref, "variant", context.getLocation(), true, false)) { if ( (vc.isFiltered() && IGNORE_FILTERED_SITES) || (vc.isVariant() && !vc.isBiallelic()) ) { results.add(vc); 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 0720e5a16..5499c99b0 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 @@ -119,9 +119,9 @@ public class BeagleOutputToVCFWalker extends RodWalker { return 0; GenomeLoc loc = context.getLocation(); - VariantContext vc_input = tracker.getVariantContext(ref,INPUT_ROD_NAME, null, loc, true); + VariantContext vc_input = tracker.getVariantContext(ref,INPUT_ROD_NAME, loc, true); - VariantContext vc_comp = tracker.getVariantContext(ref,COMP_ROD_NAME, null, loc, true); + VariantContext vc_comp = tracker.getVariantContext(ref,COMP_ROD_NAME, loc, true); if ( vc_input == null ) return 0; 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 3eed12992..b20b44cd6 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 @@ -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.getVariantContext(ref, ROD_NAME, null, loc, true); - VariantContext validation_eval = tracker.getVariantContext(ref,VALIDATION_ROD_NAME,null,loc, true); + VariantContext variant_eval = tracker.getVariantContext(ref, ROD_NAME, loc, true); + VariantContext validation_eval = tracker.getVariantContext(ref,VALIDATION_ROD_NAME, loc, true); if ( goodSite(variant_eval,validation_eval) ) { if ( useValidation(validation_eval, ref) ) { 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 f6cd1d636..41b35321e 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 @@ -102,7 +102,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.getVariantContext(ref, ROD_NAME, null, loc, true); + VariantContext vc = tracker.getVariantContext(ref, ROD_NAME, loc, true); if ( ProduceBeagleInputWalker.canBeOutputToBeagle(vc) ) { // do we want to hold back this site? 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 eb62190fb..2e96fc172 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 @@ -149,7 +149,7 @@ public class VariantFiltrationWalker extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getVariantContexts(ref, INPUT_VARIANT_ROD_BINDING_NAME, null, context.getLocation(), true, false); + Collection VCs = tracker.getVariantContexts(ref, INPUT_VARIANT_ROD_BINDING_NAME, context.getLocation(), true, false); // is there a SNP mask present? boolean hasMask = tracker.getValues("mask").size() > 0; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/IndelGenotypeLikelihoodsCalculationModel.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/IndelGenotypeLikelihoodsCalculationModel.java index 60ea601d5..c76fea34f 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/IndelGenotypeLikelihoodsCalculationModel.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/IndelGenotypeLikelihoodsCalculationModel.java @@ -293,6 +293,9 @@ public class IndelGenotypeLikelihoodsCalculationModel extends GenotypeLikelihood return aList; } + + private final static EnumSet allowableTypes = EnumSet.of(VariantContext.Type.INDEL, VariantContext.Type.MIXED); + public Allele getLikelihoods(RefMetaDataTracker tracker, ReferenceContext ref, Map contexts, @@ -318,11 +321,10 @@ public class IndelGenotypeLikelihoodsCalculationModel extends GenotypeLikelihood haplotypeMap.clear(); if (getAlleleListFromVCF) { - EnumSet allowableTypes = EnumSet.of(VariantContext.Type.INDEL); - allowableTypes.add(VariantContext.Type.MIXED); - for( final VariantContext vc_input : tracker.getVariantContexts(ref, "alleles", - allowableTypes, ref.getLocus(), false, false) ) { - if( vc_input != null && ref.getLocus().getStart() == vc_input.getStart()) { + for( final VariantContext vc_input : tracker.getVariantContexts(ref, "alleles", ref.getLocus(), false, false) ) { + if( vc_input != null && + allowableTypes.contains(vc_input.getType()) && + ref.getLocus().getStart() == vc_input.getStart()) { vc = vc_input; break; } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/SNPGenotypeLikelihoodsCalculationModel.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/SNPGenotypeLikelihoodsCalculationModel.java index 3e3cd128b..30a86249d 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/SNPGenotypeLikelihoodsCalculationModel.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/SNPGenotypeLikelihoodsCalculationModel.java @@ -63,7 +63,7 @@ public class SNPGenotypeLikelihoodsCalculationModel extends GenotypeLikelihoodsC VariantContext vc = null; // search for usable record - for( final VariantContext vc_input : tracker.getVariantContexts(ref, "alleles", null, ref.getLocus(), true, false) ) { + for( final VariantContext vc_input : tracker.getVariantContexts(ref, "alleles", ref.getLocus(), true, false) ) { if ( vc_input != null && ! vc_input.isFiltered() && (! requireSNP || vc_input.isSNP() )) { if ( vc == null ) { vc = vc_input; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UGCallVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UGCallVariants.java index 68d8f9b54..6e03088e7 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UGCallVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UGCallVariants.java @@ -96,7 +96,7 @@ public class UGCallVariants extends RodWalker { List VCs = new ArrayList(); for ( String name : trackNames ) { - Collection vc = tracker.getVariantContexts(ref, name, null, context.getLocation(), true, true); + Collection vc = tracker.getVariantContexts(ref, name, context.getLocation(), true, true); VCs.addAll(vc); } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/AnnotateMNPsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/AnnotateMNPsWalker.java index 22672b7a9..263dffb6c 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/AnnotateMNPsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/AnnotateMNPsWalker.java @@ -155,7 +155,7 @@ public class AnnotateMNPsWalker extends RodWalker { boolean requireStartHere = false; // see EVERY site of the MNP boolean takeFirstOnly = false; // take as many entries as the VCF file has - for (VariantContext vc : tracker.getVariantContexts(ref, rodNames, null, context.getLocation(), requireStartHere, takeFirstOnly)) { + for (VariantContext vc : tracker.getVariantContexts(ref, rodNames, context.getLocation(), requireStartHere, takeFirstOnly)) { GenomeLoc vcLoc = VariantContextUtils.getLocation(locParser, vc); boolean atStartOfVc = curLocus.getStart() == vcLoc.getStart(); boolean atEndOfVc = curLocus.getStart() == vcLoc.getStop(); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeAndMatchHaplotypes.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeAndMatchHaplotypes.java index 298d8d6c8..a4b49b8ff 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeAndMatchHaplotypes.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeAndMatchHaplotypes.java @@ -44,8 +44,8 @@ public class MergeAndMatchHaplotypes extends RodWalker { @Override public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { if (tracker != null) { - Collection pbts = tracker.getVariantContexts(ref, "pbt", null, ref.getLocus(), true, true); - Collection rbps = tracker.getVariantContexts(ref, "rbp", null, ref.getLocus(), true, true); + Collection pbts = tracker.getVariantContexts(ref, "pbt", ref.getLocus(), true, true); + Collection rbps = tracker.getVariantContexts(ref, "rbp", ref.getLocus(), true, true); VariantContext pbt = pbts.iterator().hasNext() ? pbts.iterator().next() : null; VariantContext rbp = rbps.iterator().hasNext() ? rbps.iterator().next() : null; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeMNPsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeMNPsWalker.java index 5bd438605..d36da9835 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeMNPsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeMNPsWalker.java @@ -103,7 +103,7 @@ public class MergeMNPsWalker extends RodWalker { boolean requireStartHere = true; // only see each VariantContext once boolean takeFirstOnly = false; // take as many entries as the VCF file has - for (VariantContext vc : tracker.getVariantContexts(ref, rodNames, null, context.getLocation(), requireStartHere, takeFirstOnly)) + for (VariantContext vc : tracker.getVariantContexts(ref, rodNames, context.getLocation(), requireStartHere, takeFirstOnly)) writeVCF(vc); return 0; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesWalker.java index be15d4541..73d7fa529 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesWalker.java @@ -140,7 +140,7 @@ public class MergeSegregatingAlternateAllelesWalker extends RodWalker { @Override public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { if (tracker != null) { - Collection vcs = tracker.getVariantContexts(ref, ROD_NAME, null, context.getLocation(), true, true); + Collection vcs = tracker.getVariantContexts(ref, ROD_NAME, context.getLocation(), true, true); for (VariantContext vc : vcs) { Map genotypeMap = vc.getGenotypes(); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java index 9702fd18c..f96cec1b7 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java @@ -209,7 +209,7 @@ public class ReadBackedPhasingWalker extends RodWalker knownComps = tracker.getVariantContexts(ref, knownName, allowableTypes, ref.getLocus(), true, true); - - isNovel = knownComps.size() == 0; + Collection knownComps = tracker.getVariantContexts(ref, knownName, ref.getLocus(), true, true); + for ( VariantContext c : knownComps ) + if ( allowableTypes.contains(c.getType()) ) { + isNovel = false; + break; + } break; } 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 0a915db37..7beb94593 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 @@ -270,30 +270,7 @@ public class VariantEvalUtils { Set compNames, Set evalNames, boolean dynamicSelectTypes ) { - if ( dynamicSelectTypes ) { // todo -- this code is really conceptually broken - EnumSet allowableTypes = EnumSet.of(VariantContext.Type.NO_VARIATION); - - if (tracker != null) { - Collection evalvcs = tracker.getVariantContexts(ref, evalNames, null, ref.getLocus(), true, false); - - for (VariantContext vc : evalvcs) { - allowableTypes.add(vc.getType()); - } - - if (allowableTypes.size() == 1) { - // We didn't find any variation in the eval track, so now let's look at the comp track for allowable types - Collection compvcs = tracker.getVariantContexts(ref, compNames, null, ref.getLocus(), true, false); - - for (VariantContext vc : compvcs) { - allowableTypes.add(vc.getType()); - } - } - } - - return allowableTypes; - } else { - return EnumSet.allOf(VariantContext.Type.class); - } + return EnumSet.allOf(VariantContext.Type.class); } /** @@ -359,7 +336,7 @@ public class VariantEvalUtils { for (String trackName : trackNames) { HashMap vcs = new HashMap(); - Collection contexts = tracker == null ? null : tracker.getVariantContexts(ref, trackName, allowableTypes, ref.getLocus(), true, true); + Collection contexts = tracker == null ? null : tracker.getVariantContexts(ref, trackName, ref.getLocus(), true, true); VariantContext vc = contexts != null && contexts.size() == 1 ? contexts.iterator().next() : null; // First, filter the VariantContext to represent only the samples for evaluation diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/ApplyRecalibration.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/ApplyRecalibration.java index b195fd35f..5fb738944 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/ApplyRecalibration.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/ApplyRecalibration.java @@ -168,7 +168,7 @@ public class ApplyRecalibration extends RodWalker { return 1; } - for( VariantContext vc : tracker.getVariantContexts(ref, inputNames, null, context.getLocation(), true, false) ) { + for( VariantContext vc : tracker.getVariantContexts(ref, inputNames, context.getLocation(), true, false) ) { if( vc != null ) { if( VariantRecalibrator.checkRecalibrationMode( vc, MODE ) && (vc.isNotFiltered() || ignoreInputFilterSet.containsAll(vc.getFilters())) ) { String filterString = null; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantDataManager.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantDataManager.java index 67d54a408..c76efc2dd 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantDataManager.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantDataManager.java @@ -258,7 +258,7 @@ public class VariantDataManager { datum.consensusCount = 0; for( final TrainingSet trainingSet : trainingSets ) { - for( final VariantContext trainVC : tracker.getVariantContexts( ref, trainingSet.name, null, context.getLocation(), false, false ) ) { + for( final VariantContext trainVC : tracker.getVariantContexts( ref, trainingSet.name, context.getLocation(), false, false ) ) { if( trainVC != null && trainVC.isNotFiltered() && trainVC.isVariant() && ((evalVC.isSNP() && trainVC.isSNP()) || ((evalVC.isIndel()||evalVC.isMixed()) && (trainVC.isIndel()||trainVC.isMixed()))) && (TRUST_ALL_POLYMORPHIC || !trainVC.hasGenotypes() || trainVC.isPolymorphic()) ) { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrator.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrator.java index 76c888640..7e1d931c9 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrator.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantrecalibration/VariantRecalibrator.java @@ -163,7 +163,7 @@ public class VariantRecalibrator extends RodWalker { // get all of the vcf rods at this locus // Need to provide reference bases to simpleMerge starting at current locus - Collection vcs = tracker.getAllVariantContexts(ref, null, context.getLocation(), true, false); + Collection vcs = tracker.getAllVariantContexts(ref, context.getLocation(), true, false); if ( sitesOnlyVCF ) { vcs = VariantContextUtils.sitesOnlyVariantContexts(vcs); 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 b45ee1b67..97cb9a6e3 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 @@ -85,7 +85,7 @@ public class FilterLiftedVariants extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false); + Collection VCs = tracker.getVariantContexts(ref, "variant", context.getLocation(), true, false); 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 2ebd183f4..566333d3f 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 @@ -68,7 +68,7 @@ public class LeftAlignVariants extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false); + Collection VCs = tracker.getVariantContexts(ref, "variant", context.getLocation(), true, false); 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 4f05c8aac..061c3b256 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 @@ -143,7 +143,7 @@ public class LiftoverVariants extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false); + Collection VCs = tracker.getVariantContexts(ref, "variant", context.getLocation(), true, false); 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 f0756d884..99e12c836 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 @@ -97,7 +97,7 @@ public class RandomlySplitVariants extends RodWalker { if ( tracker == null ) return 0; - Collection vcs = tracker.getVariantContexts(ref, INPUT_VARIANT_ROD_BINDING_NAME, null, context.getLocation(), true, false); + Collection vcs = tracker.getVariantContexts(ref, INPUT_VARIANT_ROD_BINDING_NAME, context.getLocation(), true, false); 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 e1a3659b8..0efed393a 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 @@ -317,7 +317,7 @@ public class SelectVariants extends RodWalker { if ( tracker == null ) return 0; - Collection vcs = tracker.getVariantContexts(ref, variantRodName, null, context.getLocation(), true, false); + Collection vcs = tracker.getVariantContexts(ref, variantRodName, context.getLocation(), true, false); if ( vcs == null || vcs.size() == 0) { return 0; @@ -345,12 +345,12 @@ public class SelectVariants extends RodWalker { break; } if (DISCORDANCE_ONLY) { - Collection compVCs = tracker.getVariantContexts(ref, discordanceRodName, null, context.getLocation(), true, false); + Collection compVCs = tracker.getVariantContexts(ref, discordanceRodName, context.getLocation(), true, false); if (!isDiscordant(vc, compVCs)) return 0; } if (CONCORDANCE_ONLY) { - Collection compVCs = tracker.getVariantContexts(ref, concordanceRodName, null, context.getLocation(), true, false); + Collection compVCs = tracker.getVariantContexts(ref, concordanceRodName, context.getLocation(), true, false); if (!isConcordant(vc, compVCs)) 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 5e779097a..756a00731 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 @@ -86,7 +86,7 @@ public class ValidateVariants extends RodWalker { if ( tracker == null ) return 0; - Collection VCs = tracker.getVariantContexts(ref, "variant", null, context.getLocation(), true, false); + Collection VCs = tracker.getVariantContexts(ref, "variant", context.getLocation(), true, false); for ( VariantContext vc : VCs ) validate(vc, tracker, ref); 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 4f5a5652f..8f0fdd907 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 @@ -90,21 +90,23 @@ public class VariantsToVCF extends RodWalker { Collection contexts = getVariantContexts(tracker, ref); for ( VariantContext vc : contexts ) { - Map attrs = new HashMap(vc.getAttributes()); - if ( rsID != null && !vc.hasID() ) { - attrs.put(VariantContext.ID_KEY, rsID); - vc = VariantContext.modifyAttributes(vc, attrs); - } + if ( ALLOWED_VARIANT_CONTEXT_TYPES.contains(vc.getType()) ) { + Map attrs = new HashMap(vc.getAttributes()); + if ( rsID != null && !vc.hasID() ) { + attrs.put(VariantContext.ID_KEY, rsID); + vc = VariantContext.modifyAttributes(vc, attrs); + } - // 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); - Map genotypes = new HashMap(); - genotypes.put(sampleName, g); - vc = VariantContext.modifyGenotypes(vc, genotypes); - } + // 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); + Map genotypes = new HashMap(); + genotypes.put(sampleName, g); + vc = VariantContext.modifyGenotypes(vc, genotypes); + } - writeRecord(vc, tracker, ref.getBase()); + writeRecord(vc, tracker, ref.getBase()); + } } return 1; @@ -160,7 +162,7 @@ public class VariantsToVCF extends RodWalker { } // for everything else, we can just convert to VariantContext - return tracker.getVariantContexts(ref, INPUT_ROD_NAME, ALLOWED_VARIANT_CONTEXT_TYPES, ref.getLocus(), true, false); + return tracker.getVariantContexts(ref, INPUT_ROD_NAME, ref.getLocus(), true, false); } private DbSNPFeature getDbsnpFeature(String rsID) {