getSequence(ignoreHidden);
boolean found = false;
- while (!found || findAll)
+ while ((!found || findAll) && sequenceIndex < end)
{
found = findNextMatch(searchString, searchPattern, searchDescription,
ignoreHidden);
- if (sequenceIndex >= end)
- {
- break;
- }
}
}
if (ignoreHidden)
{
seqString = getVisibleSequence(seq);
+ this.searchedSequenceStartPosition = 1;
}
else
{
*/
private String getVisibleSequence(SequenceI seq)
{
- int seqStartCol = seq.findIndex(seq.getStart());
- int seqEndCol = seq.findIndex(seq.getStart() + seq.getLength() - 1);
+ /*
+ * get start / end columns of sequence and convert to base 0
+ * (so as to match the visible column ranges)
+ */
+ int seqStartCol = seq.findIndex(seq.getStart()) - 1;
+ int seqEndCol = seq.findIndex(seq.getStart() + seq.getLength() - 1) - 1;
Iterator<int[]> visibleColumns = viewport.getViewAsVisibleContigs(true);
StringBuilder visibleSeq = new StringBuilder(seqEndCol - seqStartCol);
List<int[]> fromRanges = new ArrayList<>();
* so add the range to the mapping being constructed
*/
int seqResFrom = seq.findPosition(range[0]);
- int seqResTo = seq.findPosition(range[1]);
+ int seqResTo = seqResFrom + ungapped.length() - 1;
fromRanges.add(new int[] { seqResFrom, seqResTo });
}
}
*/
int[] truePositions = searchedSequenceMap
.locateInFrom(matchStartPosition, matchEndPosition);
- for (int i = 0; i < truePositions.length - 1; i += 2)
- {
- searchResults.addResult(seq, truePositions[i], truePositions[i + 1]);
- }
+ searchResults.addResult(seq, truePositions);
}
/**