Mapping now performed in PDBChain
[jalview.git] / src / jalview / analysis / AlignSeq.java
index 9d8f008..6b40e91 100755 (executable)
@@ -69,8 +69,8 @@ public class AlignSeq
     int maxj;\r
     int[] aseq1;\r
     int[] aseq2;\r
-    String astr1 = "";\r
-    String astr2 = "";\r
+    public String astr1 = "";\r
+    public String astr2 = "";\r
 \r
     /** DOCUMENT ME!! */\r
     public int seq1start;\r
@@ -403,10 +403,55 @@ public class AlignSeq
         }\r
     }\r
 \r
+    public int [] getExactMapping()\r
+    {\r
+        // Print out the matching chars\r
+        int size = s2.getLength()+1;\r
+        int [] mapping = new int[size];\r
+        for(int i=0; i<size; i++)\r
+          mapping[i] = -1;\r
+\r
+        int pdbpos = s2.getStart() + seq2start-3;\r
+        int alignpos = s1.getStart() + seq1start-3;\r
+\r
+System.out.println(pdbpos+" "+alignpos);\r
+        for(int i=0; i<astr1.length(); i++)\r
+        {\r
+            if (astr1.charAt(i) != '-')\r
+            {\r
+              alignpos++;\r
+            }\r
+\r
+            if (astr2.charAt(i) != '-')\r
+            {\r
+              pdbpos++;\r
+            }\r
+\r
+            if (astr1.charAt(i) == astr2.charAt(i))\r
+            {\r
+              mapping[pdbpos] = alignpos;\r
+            }\r
+        }\r
+System.out.println(s1.getStart()+" "+s2.getStart()+" "+seq1start+" "+seq2start+"\n"+\r
+                           s1.getSequence()+"\n"+s2.getSequence()+"\n"+astr1+"\n"+astr2);\r
+\r
+        for(int i=0; i<mapping.length; i++)\r
+        {\r
+          if(mapping[i]!=-1)\r
+            System.out.println(i+" "+s2.getCharAt(i) + " " + mapping[i] + " " +\r
+                               s1.findIndex(mapping[i]+1)+" "+\r
+                               s1.getCharAt(s1.findIndex(mapping[i])));\r
+          else\r
+            System.out.println(i+" "+"XX"+s2.getCharAt(i));\r
+        }\r
+\r
+        return mapping;\r
+    }\r
+\r
     /**\r
      * DOCUMENT ME!\r
      */\r
-    public void printAlignment()\r
+    public void printAlignment(java.io.PrintStream os)\r
     {\r
         // Find the biggest id length for formatting purposes\r
         int maxid = s1.getName().length();\r
@@ -499,7 +544,9 @@ public class AlignSeq
         pid = pid / (float) (aseq1.length - count) * 100;\r
         output = output.append(new Format("Percentage ID = %2.2f\n\n").form(pid));\r
 \r
-        System.out.println(output.toString());\r
+        try{\r
+          os.println(output.toString());\r
+        }catch(Exception ex){}\r
     }\r
 \r
     /**\r
@@ -653,14 +700,14 @@ public class AlignSeq
     public static String extractGaps(String gapChar, String seq)\r
     {\r
         StringTokenizer str = new StringTokenizer(seq, gapChar);\r
-        String newString = new String();\r
+        StringBuffer newString = new StringBuffer();\r
 \r
         while (str.hasMoreTokens())\r
         {\r
-            newString = newString + str.nextToken();\r
+            newString.append( str.nextToken() );\r
         }\r
 \r
-        return newString;\r
+        return newString.toString();\r
     }\r
 \r
     /**\r