/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 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
import jalview.analysis.*;\r
import jalview.datamodel.*;\r
\r
-\r
public class PCAPanel\r
extends Frame implements Runnable, ActionListener, ItemListener\r
{\r
int top;\r
RotatableCanvas rc;\r
AlignViewport av;\r
- SequenceI [] seqs;\r
+ SequenceI[] seqs;\r
AlignmentView seqstrings;\r
\r
-\r
public PCAPanel(AlignViewport av)\r
{\r
try\r
}\r
\r
this.av = av;\r
- seqstrings = av.getAlignmentView(av.getSelectionGroup()!=null);\r
- if(av.getSelectionGroup()==null)\r
+ seqstrings = av.getAlignmentView(av.getSelectionGroup() != null);\r
+ if (av.getSelectionGroup() == null)\r
{\r
seqs = av.alignment.getSequencesArray();\r
}\r
{\r
seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment);\r
}\r
- SeqCigar sq[]=seqstrings.getSequences();\r
+ SeqCigar sq[] = seqstrings.getSequences();\r
int length = sq[0].getWidth();\r
\r
for (int i = 0; i < seqs.length; i++)\r
}\r
}\r
\r
-\r
rc = new RotatableCanvas(av);\r
add(rc, BorderLayout.CENTER);\r
\r
jalview.bin.JalviewLite.addFrame(this, "Principal component analysis",\r
- 400, 400);\r
-\r
+ 400, 400);\r
\r
Thread worker = new Thread(this);\r
worker.start();\r
*/\r
public void run()\r
{\r
- pca = new PCA(seqstrings.getSequenceStrings(' '));\r
- pca.run();\r
-\r
- // Now find the component coordinates\r
- int ii = 0;\r
-\r
- while ((ii < seqs.length) && (seqs[ii] != null))\r
- {\r
- ii++;\r
- }\r
-\r
- double[][] comps = new double[ii][ii];\r
-\r
- for (int i = 0; i < ii; i++)\r
- {\r
- if (pca.getEigenvalue(i) > 1e-4)\r
- {\r
- comps[i] = pca.component(i);\r
- }\r
- }\r
-\r
- //////////////////\r
- xCombobox.select(0);\r
- yCombobox.select(1);\r
- zCombobox.select(2);\r
-\r
- top = pca.getM().rows - 1;\r
-\r
- Vector points = new Vector();\r
- float[][] scores = pca.getComponents(top - 1, top - 2, top - 3, 100);\r
-\r
- for (int i = 0; i < pca.getM().rows; i++)\r
- {\r
- SequencePoint sp = new SequencePoint(seqs[i], scores[i]);\r
- points.addElement(sp);\r
- }\r
-\r
- rc.setPoints(points, pca.getM().rows);\r
- rc.repaint();\r
- seqs = null;\r
- this.repaint();\r
+ pca = new PCA(seqstrings.getSequenceStrings(' '));\r
+ pca.run();\r
+\r
+ // Now find the component coordinates\r
+ int ii = 0;\r
+\r
+ while ( (ii < seqs.length) && (seqs[ii] != null))\r
+ {\r
+ ii++;\r
+ }\r
+\r
+ double[][] comps = new double[ii][ii];\r
+\r
+ for (int i = 0; i < ii; i++)\r
+ {\r
+ if (pca.getEigenvalue(i) > 1e-4)\r
+ {\r
+ comps[i] = pca.component(i);\r
+ }\r
+ }\r
+\r
+ //////////////////\r
+ xCombobox.select(0);\r
+ yCombobox.select(1);\r
+ zCombobox.select(2);\r
+\r
+ top = pca.getM().rows - 1;\r
+\r
+ Vector points = new Vector();\r
+ float[][] scores = pca.getComponents(top - 1, top - 2, top - 3, 100);\r
+\r
+ for (int i = 0; i < pca.getM().rows; i++)\r
+ {\r
+ SequencePoint sp = new SequencePoint(seqs[i], scores[i]);\r
+ points.addElement(sp);\r
+ }\r
+\r
+ rc.setPoints(points, pca.getM().rows);\r
+ rc.repaint();\r
+ seqs = null;\r
+ this.repaint();\r
}\r
\r
void doDimensionChange()\r
\r
public void actionPerformed(ActionEvent evt)\r
{\r
- if(evt.getSource()==inputData)\r
+ if (evt.getSource() == inputData)\r
+ {\r
showOriginalData();\r
+ }\r
else\r
+ {\r
values_actionPerformed();\r
+ }\r
}\r
\r
public void itemStateChanged(ItemEvent evt)\r
{\r
- if(evt.getSource()==xCombobox)\r
+ if (evt.getSource() == xCombobox)\r
+ {\r
xCombobox_actionPerformed();\r
- else if(evt.getSource()==yCombobox)\r
+ }\r
+ else if (evt.getSource() == yCombobox)\r
+ {\r
yCombobox_actionPerformed();\r
- else if(evt.getSource()==zCombobox)\r
+ }\r
+ else if (evt.getSource() == zCombobox)\r
+ {\r
zCombobox_actionPerformed();\r
+ }\r
}\r
\r
-\r
protected void xCombobox_actionPerformed()\r
{\r
doDimensionChange();\r
frame.add(cap);\r
jalview.bin.JalviewLite.addFrame(frame, "PCA details", 500, 500);\r
\r
- cap.setText(pca.getDetails());\r
+ cap.setText(pca.getDetails());\r
}\r
\r
void showOriginalData()\r
Object[] alAndColsel = seqstrings.getAlignmentAndColumnSelection(av.\r
getGapCharacter());\r
\r
+ if (alAndColsel != null && alAndColsel[0] != null)\r
+ {\r
+ Alignment al = new Alignment( (SequenceI[]) alAndColsel[0]);\r
+ AlignFrame af = new AlignFrame(al,\r
+ av.applet,\r
+ "Original Data for PCA",\r
+ false);\r
\r
- if (alAndColsel != null && alAndColsel[0]!=null)\r
- {\r
- Alignment al = new Alignment( (SequenceI[]) alAndColsel[0]);\r
- AlignFrame af = new AlignFrame(al,\r
- av.applet,\r
- "Original Data for PCA",\r
- false);\r
-\r
- af.viewport.setHiddenColumns( (ColumnSelection) alAndColsel[1] );\r
- }\r
+ af.viewport.setHiddenColumns( (ColumnSelection) alAndColsel[1]);\r
+ }\r
}\r
\r
public void labels_itemStateChanged(ItemEvent itemEvent)\r
{\r
- rc.showLabels( labels.getState() );\r
+ rc.showLabels(labels.getState());\r
}\r
+\r
Panel jPanel2 = new Panel();\r
Label jLabel1 = new Label();\r
Label jLabel2 = new Label();\r