From 9ac0f98d0ddb4bb64f5bf1c37478534fd52d228b Mon Sep 17 00:00:00 2001 From: fromer Date: Wed, 1 Dec 2010 18:39:02 +0000 Subject: [PATCH] Fixed bug in retaining proper RefSeq records git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4768 348d0f76-0448-11de-a6fe-93d51630548a --- ...eSegregatingAlternateAllelesVCFWriter.java | 1 + .../walkers/phasing/RefSeqDataParser.java | 33 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesVCFWriter.java b/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesVCFWriter.java index 05e96e7da..ac64ceac0 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesVCFWriter.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/phasing/MergeSegregatingAlternateAllelesVCFWriter.java @@ -150,6 +150,7 @@ public class MergeSegregatingAlternateAllelesVCFWriter implements VCFWriter { else { // waiting to merge vcfrWaitingToMerge, and curVcIsNotFiltered. So, attempt to merge them: numRecordsAttemptToMerge++; boolean shouldAttemptToMerge = vcMergeRule.shouldAttemptToMerge(vcfrWaitingToMerge.vc, vc); + logger.debug("shouldAttemptToMerge? = " + shouldAttemptToMerge); /* TODO: -- CONSIDER THE FOLLOWING EXAMPLE: WHAT DO WE WANT HERE??? -- diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/phasing/RefSeqDataParser.java b/java/src/org/broadinstitute/sting/gatk/walkers/phasing/RefSeqDataParser.java index 14fdd6302..d5d88f9e3 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/phasing/RefSeqDataParser.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/phasing/RefSeqDataParser.java @@ -46,11 +46,23 @@ public class RefSeqDataParser { Map entriesToNames = new HashMap(); Integer numRecords = vc.getAttributeAsIntegerNoException(NUM_RECORDS_KEY); if (numRecords != null) { - for (int i = 1; i <= numRecords; i++) { - String key = nameKeyToUseMultiplePrefix + i; - String name = vc.getAttributeAsStringNoException(key); - if (name != null) - entriesToNames.put(key, name); + boolean done = false; + + if (numRecords == 1) { // Check if perhaps the single record doesn't end with "_1": + String name = vc.getAttributeAsStringNoException(nameKeyToUse); + if (name != null) { + entriesToNames.put(nameKeyToUse, name); + done = true; + } + } + + if (!done) { + for (int i = 1; i <= numRecords; i++) { + String key = nameKeyToUseMultiplePrefix + i; + String name = vc.getAttributeAsStringNoException(key); + if (name != null) + entriesToNames.put(key, name); + } } } else { // no entry with the # of records: @@ -90,7 +102,7 @@ public class RefSeqDataParser { Set commonNames = entriesMap1.keySet(); commonNames.retainAll(entriesMap2.keySet()); boolean addSuffix = commonNames.size() > 1; - int count = 1; + int nextCount = 1; for (String name : commonNames) { RefSeqEntry refseq1 = entriesMap1.get(name); @@ -98,7 +110,7 @@ public class RefSeqDataParser { String keySuffix = ""; if (addSuffix) - keySuffix = "_" + count; + keySuffix = "_" + nextCount; boolean added = false; for (String key : NAME_KEYS) { @@ -111,10 +123,11 @@ public class RefSeqDataParser { } } if (added) - count++; + nextCount++; } - if (count > 1) - refSeqNameAttribs.put(NUM_RECORDS_KEY, count - 1); // since incremented count one extra time + int totalCount = nextCount - 1; // since incremented count one extra time + if (totalCount > 1) + refSeqNameAttribs.put(NUM_RECORDS_KEY, totalCount); return refSeqNameAttribs; }