X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FFinder.java;h=c545c7f1ae05fa21883641b7a03a708190f1f9e5;hb=3d2750d886f1b6015b2fc3f8671a6cf3e32bb07a;hp=fc6537910140ac4c8bfb378f34c1c1c283fc1589;hpb=b7014049e421026d0f2d57179af9688472cd78f2;p=jalview.git diff --git a/src/jalview/analysis/Finder.java b/src/jalview/analysis/Finder.java index fc65379..c545c7f 100644 --- a/src/jalview/analysis/Finder.java +++ b/src/jalview/analysis/Finder.java @@ -164,14 +164,10 @@ public class Finder implements FinderI getSequence(ignoreHidden); boolean found = false; - while (!found || findAll) + while ((!found || findAll) && sequenceIndex < end) { found = findNextMatch(searchString, searchPattern, searchDescription, ignoreHidden); - if (sequenceIndex >= end) - { - break; - } } } @@ -223,6 +219,7 @@ public class Finder implements FinderI if (ignoreHidden) { seqString = getVisibleSequence(seq); + this.searchedSequenceStartPosition = 1; } else { @@ -262,8 +259,12 @@ public class Finder implements FinderI */ 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 visibleColumns = viewport.getViewAsVisibleContigs(true); StringBuilder visibleSeq = new StringBuilder(seqEndCol - seqStartCol); List fromRanges = new ArrayList<>(); @@ -291,7 +292,7 @@ public class Finder implements FinderI * 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 }); } } @@ -470,10 +471,7 @@ public class Finder implements FinderI */ 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); } /**