Ignores gaps when searching
authoramwaterhouse <Andrew Waterhouse>
Thu, 13 Jan 2005 12:02:50 +0000 (12:02 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 13 Jan 2005 12:02:50 +0000 (12:02 +0000)
src/jalview/gui/Finder.java

index e1a3082..c2cf25b 100755 (executable)
@@ -101,7 +101,6 @@ public class Finder extends GFinder
     while( !found && seqIndex<av.getAlignment().getHeight())\r
     {\r
       seq = (Sequence)av.getAlignment().getSequenceAt(seqIndex);\r
-\r
       if(av.getSelection().size()>0 && !av.getSelection().contains(seq))\r
       {\r
         // if a selection has been made, only search within that selection\r
@@ -112,10 +111,28 @@ public class Finder extends GFinder
 \r
       item = seq.getSequence();\r
 \r
+      ///Shall we ignore gaps????\r
+      StringBuffer noGaps = new StringBuffer();\r
+      int insertCount=0;\r
+      ArrayList spaces = new ArrayList();\r
+\r
+      for (int j=0; j < item.length(); j++)\r
+      {\r
+\r
+        if(!jalview.util.Comparison.isGap(item.charAt(j)))\r
+         {\r
+           noGaps.append(item.charAt(j));\r
+           spaces.add(new Integer(insertCount));\r
+         }\r
+        else\r
+           insertCount++;\r
+      }\r
+\r
+\r
       Pattern pattern = Pattern.compile(searchString);\r
-      Matcher matcher = pattern.matcher(item);\r
+      Matcher matcher = pattern.matcher(noGaps);\r
 \r
-      for(int r = resIndex; r<item.length(); r++)\r
+      for(int r = resIndex; r<noGaps.length(); r++)\r
       {\r
 \r
        if( matcher.find( r ) )\r
@@ -123,8 +140,8 @@ public class Finder extends GFinder
          resIndex = matcher.start();\r
 \r
          searchResults.add( Integer.toString( seqIndex) );\r
-         searchResults.add( Integer.toString( resIndex) );\r
-         searchResults.add( Integer.toString( matcher.end()-1 ) );\r
+         searchResults.add( Integer.toString( resIndex+ Integer.parseInt(spaces.get(resIndex).toString()) ) );\r
+         searchResults.add( Integer.toString( matcher.end()-1 + Integer.parseInt(spaces.get(matcher.end()-1).toString()) ) );\r
          if(!findAll)\r
          {\r
            // thats enough, break and display the result\r