From e91a429c585b292a4dd7e768ffd86ab5adb700d3 Mon Sep 17 00:00:00 2001 From: hanna Date: Mon, 13 Apr 2009 15:29:55 +0000 Subject: [PATCH] A class to print out as much context about the given locus site as is possible. Useful for testing traversal engines -- run old and new code across a given region and diff the output to make sure they have the same context. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@383 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/walkers/PrintLocusContextWalker.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 java/src/org/broadinstitute/sting/gatk/walkers/PrintLocusContextWalker.java diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/PrintLocusContextWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/PrintLocusContextWalker.java new file mode 100755 index 000000000..2aa556734 --- /dev/null +++ b/java/src/org/broadinstitute/sting/gatk/walkers/PrintLocusContextWalker.java @@ -0,0 +1,45 @@ +package org.broadinstitute.sting.gatk.walkers; + +import org.broadinstitute.sting.gatk.LocusContext; +import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; + +import java.util.List; +import java.util.Arrays; +import java.util.ArrayList; + +import net.sf.samtools.SAMRecord; + +/** + * Created by IntelliJ IDEA. + * User: hanna + * Date: 13 Apr, 2009 + * Time: 11:23:14 AM + * To change this template use File | Settings | File Templates. + */ +public class PrintLocusContextWalker extends LocusWalker { + public LocusContext map(RefMetaDataTracker tracker, char ref, LocusContext context) { + out.printf( "In map: ref = %c, loc = %s, reads = %s%n", ref, + context.getLocation(), + Arrays.deepToString( getReadNames(context.getReads()) ) ); + return context; + } + + public Integer reduceInit() { return 0; } + + public Integer reduce(LocusContext context, Integer sum) { + out.printf( "In reduce: loc = %s, reads = %s, sum =%d%n", context.getLocation(), + Arrays.deepToString( getReadNames(context.getReads()) ), + sum ); + + + return sum + 1; + } + + private String[] getReadNames( List reads ) { + String[] readNames = new String[ reads.size() ]; + for( int i = 0; i < reads.size(); i++ ) + readNames[i] = reads.get(i).getReadName(); + return readNames; + } +}