Merge pull request #185 from broadinstitute/gda_poolcaller_fix_47921867

Corner case fix to General Ploidy SNP likelihood model.
This commit is contained in:
Mark DePristo 2013-04-24 04:14:05 -07:00
commit df6ba74395
1 changed files with 23 additions and 21 deletions

View File

@ -227,7 +227,7 @@ public class GeneralPloidySNPGenotypeLikelihoods extends GeneralPloidyGenotypeLi
* @param capBaseQualsAtMappingQual Cap base at mapping qual * @param capBaseQualsAtMappingQual Cap base at mapping qual
* @param minBaseQual Minimum base quality to consider * @param minBaseQual Minimum base quality to consider
* @param errorModel Site error model * @param errorModel Site error model
* @return Number of bases added * @return Number of bases added - only good bases actually added to GLs are counted.
*/ */
private int add(ReadBackedPileup pileup, boolean ignoreBadBases, boolean capBaseQualsAtMappingQual, int minBaseQual, ErrorModel errorModel) { private int add(ReadBackedPileup pileup, boolean ignoreBadBases, boolean capBaseQualsAtMappingQual, int minBaseQual, ErrorModel errorModel) {
// Number of [A C G T]'s in pileup, in that order // Number of [A C G T]'s in pileup, in that order
@ -235,7 +235,7 @@ public class GeneralPloidySNPGenotypeLikelihoods extends GeneralPloidyGenotypeLi
for (byte b: BaseUtils.BASES) for (byte b: BaseUtils.BASES)
numSeenBases.add(0); numSeenBases.add(0);
if (hasReferenceSampleData) { int nGoodBases = 0;
// count number of elements in pileup // count number of elements in pileup
for (PileupElement elt : pileup) { for (PileupElement elt : pileup) {
byte obsBase = elt.getBase(); byte obsBase = elt.getBase();
@ -250,13 +250,14 @@ public class GeneralPloidySNPGenotypeLikelihoods extends GeneralPloidyGenotypeLi
numSeenBases.set(idx++,cnt + (base == obsBase?1:0)); numSeenBases.set(idx++,cnt + (base == obsBase?1:0));
} }
nGoodBases++;
} }
if (VERBOSE) if (VERBOSE)
System.out.format("numSeenBases: %d %d %d %d\n",numSeenBases.get(0),numSeenBases.get(1),numSeenBases.get(2),numSeenBases.get(3)); System.out.format("numSeenBases: %d %d %d %d\n",numSeenBases.get(0),numSeenBases.get(1),numSeenBases.get(2),numSeenBases.get(3));
}
computeLikelihoods(errorModel, myAlleles, numSeenBases, pileup); computeLikelihoods(errorModel, myAlleles, numSeenBases, pileup);
return pileup.getNumberOfElements(); return nGoodBases;
} }
/** /**
@ -281,7 +282,8 @@ public class GeneralPloidySNPGenotypeLikelihoods extends GeneralPloidyGenotypeLi
double p1 = 0.0; double p1 = 0.0;
if (!hasReferenceSampleData) { if (!hasReferenceSampleData) {
// no error model: loop throught pileup to compute likalihoods just on base qualities // no error model: loop through pileup to compute likelihoods just on base qualities
// In this case, vector numObservations is not used directly for GL computation
for (final PileupElement elt : pileup) { for (final PileupElement elt : pileup) {
final byte obsBase = elt.getBase(); final byte obsBase = elt.getBase();
final byte qual = qualToUse(elt, true, true, mbq); final byte qual = qualToUse(elt, true, true, mbq);