Addred GapChar string for convenient regex construction
[jalview.git] / src / jalview / util / Comparison.java
index 72fb1d1..0366430 100755 (executable)
@@ -13,32 +13,17 @@ public class Comparison {
      String si   = ii.getSequence();\r
      String sj   = jj.getSequence();\r
 \r
-     int ilen = end-start+1;\r
-     int jlen = end-start+1;\r
-\r
-     if ( si.substring(start + ilen).equals("-") ||\r
-          si.substring(start + ilen).equals(".") ||\r
-          si.substring(start + ilen).equals(" ")) {\r
+     int ilen = si.length()-1;\r
+     int jlen = sj.length()-1;\r
 \r
+     while (jalview.util.Comparison.isGap(si.charAt(start + ilen)))\r
+     {\r
        ilen--;\r
-\r
-       while (si.substring(start + ilen,start + ilen+1).equals("-")  ||\r
-              si.substring(start + ilen,start + ilen+1).equals(".")  ||\r
-              si.substring(start + ilen,start + ilen+1).equals(" ")) {\r
-         ilen--;\r
-       }\r
      }\r
 \r
-     if ( sj.substring(start + jlen).equals("-")  ||\r
-          sj.substring(start + jlen).equals(".")  ||\r
-          sj.substring(start + jlen).equals(" ")) {\r
+     while (jalview.util.Comparison.isGap(sj.charAt(start + jlen)))\r
+     {\r
        jlen--;\r
-\r
-       while (sj.substring(start + jlen,start + jlen+1).equals("-")  ||\r
-              sj.substring(start + jlen,start + jlen+1).equals(".")  ||\r
-              sj.substring(start + jlen,start + jlen+1).equals(" ")) {\r
-         jlen--;\r
-       }\r
      }\r
 \r
      int   count = 0;\r
@@ -68,47 +53,47 @@ public class Comparison {
   }\r
 \r
   /**    */\r
-  public static float PID(Sequence s1 , Sequence s2) {\r
-    int res = 0;\r
+  public static float PID(SequenceI s1 , SequenceI s2)\r
+  {\r
     int len;\r
 \r
-    if (s1.getSequence().length() > s2.getSequence().length()) {\r
+    if (s1.getSequence().length() > s2.getSequence().length())\r
       len = s1.getSequence().length();\r
-    } else {\r
+    else\r
       len = s2.getSequence().length();\r
-    }\r
+\r
 \r
     int bad = 0;\r
 \r
-    for (int i = 0; i < len; i++) {\r
-      String str1 = "";\r
-      String str2 = "";\r
+    for (int i = 0; i < len; i++)\r
+    {\r
+      char chr1;\r
+      char chr2;\r
 \r
-      if (i < s1.getSequence().length()) {\r
-        str1 = s1.getSequence().substring(i,i+1);\r
-      } else {\r
-        str1 = ".";\r
-      }\r
+      if (i < s1.getSequence().length())\r
+        chr1 = s1.getSequence().charAt(i);\r
+      else\r
+        chr1 = '.';\r
 \r
-      if (i < s2.getSequence().length()) {\r
-        str2 = s2.getSequence().substring(i,i+1);\r
-      } else {\r
-        str2 = ".";\r
-      }\r
 \r
-      if (!(str1.equals(".") ||\r
-            str1.equals("-") ||\r
-            str1.equals(" "))   &&\r
-          !(str2.equals(".") ||\r
-            str2.equals("-") ||\r
-            str2.equals(" "))) {\r
+      if (i < s2.getSequence().length())\r
+        chr2 = s2.getSequence().charAt(i);\r
+      else\r
+        chr2 = '.';\r
 \r
-        if (!str1.equals(str2)) {\r
+\r
+      if (!(jalview.util.Comparison.isGap( chr1 ))  &&  !(jalview.util.Comparison.isGap( chr2 )))\r
+      {\r
+        if (chr1!=chr2)\r
           bad++;\r
-        }\r
       }\r
     }\r
 \r
     return (float)100*(len-bad)/len;\r
   }\r
+  public static String GapChars = " .-";\r
+  public static boolean isGap(char c)\r
+  {\r
+    return  (c != '.' && c != '-' && c != ' ') ? false : true;\r
+  }\r
 }\r