From db54d63fc774b08f3e1072b3b2998d27ab4b0065 Mon Sep 17 00:00:00 2001 From: chartl Date: Fri, 30 Jul 2010 04:23:02 +0000 Subject: [PATCH] Hahaha yes, ownage. This now works. BTW, Eric, thanks for forwarding the DepthOfCoverage thread to gsamembers. I'd forgotten about reduce by interval. Mighty helpful in this case! git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3906 348d0f76-0448-11de-a6fe-93d51630548a --- .../walkers/CountIntervals.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/CountIntervals.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/CountIntervals.java index 4d74261cd..2f8fb1810 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/CountIntervals.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/CountIntervals.java @@ -17,31 +17,38 @@ import java.util.List; * very useful since overlapping intervals get merged, so you can count the number of intervals the GATK merges down to. * This was its very first use. */ -public class CountIntervals extends RefWalker> { +public class CountIntervals extends RefWalker { - public Pair reduceInit() { - return new Pair(null,0l); + public Long reduceInit() { + return 0l; } - public GenomeLoc map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { + public boolean isReduceByInterval() { return true; } + + public Long map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { if ( tracker == null ) { return null; } - return ref.getLocus(); + List checkIntervals = tracker.getGATKFeatureMetaData("check",false); + return (long) checkIntervals.size(); } - public Pair reduce(GenomeLoc loc, Pair prev) { - if ( prev.first == null || prev.first.distance(loc) > 1 ) { - prev.second ++; + public Long reduce(Long loc, Long prev) { + if ( loc == null ) { + return 0l; + } else { + return Math.max(prev,loc); } - - prev.first = loc; - - return prev; } - public void onTraversalDone(Pair finalReduce ) { - out.printf("Number of contiguous intervals: %d",finalReduce.second); + public void onTraversalDone(List> finalReduce) { + long count = 0; + for ( Pair g : finalReduce ) { + if ( g.second > 1) { + count ++; + } + } + out.printf("Number of contiguous intervals: %d",count); } }