diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java index 6bd92776e..4b3ad9ce1 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java @@ -51,6 +51,9 @@ public class DepthOfCoverageWalker extends LocusWalker= minDepthForPercentage ) { + sum.minDepthCoveredLoci++; + } if ( byReadGroup ) { for ( String rg : readGroupNames ) { int oldDepth = sum.depthByReadGroup.get(rg); @@ -179,6 +185,10 @@ public class DepthOfCoverageWalker extends LocusWalker= 0 ) { + header.append("\tpercent_loci_covered_atleast_depth"); + header.append(minDepthForPercentage); + } if ( byReadGroup ) { for ( String rg : readGroupNames ) { header.append("\tcoverage_for_"); @@ -199,28 +209,34 @@ public class DepthOfCoverageWalker extends LocusWalker 0 ) { sb.append("\t"); sb.append((info.totalCoverage - info.numBadMQReads)); if ( printAverageCoverage ) { sb.append("\t"); - sb.append(String.format("%.2f", ((double)(info.totalCoverage - info.numBadMQReads)) / (double)(loc.getStop() - loc.getStart() + 1))); + sb.append(String.format("%.2f", ((double)(info.totalCoverage - info.numBadMQReads)) / totalBases)); } } + if ( minDepthForPercentage >= 0 ) { + sb.append("\t"); + sb.append(String.format("%.2f", ((double)info.minDepthCoveredLoci) / totalBases)); + } if ( byReadGroup ) { for ( String rg : readGroupNames ) { sb.append("\t"); @@ -242,6 +258,7 @@ public class DepthOfCoverageWalker extends LocusWalker depthByReadGroup = null; public HashMap depthBySample = null; diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PercentOfBasesCoveredWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/PercentOfBasesCoveredWalker.java deleted file mode 100644 index f09e5bc31..000000000 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PercentOfBasesCoveredWalker.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.broadinstitute.sting.playground.gatk.walkers; - -import org.broadinstitute.sting.gatk.walkers.LocusWalker; -import org.broadinstitute.sting.gatk.walkers.TreeReducible; -import org.broadinstitute.sting.gatk.walkers.DataSource; -import org.broadinstitute.sting.gatk.walkers.By; -import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; -import org.broadinstitute.sting.gatk.contexts.ReferenceContext; -import org.broadinstitute.sting.gatk.contexts.AlignmentContext; -import org.broadinstitute.sting.utils.Pair; -import org.broadinstitute.sting.utils.cmdLine.Argument; - -/** - * Created by IntelliJ IDEA. - * User: Ghost - * Date: Nov 25, 2009 - * Time: 7:54:42 PM - * To change this template use File | Settings | File Templates. - */ -@By(DataSource.REFERENCE) -public class PercentOfBasesCoveredWalker extends LocusWalker> implements TreeReducible> { - @Argument(fullName="minimumDepth", shortName="minDepth", doc="Minimum depth beyond which to discount the base as uncovered", required=false) - int minDepth = 0; - @Argument(fullName="includeName",doc="include this name in the output of this walker (e.g. NAME: percent of bases covered . . .) ", required=false) - String name = null; - public void initialize() { - // do nothing - } - - public Pair reduceInit() { - return new Pair(0,1); // robust initialization -- seen one base with zero coverage - } - - public Boolean map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - return context.size() > minDepth; - } - - public Pair reduce(Boolean map, Pair prevReduce) { - if ( map.booleanValue() ) { - return new Pair(prevReduce.first+1,prevReduce.second+1); - } else { - return new Pair(prevReduce.first,prevReduce.second+1); - } - } - - public Pair treeReduce( Pair left, Pair right) { - right.set(right.first+left.first,right.second+left.second); - return right; - } - - public void onTraversalDone(Pair reduceFinal) { - String msg; - if (name == null) - msg = "Percent of bases covered at "+minDepth+"x="; - else - msg = name+": Percent of bases covered at "+minDepth+"x="; - - out.printf("%s%s",msg,pair2percent(reduceFinal)); - } - - private String pair2percent(Pair p ) { - return String.format("%d%s", (int) Math.floor( ( ( double) p.first*100.0) / p.second ), "%" ); - } -} diff --git a/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java b/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java index ab47ed0b7..e56772722 100755 --- a/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java +++ b/java/test/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageIntegrationTest.java @@ -15,6 +15,8 @@ public class DepthOfCoverageIntegrationTest extends WalkerTest { static { expectations.put("-minMAPQ 1", "59c6071105a598e19f460640c35768c6"); expectations.put("-minMAPQ 100", "e997fb5d61eaec21518722b0de90af20"); + expectations.put("-minDepth 8", "3e50afef0e751119cd27c324bdfae544"); + expectations.put("-minDepth 10", "d4c336d9e748347e1082bbc92d2489a3"); expectations.put("-bySample", "160ffa185dbfa8b0d2dc57f60f5b1e48"); expectations.put("-byRG", "dd3b4d040df7325dad4760ac6fa5252d"); expectations.put("-minMAPQ 1 -bySample -byRG", "bd2a07ef548b86e82ac6cce534225612");