From 98798eb2761988d684ad4694b75db23366935c68 Mon Sep 17 00:00:00 2001 From: rpoplin Date: Sat, 2 Apr 2011 22:28:41 +0000 Subject: [PATCH] Adding ReadPos rank sum test. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5560 348d0f76-0448-11de-a6fe-93d51630548a --- .../walkers/annotator/ReadPosRankSumTest.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 java/src/org/broadinstitute/sting/gatk/walkers/annotator/ReadPosRankSumTest.java diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/annotator/ReadPosRankSumTest.java b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/ReadPosRankSumTest.java new file mode 100755 index 000000000..e67061e48 --- /dev/null +++ b/java/src/org/broadinstitute/sting/gatk/walkers/annotator/ReadPosRankSumTest.java @@ -0,0 +1,41 @@ +package org.broadinstitute.sting.gatk.walkers.annotator; + +import org.broad.tribble.vcf.VCFHeaderLineType; +import org.broad.tribble.vcf.VCFInfoHeaderLine; +import org.broadinstitute.sting.utils.pileup.PileupElement; +import org.broadinstitute.sting.utils.pileup.ReadBackedPileup; +import org.broadinstitute.sting.utils.sam.AlignmentUtils; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by IntelliJ IDEA. + * User: rpoplin + * Date: 3/30/11 + */ + +public class ReadPosRankSumTest extends RankSumTest { + + public List getKeyNames() { return Arrays.asList("ReadPosRankSum"); } + + public List getDescriptions() { return Arrays.asList(new VCFInfoHeaderLine("ReadPosRankSum", 1, VCFHeaderLineType.Float, "Phred-scaled p-value From Wilcoxon Rank Sum Test of Alt Vs. Ref read position bias")); } + + protected void fillQualsFromPileup(byte ref, byte alt, ReadBackedPileup pileup, List refQuals, List altQuals) { + for ( final PileupElement p : pileup ) { + if( isUsableBase(p) ) { + int readPos = AlignmentUtils.calcAlignmentByteArrayOffset(p.getRead().getCigar(), p.getOffset(), 0, 0); + final int numAlignedBases = AlignmentUtils.getNumAlignedBases(p.getRead()); + if( readPos > numAlignedBases / 2 ) { + readPos = numAlignedBases - ( readPos + 1 ); + } + + if ( p.getBase() == ref ) { + refQuals.add( readPos ); + } else if ( p.getBase() == alt ) { + altQuals.add( readPos ); + } + } + } + } +}