From 0be23aae4e33a78f6cc56ef15e42f46d7742c1f4 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Tue, 15 Nov 2011 17:20:14 -0500 Subject: [PATCH] Bugfixes on way to a working refactored VariantContext --- .../sting/gatk/walkers/diffengine/VCFDiffableReader.java | 8 +++++++- .../sting/utils/variantcontext/VariantContext.java | 8 ++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java index 4b8a703a5..6b5ffd3ed 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java @@ -24,6 +24,7 @@ package org.broadinstitute.sting.gatk.walkers.diffengine; +import org.apache.log4j.Logger; import org.broad.tribble.readers.AsciiLineReader; import org.broad.tribble.readers.LineReader; import org.broadinstitute.sting.utils.codecs.vcf.*; @@ -46,6 +47,8 @@ import java.util.Map; * Class implementing diffnode reader for VCF */ public class VCFDiffableReader implements DiffableReader { + private static Logger logger = Logger.getLogger(VCFDiffableReader.class); + @Override public String getName() { return "VCF"; } @@ -68,7 +71,10 @@ public class VCFDiffableReader implements DiffableReader { String key = headerLine.getKey(); if ( headerLine instanceof VCFNamedHeaderLine ) key += "_" + ((VCFNamedHeaderLine) headerLine).getName(); - root.add(key, headerLine.toString()); + if ( root.hasElement(key) ) + logger.warn("Skipping duplicate header line: file=" + file + " line=" + headerLine.toString()); + else + root.add(key, headerLine.toString()); } String line = lineReader.readLine(); diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java index 661ed2bf4..77dc88cc5 100755 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java @@ -388,10 +388,14 @@ public class VariantContext implements Feature { // to enable tribble intergrati if ( this.ID.equals("") ) throw new IllegalArgumentException("ID field cannot be the empty string"); if ( !genotypesAreUnparsed && attributes != null ) { - if ( attributes.containsKey(UNPARSED_GENOTYPE_MAP_KEY) ) + if ( attributes.containsKey(UNPARSED_GENOTYPE_MAP_KEY) ) { + attributes = new HashMap(attributes); attributes.remove(UNPARSED_GENOTYPE_MAP_KEY); - if ( attributes.containsKey(UNPARSED_GENOTYPE_PARSER_KEY) ) + } + if ( attributes.containsKey(UNPARSED_GENOTYPE_PARSER_KEY) ) { + attributes = new HashMap(attributes); attributes.remove(UNPARSED_GENOTYPE_PARSER_KEY); + } } this.commonInfo = new CommonInfo(source, negLog10PError, filters, attributes);