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) {