Works on strings, not seqs
authoramwaterhouse <Andrew Waterhouse>
Tue, 18 Jul 2006 15:29:35 +0000 (15:29 +0000)
committeramwaterhouse <Andrew Waterhouse>
Tue, 18 Jul 2006 15:29:35 +0000 (15:29 +0000)
src/jalview/analysis/AlignSeq.java
src/jalview/analysis/AlignmentSorter.java
src/jalview/analysis/NJTree.java

index d3dfc9b..464abb0 100755 (executable)
@@ -98,7 +98,6 @@ public class AlignSeq
     String type;\r
     Runtime rt;\r
 \r
-\r
     /**\r
      * Creates a new AlignSeq object.\r
      *\r
@@ -109,7 +108,24 @@ public class AlignSeq
     public AlignSeq(SequenceI s1, SequenceI s2, String type)\r
     {\r
         rt = Runtime.getRuntime();\r
-        SeqInit(s1, s2, type);\r
+        SeqInit(s1, s1.getSequence(), s2,  s2.getSequence(), type);\r
+    }\r
+\r
+    /**\r
+     * Creates a new AlignSeq object.\r
+     *\r
+     * @param s1 DOCUMENT ME!\r
+     * @param s2 DOCUMENT ME!\r
+     * @param type DOCUMENT ME!\r
+     */\r
+    public AlignSeq(SequenceI s1,\r
+                    String string1,\r
+                    SequenceI s2,\r
+                    String string2,\r
+                    String type)\r
+    {\r
+        rt = Runtime.getRuntime();\r
+        SeqInit(s1, string1, s2,  string2,  type);\r
     }\r
 \r
     /**\r
@@ -239,10 +255,14 @@ public class AlignSeq
      * @param s2 DOCUMENT ME!\r
      * @param type DOCUMENT ME!\r
      */\r
