Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current version of
AbstractLocusIterator
class works the following way: when new read comes, it completes all accumulated loci with position to the left of the read start. When the flagincludeIndels
is specified, the read starting with insertions won't complete the locus at the position to the left of the read start. So, iterator will keep previous locus, which will store insertion info.The bug appears when a read that does not start with insertion(REC1) comes before the read that does start with insertion (REC2) at the same position:
In this case the first read without insertion will complete all loci at the previous positions. As a result there is no locus in which we should have accumulated the insertion from the second read which leads to
IllegalStateException
.We propose to store one more locus in accumulator before completion to make sure that all records (including those that start with insertion) on current position were accumulated.