Fix for mismatching indel quals erro: need to adjust for softclips just like we do for bases and normal quals.

This commit is contained in:
Eric Banks 2013-03-04 23:23:18 -05:00
parent 0697594778
commit b715218bfe
1 changed files with 16 additions and 5 deletions

View File

@ -343,8 +343,10 @@ public class PairHMMIndelErrorModel {
}
}
else {
final byte[] readBases = Arrays.copyOfRange(unclippedReadBases,numStartSoftClippedBases, unclippedReadBases.length-numEndSoftClippedBases);
final byte[] readQuals = Arrays.copyOfRange(unclippedReadQuals,numStartSoftClippedBases, unclippedReadBases.length-numEndSoftClippedBases);
final int endOfCopy = unclippedReadBases.length - numEndSoftClippedBases;
final byte[] readBases = Arrays.copyOfRange(unclippedReadBases, numStartSoftClippedBases, endOfCopy);
final byte[] readQuals = Arrays.copyOfRange(unclippedReadQuals, numStartSoftClippedBases, endOfCopy);
int j=0;
byte[] previousHaplotypeSeen = null;
@ -356,6 +358,16 @@ public class PairHMMIndelErrorModel {
getContextHomopolymerLength(readBases,hrunProfile);
fillGapProbabilities(hrunProfile, contextLogGapOpenProbabilities, contextLogGapContinuationProbabilities);
// get the base insertion and deletion qualities to use
final byte[] baseInsertionQualities, baseDeletionQualities;
if ( read.hasBaseIndelQualities() ) {
baseInsertionQualities = Arrays.copyOfRange(read.getBaseInsertionQualities(), numStartSoftClippedBases, endOfCopy);
baseDeletionQualities = Arrays.copyOfRange(read.getBaseDeletionQualities(), numStartSoftClippedBases, endOfCopy);
} else {
baseInsertionQualities = contextLogGapOpenProbabilities;
baseDeletionQualities = contextLogGapOpenProbabilities;
}
boolean firstHap = true;
for (Allele a: haplotypeMap.keySet()) {
@ -385,7 +397,7 @@ public class PairHMMIndelErrorModel {
if (previousHaplotypeSeen == null) {
//no need to reallocate arrays for each new haplotype, as length won't change
pairHMM.initialize(X_METRIC_LENGTH, Y_METRIC_LENGTH);
pairHMM.initialize(Y_METRIC_LENGTH, X_METRIC_LENGTH);
}
int startIndexInHaplotype = 0;
@ -394,8 +406,7 @@ public class PairHMMIndelErrorModel {
previousHaplotypeSeen = haplotypeBases.clone();
readLikelihood = pairHMM.computeReadLikelihoodGivenHaplotypeLog10(haplotypeBases, readBases, readQuals,
(read.hasBaseIndelQualities() ? read.getBaseInsertionQualities() : contextLogGapOpenProbabilities),
(read.hasBaseIndelQualities() ? read.getBaseDeletionQualities() : contextLogGapOpenProbabilities),
baseInsertionQualities, baseDeletionQualities,
contextLogGapContinuationProbabilities, startIndexInHaplotype, firstHap);