@Test(dataProvider = "testGetAllelesIndexOutOfBoundsData", expectedExceptions = IllegalStateException.class) public void testGetAllelesOutOfBounds(final int PLindex, final int ploidy) { final List<Integer> alleles = GenotypeLikelihoods.getAlleles(PLindex, ploidy); }
@Test(expectedExceptions = IllegalStateException.class) public void testGetAllelesUnitialized() { GenotypeLikelihoods.anyploidPloidyToPLIndexToAlleleIndices.clear(); final List<Integer> alleles = GenotypeLikelihoods.getAlleles(0, 3); } }
@Test(dataProvider = "testGetAllelesData") public void testGetAlleles(final int PLindex, final int altAlleles, final int ploidy, final List<Integer> expected ) { Assert.assertEquals(GenotypeLikelihoods.getAlleles(PLindex, ploidy), expected); }
/** * Get the actual likelihoods indexes to use given the corresponding diploid allele indexes * * @param originalVC the original VariantContext * @param alleleIndexesToUse the bitset representing the alleles to use (@see #getAlleleIndexBitset) * @return likelihoods indexes for each genotype */ private static List<List<Integer>> getLikelihoodIndexes(final VariantContext originalVC, BitSet alleleIndexesToUse) { final List<List<Integer>> likelihoodIndexesPerGenotype = new ArrayList<List<Integer>>(10); for (final Genotype g : originalVC.getGenotypes()) { final int numLikelihoods = GenotypeLikelihoods.numLikelihoods(originalVC.getNAlleles(), g.getPloidy()); final List<Integer> likelihoodIndexes = new ArrayList<>(30); for ( int PLindex = 0; PLindex < numLikelihoods; PLindex++ ) { // consider this entry only if all the alleles are good if ( GenotypeLikelihoods.getAlleles(PLindex, g.getPloidy()).stream().allMatch(i -> alleleIndexesToUse.get(i)) ) likelihoodIndexes.add(PLindex); } likelihoodIndexesPerGenotype.add(likelihoodIndexes); } return likelihoodIndexesPerGenotype; }
for ( final Integer alleleIndex : GenotypeLikelihoods.getAlleles(PLindex, ploidy)) { alleles.add(allelesToUse.get(alleleIndex) );
} else { gb = new GenotypeBuilder(g).PL(newPLs).log10PError(newLog10GQ); final List<Integer> originalDiploidAlleles = GenotypeLikelihoods.getAlleles(MathUtil.indexOfMin(newPLs), 2); gb.alleles(originalDiploidAlleles.stream().map(allelesToKeep::get).collect(Collectors.toList()));
} else { gb = new GenotypeBuilder(g).PL(newPLs).log10PError(newLog10GQ); final List<Integer> originalDiploidAlleles = GenotypeLikelihoods.getAlleles(MathUtil.indexOfMin(newPLs), 2); gb.alleles(originalDiploidAlleles.stream().map(allelesToKeep::get).collect(Collectors.toList()));