From 5d5dc989e7938f6a0f867a2008a9a7cc31b00ae8 Mon Sep 17 00:00:00 2001 From: depristo Date: Tue, 3 Nov 2009 12:09:30 +0000 Subject: [PATCH] improvements to VCF and variant eval support of VCF -- now listens to the filter field git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1963 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/walkers/varianteval/VariantEvalWalker.java | 5 +++++ .../sting/utils/genotype/vcf/VCFRecord.java | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/varianteval/VariantEvalWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/varianteval/VariantEvalWalker.java index 9e61a53c0..1d3cba67e 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/varianteval/VariantEvalWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/varianteval/VariantEvalWalker.java @@ -232,6 +232,11 @@ public class VariantEvalWalker extends RodWalker { if (eval != null) if (eval.getNegLog10PError() < minConfidenceScore) eval = null; + if ( eval != null && (eval instanceof RodVCF) && ((RodVCF)eval).mCurrentRecord.isFiltered() ) { + //System.out.printf("Rejecting filtered record %s%n", eval); + eval = null; + } + // update stats about all of the SNPs updateAnalysisSet(ANALYSIS_TYPE.ALL_SNPS, eval, tracker, ref.getBase(), context); diff --git a/java/src/org/broadinstitute/sting/utils/genotype/vcf/VCFRecord.java b/java/src/org/broadinstitute/sting/utils/genotype/vcf/VCFRecord.java index dc0daca50..aa9387ad7 100644 --- a/java/src/org/broadinstitute/sting/utils/genotype/vcf/VCFRecord.java +++ b/java/src/org/broadinstitute/sting/utils/genotype/vcf/VCFRecord.java @@ -212,15 +212,23 @@ public class VCFRecord { /** * get the filter criteria * - * @return an array of strings representing the filtering criteria, or null if none were applied + * @return an array of strings representing the filtering criteria, or 0 is none are applied */ public String[] getFilteringCodes() { if (mFilterString == null) return new String[]{"0"}; return this.mFilterString.split(FILTER_CODE_SEPERATOR); } + public boolean isFiltered() { + String[] codes = getFilteringCodes(); + if ( codes.length > 1 ) return true; + else if ( codes[0].equals(".") || codes[0].equals("0") ) return false; + else return true; + } + public boolean hasFilteringCodes() { - return getAlternateAlleles() != null; + // todo --- currently always returns true + return getFilteringCodes() != null; } /**