Fix for the indel cleaner: I forgot to "unclip" the cigar string (even though the clipped bases were removed) before using it as an alternate consensus in a particular instance.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3468 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
ebanks 2010-06-01 02:07:20 +00:00
parent 5f950dcc61
commit 7f0c638653
1 changed files with 6 additions and 2 deletions

View File

@ -719,6 +719,7 @@ public class IndelRealigner extends ReadWalker<Integer, Integer> {
return null;
// create the new consensus
ArrayList<CigarElement> elements = new ArrayList<CigarElement>(c.numCigarElements()-1);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < indexOnRef; i++)
sb.append((char)reference[i]);
@ -732,8 +733,9 @@ public class IndelRealigner extends ReadWalker<Integer, Integer> {
int elementLength = ce.getLength();
switch( ce.getOperator() ) {
case D:
indelCount++;
refIdx += elementLength;
indelCount++;
elements.add(ce);
break;
case M:
altIdx += elementLength;
@ -745,6 +747,7 @@ public class IndelRealigner extends ReadWalker<Integer, Integer> {
sb.append((char)reference[refIdx+j]);
}
refIdx += elementLength;
elements.add(new CigarElement(elementLength, CigarOperator.M));
break;
case I:
for (int j = 0; j < elementLength; j++) {
@ -757,6 +760,7 @@ public class IndelRealigner extends ReadWalker<Integer, Integer> {
}
altIdx += elementLength;
indelCount++;
elements.add(ce);
break;
case S:
default:
@ -771,7 +775,7 @@ public class IndelRealigner extends ReadWalker<Integer, Integer> {
sb.append((char)reference[i]);
byte[] altConsensus = StringUtil.stringToBytes(sb.toString()); // alternative consensus sequence we just built from the current read
return new Consensus(altConsensus, c, indexOnRef);
return new Consensus(altConsensus, new Cigar(elements), indexOnRef);
}
// create a Consensus from just the indel string that falls on the reference