From ff90c24f2822ead4d6e9171867934d5422d0b738 Mon Sep 17 00:00:00 2001 From: depristo Date: Mon, 20 Dec 2010 16:03:28 +0000 Subject: [PATCH] RBP now supports operating on a subset of samples, outputting a much reduced VCF file appropriate for merging later. Also, general optimization to avoid printing enormous amounts of data to logger.debug by using a glocal static variable DEBUG that conditionally allows writing to the variable. Passes integration tests git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4880 348d0f76-0448-11de-a6fe-93d51630548a --- .../phasing/ReadBackedPhasingWalker.java | 96 +++++++++++-------- 1 file changed, 57 insertions(+), 39 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java index 307809a46..2c42fd1a1 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/phasing/ReadBackedPhasingWalker.java @@ -63,6 +63,7 @@ import static org.broadinstitute.sting.utils.vcf.VCFUtils.getVCFHeadersFromRods; // Filter out all reads with zero mapping quality public class ReadBackedPhasingWalker extends RodWalker { + private static final boolean DEBUG = false; @Output(doc = "File to which variants should be written", required = true) protected VCFWriter writer = null; @@ -87,6 +88,9 @@ public class ReadBackedPhasingWalker extends RodWalker samplesToPhase = null; + private GenomeLoc mostDownstreamLocusReached = null; private LinkedList unphasedSiteQueue = null; @@ -170,6 +174,7 @@ public class ReadBackedPhasingWalker extends RodWalker rodNameToHeader = getVCFHeadersFromRods(getToolkit(), rodNames); writer.writeHeader(new VCFHeader(hInfo, new TreeSet(rodNameToHeader.get(rodNames.get(0)).getGenotypeSamples()))); } @@ -195,8 +200,9 @@ public class ReadBackedPhasingWalker extends RodWalker unprocessedList = new LinkedList(); @@ -204,10 +210,14 @@ public class ReadBackedPhasingWalker extends RodWalker prevHetAndInteriorIt = phaseWindow.prevHetAndInteriorIt; /* Notes: @@ -331,15 +350,15 @@ public class ReadBackedPhasingWalker extends RodWalker gtAttribs = new HashMap(gt.getAttributes()); @@ -439,7 +458,7 @@ public class ReadBackedPhasingWalker extends RodWalker nameToReads : readsAtHetSites.entrySet()) { String rdName = nameToReads.getKey(); @@ -610,7 +629,7 @@ public class ReadBackedPhasingWalker extends RodWalker keepReads = new HashSet(); /* Check which Reads are involved in acyclic paths from (phasingSiteIndex - 1) to (phasingSiteIndex): @@ -673,7 +692,7 @@ public class ReadBackedPhasingWalker extends RodWalker removedEdges = readGraph.removeAllIncidentEdges(i); @@ -694,15 +713,15 @@ public class ReadBackedPhasingWalker extends RodWalker v1 -> v2 ---> cur [or vice versa]. @@ -716,7 +735,7 @@ public class ReadBackedPhasingWalker extends RodWalker " + e.getV2() + " -> " + e.getV1() + " ---> " + cur); else @@ -733,7 +752,7 @@ public class ReadBackedPhasingWalker extends RodWalker nameToReads : phaseWindow.readsAtHetSites.entrySet()) { String rdName = nameToReads.getKey(); @@ -830,17 +849,17 @@ public class ReadBackedPhasingWalker extends RodWalker nameToReads : phaseWindow.readsAtHetSites.entrySet()) { Read rd = nameToReads.getValue(); - logger.debug("\nrd = " + rd + "\tname = " + nameToReads.getKey()); + if ( DEBUG ) logger.debug("\nrd = " + rd + "\tname = " + nameToReads.getKey()); for (PhasingTable.PhasingTableEntry pte : sampleHaps) { PhasingScore score = rd.matchHaplotypeClassScore(pte.getHaplotypeClass()); pte.getScore().integrateReadScore(score); - logger.debug("score(" + rd + ", " + pte.getHaplotypeClass() + ") = " + score); + if ( DEBUG ) logger.debug("score(" + rd + ", " + pte.getHaplotypeClass() + ") = " + score); } // Check the current best haplotype assignment and compare it to the previous one: MaxHaplotypeAndQuality curMaxHapAndQual = new MaxHaplotypeAndQuality(sampleHaps, false); - logger.debug("CUR MAX hap:\t" + curMaxHapAndQual.maxEntry.getHaplotypeClass() + "\tcurPhaseQuality:\t" + curMaxHapAndQual.phaseQuality); + if ( DEBUG ) logger.debug("CUR MAX hap:\t" + curMaxHapAndQual.maxEntry.getHaplotypeClass() + "\tcurPhaseQuality:\t" + curMaxHapAndQual.phaseQuality); if (prevMaxHapAndQual != null) { double changeInPQ = prevMaxHapAndQual.phaseQuality - curMaxHapAndQual.phaseQuality; @@ -848,7 +867,7 @@ public class ReadBackedPhasingWalker extends RodWalker 0 && changeInPQ > FRACTION_OF_MEAN_PQ_CHANGES * (totalAbsPQchange / numPQchangesObserved))) { // a "significant" decrease in PQ - logger.debug("Inconsistent read found!"); + if ( DEBUG ) logger.debug("Inconsistent read found!"); numInconsistentIterations++; } } @@ -859,12 +878,12 @@ public class ReadBackedPhasingWalker extends RodWalker MAX_FRACTION_OF_INCONSISTENT_READS) @@ -957,8 +976,6 @@ public class ReadBackedPhasingWalker extends RodWalker finalList = processQueue(result, true); // process all remaining data writeVcList(finalList); writer.close(); @@ -989,7 +1006,8 @@ public class ReadBackedPhasingWalker extends RodWalker