Multiple Views
[jalview.git] / src / jalview / gui / PairwiseAlignPanel.java
index 31efd84..248a54c 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
  * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
  *\r
  * This program is free software; you can redistribute it and/or\r
  * modify it under the terms of the GNU General Public License\r
@@ -37,8 +37,9 @@ import java.util.*;
  */\r
 public class PairwiseAlignPanel extends GPairwiseAlignPanel\r
 {\r
-    Vector sequences = new Vector();\r
+\r
     AlignViewport av;\r
+    Vector sequences;\r
 \r
     /**\r
      * Creates a new PairwiseAlignPanel object.\r
@@ -50,40 +51,61 @@ public class PairwiseAlignPanel extends GPairwiseAlignPanel
         super();\r
         this.av = av;\r
 \r
-        Vector selsubset = new Vector();\r
+        sequences = new Vector();\r
+\r
+        SequenceI [] seqs;\r
+        String []  seqStrings = av.getViewAsString(true);\r
 \r
-        for (int i = 0, j = av.getSelectionGroup().getSize(); i < j; i++)\r
+        if(av.getSelectionGroup()==null)\r
         {\r
-            if (av.getAlignment().getSequences().contains(av.getSelectionGroup()\r
-                                                                .getSequenceAt(i)))\r
-            {\r
-                selsubset.add(av.getSelectionGroup().getSequenceAt(i));\r
-            }\r
+          seqs = av.alignment.getSequencesArray();\r
         }\r
+        else\r
+        {\r
+          seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment);\r
+        }\r
+\r
 \r
-        float[][] scores = new float[selsubset.size()][selsubset.size()];\r
+        float[][] scores = new float[seqs.length][seqs.length];\r
         double totscore = 0;\r
-        int count = selsubset.size();\r
+        int count = seqs.length;\r
 \r
-        int acount = 0;\r
+        Sequence seq;\r
 \r
         for (int i = 1; i < count; i++)\r
         {\r
             for (int j = 0; j < i; j++)\r
             {\r
-                acount++;\r
 \r
-                AlignSeq as = new AlignSeq((SequenceI) selsubset.elementAt(i),\r
-                        (SequenceI) selsubset.elementAt(j), "pep");\r
+                AlignSeq as = new AlignSeq(seqs[i], seqStrings[i],\r
+                        seqs[j], seqStrings[j], "pep");\r
+\r
+                if(as.s1str.length()==0 || as.s2str.length()==0)\r
+                {\r
+                  continue;\r
+                }\r
+\r
                 as.calcScoreMatrix();\r
                 as.traceAlignment();\r
+\r
+\r
                 as.printAlignment(System.out);\r
                 scores[i][j] = (float) as.getMaxScore() / (float) as.getASeq1().length;\r
                 totscore = totscore + scores[i][j];\r
 \r
                 textarea.append(as.getOutput());\r
-                sequences.add(new Sequence(as.getS1().getName(), as.getAStr1()));\r
-                sequences.add(new Sequence(as.getS2().getName(), as.getAStr2()));\r
+                seq = new Sequence(as.getS1().getName(),\r
+                                   as.getAStr1(),\r
+                                   as.getS1().getStart(),\r
+                                   as.getS1().getEnd()\r
+                );\r
+                sequences.add(seq);\r
+\r
+                seq = new Sequence(as.getS2().getName(),\r
+                                   as.getAStr2(),\r
+                                   as.getS2().getStart(),\r
+                                   as.getS2().getEnd() );\r
+                sequences.add(seq);\r
             }\r
         }\r
 \r
@@ -96,7 +118,7 @@ public class PairwiseAlignPanel extends GPairwiseAlignPanel
             {\r
                 jalview.util.Format.print(System.out, "%s \n",\r
                     ("" + i) + " " +\r
-                    ((SequenceI) selsubset.elementAt(i)).getName());\r
+                    seqs[i].getName());\r
             }\r
 \r
             System.out.println("\n");\r
@@ -128,8 +150,11 @@ public class PairwiseAlignPanel extends GPairwiseAlignPanel
             seq[i] = (Sequence) sequences.elementAt(i);\r
         }\r
 \r
-        AlignFrame af = new AlignFrame(new Alignment(seq));\r
+        AlignFrame af = new AlignFrame(new Alignment(seq),\r
+                                           AlignFrame.DEFAULT_WIDTH,\r
+                                           AlignFrame.DEFAULT_HEIGHT);\r
+\r
         Desktop.addInternalFrame(af, "Pairwise Aligned Sequences",\r
-            AlignFrame.NEW_WINDOW_WIDTH, AlignFrame.NEW_WINDOW_HEIGHT);\r
+            AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);\r
     }\r
 }\r