When we subset PLs because Alleles are removed during genotyping we also need to subset AD.

This commit is contained in:
Ryan Poplin 2014-04-28 14:39:18 -04:00
parent 10ee35eafa
commit 41d3069213
2 changed files with 10 additions and 12 deletions

View File

@ -65,7 +65,7 @@ public class GenotypeGVCFsIntegrationTest extends WalkerTest {
" -V:sample3 " + privateTestDir + "combine.single.sample.pipeline.3.vcf" + " -V:sample3 " + privateTestDir + "combine.single.sample.pipeline.3.vcf" +
" -L 20:10,000,000-20,000,000", b37KGReference), " -L 20:10,000,000-20,000,000", b37KGReference),
1, 1,
Arrays.asList("0d056d8f09dfaf9e34eec28747bb6f33")); Arrays.asList("09575e44c9dbcd171a30eff43961c57f"));
executeTest("combineSingleSamplePipelineGVCF", spec); executeTest("combineSingleSamplePipelineGVCF", spec);
} }
@ -90,7 +90,7 @@ public class GenotypeGVCFsIntegrationTest extends WalkerTest {
" -V:sample3 " + privateTestDir + "combine.single.sample.pipeline.3.vcf" + " -V:sample3 " + privateTestDir + "combine.single.sample.pipeline.3.vcf" +
" -L 20:10,000,000-20,000,000", b37KGReference), " -L 20:10,000,000-20,000,000", b37KGReference),
1, 1,
Arrays.asList("3552f61d15375afb753879cb0bcd2880")); Arrays.asList("3f34e05318479cf8743f4227491c7cd1"));
executeTest("combineSingleSamplePipelineGVCFHierarchical", spec); executeTest("combineSingleSamplePipelineGVCFHierarchical", spec);
} }

View File

@ -582,7 +582,7 @@ public class GATKVariantContextUtils {
} }
/** /**
* Create the new GenotypesContext with the subsetted PLs * Create the new GenotypesContext with the subsetted PLs and ADs
* *
* @param originalGs the original GenotypesContext * @param originalGs the original GenotypesContext
* @param vc the original VariantContext * @param vc the original VariantContext
@ -643,7 +643,7 @@ public class GATKVariantContextUtils {
newGTs.add(gb.make()); newGTs.add(gb.make());
} }
return newGTs; return fixADFromSubsettedAlleles(newGTs, vc, allelesToUse);
} }
private static boolean likelihoodsAreUninformative(final double[] likelihoods) { private static boolean likelihoodsAreUninformative(final double[] likelihoods) {
@ -1087,10 +1087,10 @@ public class GATKVariantContextUtils {
if ( refAllele == null ) if ( refAllele == null )
return null; return null;
// FinalAlleleSet contains the alleles of the new resulting VC. // FinalAlleleSet contains the alleles of the new resulting VC
// Using linked set in order to guaranteed an stable order: // Using linked set in order to guarantee a stable order
final LinkedHashSet<Allele> finalAlleleSet = new LinkedHashSet<>(10); final LinkedHashSet<Allele> finalAlleleSet = new LinkedHashSet<>(10);
// Reference goes first: // Reference goes first
finalAlleleSet.add(refAllele); finalAlleleSet.add(refAllele);
final Map<String, Object> attributes = new LinkedHashMap<>(); final Map<String, Object> attributes = new LinkedHashMap<>();
@ -1321,20 +1321,18 @@ public class GATKVariantContextUtils {
if ( numNewAlleles == numOriginalAlleles ) if ( numNewAlleles == numOriginalAlleles )
return oldGs; return oldGs;
final GenotypesContext newGs = fixPLsFromSubsettedAlleles(oldGs, originalVC, selectedVC.getAlleles()); return fixGenotypesFromSubsettedAlleles(oldGs, originalVC, selectedVC.getAlleles());
return fixADFromSubsettedAlleles(newGs, originalVC, selectedVC.getAlleles());
} }
/** /**
* Fix the PLs for the GenotypesContext of a VariantContext that has been subset * Fix the PLs and ADs for the GenotypesContext of a VariantContext that has been subset
* *
* @param originalGs the original GenotypesContext * @param originalGs the original GenotypesContext
* @param originalVC the original VariantContext * @param originalVC the original VariantContext
* @param allelesToUse the new (sub)set of alleles to use * @param allelesToUse the new (sub)set of alleles to use
* @return a new non-null GenotypesContext * @return a new non-null GenotypesContext
*/ */
static private GenotypesContext fixPLsFromSubsettedAlleles(final GenotypesContext originalGs, final VariantContext originalVC, final List<Allele> allelesToUse) { static private GenotypesContext fixGenotypesFromSubsettedAlleles(final GenotypesContext originalGs, final VariantContext originalVC, final List<Allele> allelesToUse) {
// we need to determine which of the alternate alleles (and hence the likelihoods) to use and carry forward // we need to determine which of the alternate alleles (and hence the likelihoods) to use and carry forward
final List<Integer> likelihoodIndexesToUse = determineLikelihoodIndexesToUse(originalVC, allelesToUse); final List<Integer> likelihoodIndexesToUse = determineLikelihoodIndexesToUse(originalVC, allelesToUse);