Silly mistake '<' for a '<='. It was causing the exception when the exact number of alleles to drop was matching MAX_DROPPED_ALTERNATIVE_ALLELES_TO_LOG exactly (fixed to 20).
I change the code to impose a maximum allele list message length instead and in the process I fixed the bug.
This commit is contained in:
parent
6b04f6ae14
commit
857459e420
|
|
@ -82,7 +82,7 @@ public class HaplotypeCallerGenotypingEngine extends GenotypingEngine<AssemblyBa
|
||||||
protected static final int ALLELE_EXTENSION = 2;
|
protected static final int ALLELE_EXTENSION = 2;
|
||||||
private static final String phase01 = "0|1";
|
private static final String phase01 = "0|1";
|
||||||
private static final String phase10 = "1|0";
|
private static final String phase10 = "1|0";
|
||||||
private static final int MAX_DROPPED_ALTERNATIVE_ALLELES_TO_LOG = 20;
|
private static final int MAX_DROPPED_ALTERNATIVE_ALLELES_LOG_STRING_LENGTH = 500;
|
||||||
|
|
||||||
private MergeVariantsAcrossHaplotypes crossHaplotypeEventMerger;
|
private MergeVariantsAcrossHaplotypes crossHaplotypeEventMerger;
|
||||||
|
|
||||||
|
|
@ -324,20 +324,29 @@ public class HaplotypeCallerGenotypingEngine extends GenotypingEngine<AssemblyBa
|
||||||
private void reduceNumberOfAlternativeAllelesBasedOnLikelihoods(final ReadLikelihoods<Allele> readAlleleLikelihoods, final GenomeLoc location) {
|
private void reduceNumberOfAlternativeAllelesBasedOnLikelihoods(final ReadLikelihoods<Allele> readAlleleLikelihoods, final GenomeLoc location) {
|
||||||
final GenotypingLikelihoods<Allele> genotypeLikelihoods = genotypingModel.calculateLikelihoods(readAlleleLikelihoods, new GenotypingData<>(ploidyModel,readAlleleLikelihoods));
|
final GenotypingLikelihoods<Allele> genotypeLikelihoods = genotypingModel.calculateLikelihoods(readAlleleLikelihoods, new GenotypingData<>(ploidyModel,readAlleleLikelihoods));
|
||||||
final Set<Allele> allelesToDrop = excessAlternativeAlleles(genotypeLikelihoods, configuration.genotypeArgs.MAX_ALTERNATE_ALLELES);
|
final Set<Allele> allelesToDrop = excessAlternativeAlleles(genotypeLikelihoods, configuration.genotypeArgs.MAX_ALTERNATE_ALLELES);
|
||||||
final String allelesToDropString;
|
|
||||||
if (allelesToDrop.size() < MAX_DROPPED_ALTERNATIVE_ALLELES_TO_LOG) {
|
if (allelesToDrop.isEmpty()) return;
|
||||||
allelesToDropString = StringUtil.join(", ", allelesToDrop);
|
|
||||||
} else {
|
int allelesInMessage = 0;
|
||||||
final Iterator<Allele> it = allelesToDrop.iterator();
|
final StringBuilder droppedAlleleStringBuilder = new StringBuilder(MAX_DROPPED_ALTERNATIVE_ALLELES_LOG_STRING_LENGTH << 1);
|
||||||
final StringBuilder builder = new StringBuilder();
|
for (final Allele allele : allelesToDrop) {
|
||||||
for (int i = 0; i < MAX_DROPPED_ALTERNATIVE_ALLELES_TO_LOG; i++) {
|
allelesInMessage++;
|
||||||
builder.append(it.next().toString()).append(", ");
|
droppedAlleleStringBuilder.append(allele.toString()).append(", ");
|
||||||
|
if (droppedAlleleStringBuilder.length() > MAX_DROPPED_ALTERNATIVE_ALLELES_LOG_STRING_LENGTH - 2) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
allelesToDropString = builder.append(it.next().toString()).append(" and ").append(allelesToDrop.size() - 20).append(" more").toString();
|
}
|
||||||
|
droppedAlleleStringBuilder.setLength(droppedAlleleStringBuilder.length() - 2); // remove the last ", "
|
||||||
|
if (droppedAlleleStringBuilder.length() > MAX_DROPPED_ALTERNATIVE_ALLELES_LOG_STRING_LENGTH) {
|
||||||
|
droppedAlleleStringBuilder.setLength(MAX_DROPPED_ALTERNATIVE_ALLELES_LOG_STRING_LENGTH);
|
||||||
|
droppedAlleleStringBuilder.append("...");
|
||||||
|
}
|
||||||
|
if (allelesInMessage < allelesToDrop.size()) {
|
||||||
|
droppedAlleleStringBuilder.append(" and ").append(allelesToDrop.size() - allelesInMessage).append(" more");
|
||||||
}
|
}
|
||||||
logger.warn(String.format("location %s: too many alternative alleles found (%d) larger than the maximum requested with -%s (%d), the following will be dropped: %s.", location,
|
logger.warn(String.format("location %s: too many alternative alleles found (%d) larger than the maximum requested with -%s (%d), the following will be dropped: %s.", location,
|
||||||
readAlleleLikelihoods.alleleCount() - 1, GenotypeCalculationArgumentCollection.MAX_ALTERNATE_ALLELES_SHORT_NAME, configuration.genotypeArgs.MAX_ALTERNATE_ALLELES,
|
readAlleleLikelihoods.alleleCount() - 1, GenotypeCalculationArgumentCollection.MAX_ALTERNATE_ALLELES_SHORT_NAME, configuration.genotypeArgs.MAX_ALTERNATE_ALLELES,
|
||||||
allelesToDropString));
|
droppedAlleleStringBuilder.toString()));
|
||||||
readAlleleLikelihoods.dropAlleles(allelesToDrop);
|
readAlleleLikelihoods.dropAlleles(allelesToDrop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue