From 4f818f5c1cb24eed181f0fccf27e3daa6fbcac8c Mon Sep 17 00:00:00 2001 From: kiran Date: Fri, 1 May 2009 06:27:37 +0000 Subject: [PATCH] Choose a random base to stick in the pileup if the 2nd-best base matches the best base. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@578 348d0f76-0448-11de-a6fe-93d51630548a --- .../sting/utils/BasicPileup.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/java/src/org/broadinstitute/sting/utils/BasicPileup.java b/java/src/org/broadinstitute/sting/utils/BasicPileup.java index a9a769ae6..2719180e9 100755 --- a/java/src/org/broadinstitute/sting/utils/BasicPileup.java +++ b/java/src/org/broadinstitute/sting/utils/BasicPileup.java @@ -6,6 +6,7 @@ import net.sf.samtools.SAMRecord; import java.util.List; import java.util.ArrayList; import java.util.Arrays; +import java.util.Random; /** * Created by IntelliJ IDEA. @@ -95,13 +96,30 @@ abstract public class BasicPileup implements Pileup { public static String secondaryBasePileupAsString( List reads, List offsets ) { StringBuilder bases2 = new StringBuilder(); - ArrayList sqbases = secondaryBasePileup(reads, offsets); + ArrayList sbases = secondaryBasePileup(reads, offsets); - if (sqbases == null) { return null; } + if (sbases == null) { return null; } + ArrayList pbases = basePileup(reads, offsets); + + Random generator = new Random(); + + for (int pileupIndex = 0; pileupIndex < sbases.size(); pileupIndex++) { + byte pbase = pbases.get(pileupIndex); + byte sbase = sbases.get(pileupIndex); + + while (sbase == pbase) { + sbase = (byte) BaseUtils.baseIndexToSimpleBase(generator.nextInt(4)); + } + + bases2.append((char) sbase); + } + + /* for (byte base2 : secondaryBasePileup(reads, offsets)) { bases2.append((char) base2); } + */ return bases2.toString(); }