diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnalyzeAnnotationsWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnalyzeAnnotationsWalker.java index ec1d5ecb1..7181d1988 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnalyzeAnnotationsWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnalyzeAnnotationsWalker.java @@ -4,11 +4,7 @@ import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContext; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; -import org.broadinstitute.sting.gatk.refdata.RodVCF; -import org.broadinstitute.sting.gatk.refdata.VariantContextAdaptors; -import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature; import org.broadinstitute.sting.gatk.walkers.RodWalker; -import org.broadinstitute.sting.utils.StingException; import org.broadinstitute.sting.utils.cmdLine.Argument; import java.util.HashMap; @@ -108,26 +104,19 @@ public class AnalyzeAnnotationsWalker extends RodWalker { // First find out if this variant is in the truth sets boolean isInTruthSet = false; boolean isTrueVariant = false; - for( final GATKFeature feature : tracker.getAllRods() ) { - Object rod = feature.getUnderlyingObject(); - if( rod != null && feature.getName().toUpperCase().startsWith("TRUTH") ) { + for ( VariantContext vc : tracker.getAllVariantContexts() ) { + if( vc.getName().toUpperCase().startsWith("TRUTH") ) { isInTruthSet = true; - VariantContext variantContext = VariantContextAdaptors.toVariantContext(feature.getName(),rod); - // First check that the conversion to VC worked correctly; next see if the truth sets say this site is variant or reference - if (variantContext == null) - throw new StingException("Truth ROD is of type that can't be converted to a VariantContext ( type = " + feature.getName() + ")"); - else if (variantContext.isSNP()) + if (vc.isVariant()) isTrueVariant = true; } } // Add each annotation in this VCF Record to the dataManager - for( final GATKFeature feature : tracker.getAllRods() ) { - Object rod = feature.getUnderlyingObject(); - if( rod != null && rod instanceof RodVCF && !feature.getName().toUpperCase().startsWith("TRUTH") ) { - final RodVCF variant = (RodVCF) rod; - if( variant.isSNP() ) { - dataManager.addAnnotations( variant, SAMPLE_NAME, isInTruthSet, isTrueVariant ); + for ( VariantContext vc : tracker.getAllVariantContexts() ) { + if( !vc.getName().toUpperCase().startsWith("TRUTH") ) { + if( vc.isVariant() ) { + dataManager.addAnnotations( vc, ref.getBase(), SAMPLE_NAME, isInTruthSet, isTrueVariant ); } } } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnnotationDataManager.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnnotationDataManager.java index 8d76b24a8..43e6058bc 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnnotationDataManager.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/variantoptimizer/AnnotationDataManager.java @@ -1,8 +1,10 @@ package org.broadinstitute.sting.playground.gatk.walkers.variantoptimizer; -import org.broadinstitute.sting.gatk.refdata.RodVCF; +import org.broadinstitute.sting.gatk.refdata.VariantContextAdaptors; +import org.broadinstitute.sting.gatk.contexts.variantcontext.VariantContext; import org.broadinstitute.sting.utils.BaseUtils; import org.broadinstitute.sting.utils.StingException; +import org.broadinstitute.sting.utils.genotype.vcf.VCFRecord; import java.util.*; import java.io.IOException; @@ -52,14 +54,16 @@ public class AnnotationDataManager { INDICATE_MEAN_NUM_VARS = _INDICATE_MEAN_NUM_VARS; } - public void addAnnotations( final RodVCF variant, final String sampleName, final boolean isInTruthSet, final boolean isTrueVariant ) { + public void addAnnotations( final VariantContext vc, final char ref, final String sampleName, final boolean isInTruthSet, final boolean isTrueVariant ) { if( sampleName != null ) { // Only process variants that are found in the sample with this sampleName - if( variant.getGenotype(sampleName).isNoCall() ) { // This variant isn't found in this sample so break out + if( vc.getGenotype(sampleName).isNoCall() ) { // This variant isn't found in this sample so break out return; } } // else, process all samples + VCFRecord variant = VariantContextAdaptors.toVCF(vc, ref); + // Loop over each annotation in the vcf record final Map infoField = variant.getInfoValues(); infoField.put("QUAL", ((Double)variant.getQual()).toString() ); // add QUAL field to annotations @@ -87,10 +91,12 @@ public class AnnotationDataManager { final boolean isNovelVariant = variant.getID().equals("."); // Decide if the variant is a transition or transversion - if( BaseUtils.isTransition( (byte)variant.getReferenceForSNP(), (byte)variant.getAlternativeBaseForSNP()) ) { - datum.incrementTi( isNovelVariant, isInTruthSet, isTrueVariant ); - } else { - datum.incrementTv( isNovelVariant, isInTruthSet, isTrueVariant ); + if ( vc.isSNP() ) { + if( BaseUtils.isTransition( vc.getReference().getBases()[0], vc.getAlternateAllele(0).getBases()[0]) ) { + datum.incrementTi( isNovelVariant, isInTruthSet, isTrueVariant ); + } else { + datum.incrementTv( isNovelVariant, isInTruthSet, isTrueVariant ); + } } } }