-    public void SeqInit(SequenceI s1, SequenceI s2, String type)\r
+    public void SeqInit(SequenceI s1,\r
+                        String string1,\r
+                        SequenceI s2,\r
+                        String string2,\r
+                        String type)\r
     {\r
-        s1str = extractGaps(jalview.util.Comparison.GapChars, s1.getSequence());\r
-        s2str = extractGaps(jalview.util.Comparison.GapChars, s2.getSequence());\r
+        s1str = extractGaps(jalview.util.Comparison.GapChars, string1);\r
+        s2str = extractGaps(jalview.util.Comparison.GapChars, string2);\r
 \r
         this.s1 = s1;\r
         this.s2 = s2;\r
index c2814b8..27d1e7b 100755 (executable)
@@ -52,7 +52,8 @@ public class AlignmentSorter
 \r
         for (int i = 0; i < nSeq; i++)\r
         {\r
-            scores[i] = Comparison.PID(align.getSequenceAt(i), s);\r
+            scores[i] = Comparison.PID(align.getSequenceAt(i).getSequence(),\r
+                                       s.getSequence());\r
             seqs[i] = align.getSequenceAt(i);\r
         }\r
 \r
index 40dfc9b..be3b96d 100755 (executable)
@@ -39,6 +39,11 @@ public class NJTree
 {\r
     Vector cluster;\r
     SequenceI[] sequence;\r
+\r
+    //SequenceData is a string representation of what the user\r
+    //sees. The display may contain hidden columns.\r
+    String [] sequenceString;\r
+\r
     int[] done;\r
     int noseqs;\r
     int noClus;\r
@@ -58,23 +63,12 @@ public class NJTree
     String pwtype;\r
     Object found = null;\r
     Object leaves = null;\r
-    int start;\r
-    int end;\r
+\r
     boolean hasDistances = true; // normal case for jalview trees\r
-       boolean hasBootstrap = false; // normal case for jalview trees\r
+    boolean hasBootstrap = false; // normal case for jalview trees\r
 \r
     private boolean hasRootDistance = true;\r
 \r
-    /**\r
-     * Creates a new NJTree object.\r
-     *\r
-     * @param node DOCUMENT ME!\r
-     */\r
-    public NJTree(SequenceNode node)\r
-    {\r
-        top = node;\r
-        maxheight = findHeight(top);\r
-    }\r
 \r
     /**\r
      * Creates a new NJTree object.\r
@@ -82,10 +76,20 @@ public class NJTree
      * @param seqs DOCUMENT ME!\r
      * @param treefile DOCUMENT ME!\r
      */\r
-    public NJTree(SequenceI[] seqs, NewickFile treefile)\r
+    public NJTree(SequenceI[] seqs,  NewickFile treefile)\r
     {\r
         top = treefile.getTree();\r
 \r
+        if (sequenceString == null)\r
+        {\r
+          sequenceString = new String[sequence.length];\r
+          for (int i = 0; i < sequence.length; i++)\r
+          {\r
+            sequenceString[i] = sequence[i].getSequence();\r
+          }\r
+        }\r
+\r
+\r
         hasDistances = treefile.HasDistances();\r
         hasBootstrap = treefile.HasBootstrap();\r
         hasRootDistance = treefile.HasRootDistance();\r
@@ -132,32 +136,33 @@ public class NJTree
      * Creates a new NJTree object.\r
      *\r
      * @param sequence DOCUMENT ME!\r
-     * @param start DOCUMENT ME!\r
-     * @param end DOCUMENT ME!\r
-     */\r
-    public NJTree(SequenceI[] sequence, int start, int end)\r
-    {\r
-        this(sequence, "NJ", "BL", start, end);\r
-    }\r
-\r
-    /**\r
-     * Creates a new NJTree object.\r
-     *\r
-     * @param sequence DOCUMENT ME!\r
      * @param type DOCUMENT ME!\r
      * @param pwtype DOCUMENT ME!\r
      * @param start DOCUMENT ME!\r
      * @param end DOCUMENT ME!\r
      */\r
-    public NJTree(SequenceI[] sequence, String type, String pwtype, int start,\r
-        int end)\r
+    public NJTree(SequenceI[] sequence,\r
+                  String [] sequenceString,\r
+                  String type,\r
+                  String pwtype,\r
+                  int start, int end)\r
     {\r
         this.sequence = sequence;\r
         this.node = new Vector();\r
         this.type = type;\r
         this.pwtype = pwtype;\r
-        this.start = start;\r
-        this.end = end;\r
+\r
+        if (sequenceString == null)\r
+        {\r
+          this.sequenceString = new String[sequence.length];\r
+          for(int i=0; i<sequence.length; i++)\r
+          {\r
+            this.sequenceString[i] = sequence[i].getSequence(start, end);\r
+          }\r
+        }\r
+        else\r
+          this.sequenceString = sequenceString;\r
+\r
 \r
         if (!(type.equals("NJ")))\r
         {\r
@@ -607,7 +612,8 @@ public class NJTree
                     else\r
                     {\r
                         distance[i][j] = 100 -\r
-                            Comparison.PID(sequence[i], sequence[j], start, end);\r
+                             Comparison.PID(sequenceString[i], sequenceString[j]);\r
+\r
                         distance[j][i] = distance[i][j];\r
                     }\r
                 }\r
@@ -616,20 +622,20 @@ public class NJTree
         else if (pwtype.equals("BL"))\r
         {\r
             int maxscore = 0;\r
-\r
+            int end = sequenceString[0].length();\r
             for (int i = 0; i < (noseqs - 1); i++)\r
             {\r
                 for (int j = i; j < noseqs; j++)\r
                 {\r
                     int score = 0;\r
 \r
-                    for (int k = start; k < end; k++)\r
+                    for (int k = 0; k < end; k++)\r
                     {\r
                         try\r
                         {\r
-                            score += ResidueProperties.getBLOSUM62(sequence[i].getSequence(\r
-                                    k, k + 1), sequence[j].getSequence(k, k +\r
-                                    1));\r
+                            score += ResidueProperties.getBLOSUM62(\r
+                              sequenceString[i].substring(k, k + 1),\r
+                              sequenceString[j].substring(k, k + 1));\r
                         }\r
                         catch (Exception ex)\r
                         {\r
@@ -656,7 +662,7 @@ public class NJTree
                 }\r
             }\r
         }\r
-        else if (pwtype.equals("SW"))\r
+      /*  else if (pwtype.equals("SW"))\r
         {\r
             float max = -1;\r
 \r
@@ -685,7 +691,7 @@ public class NJTree
                     distance[j][i] = distance[i][j];\r
                 }\r
             }\r
-        }\r
+        }/*/\r
 \r
         return distance;\r
     }\r
@@ -976,12 +982,23 @@ public class NJTree
         return top;\r
     }\r
 \r
+    public String printOriginalSequenceData()\r
+    {\r
+      StringBuffer sb = new StringBuffer();\r
+      for(int i=0; i<sequenceString.length; i++)\r
+      {\r
+        sb.append(sequence[i].getName()+"\t");\r
+        sb.append(sequenceString[i]+"\n");\r
+      }\r
+      return sb.toString();\r
+    }\r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r
      * @param node DOCUMENT ME!\r
      */\r
-    public static void printN(SequenceNode node)\r
+    public void printN(SequenceNode node)\r
     {\r
         if (node == null)\r
         {\r