Modified output on stdout for similarity matrix.
[jalview.git] / src / jalview / gui / PairwiseAlignPanel.java
1 package jalview.gui;\r
2 \r
3 import jalview.datamodel.*;\r
4 import jalview.jbgui.GPairwiseAlignPanel;\r
5 import jalview.analysis.*;\r
6 import java.awt.event.*;\r
7 import javax.swing.*;\r
8 import java.util.*;\r
9 \r
10 \r
11 public class PairwiseAlignPanel extends GPairwiseAlignPanel\r
12 {\r
13     Vector sequences = new Vector();\r
14     AlignViewport av;\r
15 \r
16     public PairwiseAlignPanel(AlignViewport av)\r
17     {\r
18       super();\r
19       this.av = av;\r
20       Vector selsubset = new Vector();\r
21       for (int i=0, j=av.getSelectionGroup().getSize(); i<j; i++)\r
22         if (av.getAlignment().getSequences().contains(av.getSelectionGroup().getSequenceAt(i)))\r
23           selsubset.add(av.getSelectionGroup().getSequenceAt(i));\r
24       float scores[][] = new float[selsubset.size()][selsubset.size()];\r
25       double totscore = 0;\r
26       int count = selsubset.size();\r
27 \r
28       int acount = 0;\r
29       for (int i = 1; i < count; i++)\r
30       {\r
31         for (int j = 0; j < i; j++)\r
32         {\r
33           acount++;\r
34           AlignSeq as = new AlignSeq( (SequenceI) selsubset.elementAt(i),\r
35                                      (SequenceI) selsubset.elementAt(j), "pep");\r
36           as.calcScoreMatrix();\r
37           as.traceAlignment();\r
38           as.printAlignment();\r
39           scores[i][j] = (float) as.getMaxScore() /\r
40               (float) as.getASeq1().length;\r
41           totscore = totscore + scores[i][j];\r
42 \r
43           textarea.append(as.getOutput());\r
44           sequences.add(new Sequence(as.getS1().getName(), as.getAStr1()));\r
45           sequences.add(new Sequence(as.getS2().getName(), as.getAStr2()));\r
46         }\r
47       }\r
48       if (count > 2)\r
49       {\r
50         System.out.println("Pairwise alignment scaled similarity score matrix\n");\r
51         for (int i = 0; i < count;i++)\r
52           jalview.util.Format.print(System.out, "%s \n", (""+i)+" "+((SequenceI) selsubset.elementAt(i)).getName());\r
53         System.out.println("\n");\r
54         for (int i = 0; i < count;i++)\r
55           for (int j = 0; j < i; j++)\r
56             jalview.util.Format.print(System.out,"%7.3f",scores[i][j]/totscore);\r
57         System.out.println("\n");\r
58 \r
59       }\r
60     }\r
61 \r
62 \r
63   protected void viewInEditorButton_actionPerformed(ActionEvent e)\r
64   {\r
65 \r
66       Sequence [] seq = new Sequence[sequences.size()];\r
67 \r
68       for (int i=0;i<sequences.size();i++)\r
69        seq[i] = (Sequence) sequences.elementAt(i);\r
70 \r
71 \r
72       AlignFrame af = new AlignFrame(new Alignment(seq));\r
73       Desktop.addInternalFrame(af, "Pairwise Aligned Sequences",\r
74                                AlignFrame.NEW_WINDOW_WIDTH,\r
75                                AlignFrame.NEW_WINDOW_HEIGHT);\r
76 \r
77   }\r
78 \r
79 }\r