Merge branch 'JAL-1013_pca_rna_dna' into develop
[jalview.git] / src / jalview / gui / PCAPanel.java
index 4948c22..9dc73b7 100755 (executable)
@@ -1,6 +1,6 @@
 /*
  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
  * 
  * This file is part of Jalview.
  * 
@@ -54,7 +54,7 @@ public class PCAPanel extends GPCAPanel implements Runnable
   /**
    * use the identity matrix for calculating similarity between sequences. 
    */
-  private boolean useidentity=false;
+  private boolean nucleotide=false;
 
   /**
    * Creates a new PCAPanel object.
@@ -72,14 +72,14 @@ public class PCAPanel extends GPCAPanel implements Runnable
     boolean sameLength = true;
 
     seqstrings = av.getAlignmentView(av.getSelectionGroup() != null);
-    useidentity=av.getAlignment().isNucleotide();
+    nucleotide=av.getAlignment().isNucleotide();
     if (av.getSelectionGroup() == null)
     {
-      seqs = av.alignment.getSequencesArray();
+      seqs = av.getAlignment().getSequencesArray();
     }
     else
     {
-      seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment);
+      seqs = av.getSelectionGroup().getSequencesInOrder(av.getAlignment());
     }
     SeqCigar sq[] = seqstrings.getSequences();
     int length = sq[0].getWidth();
@@ -106,8 +106,6 @@ public class PCAPanel extends GPCAPanel implements Runnable
       return;
     }
 
-    Desktop.addInternalFrame(this, "Principal component analysis", 400, 400);
-
     PaintRefresher.Register(this, av.getSequenceSetId());
 
     rc = new RotatableCanvas(ap);
@@ -135,7 +133,8 @@ public class PCAPanel extends GPCAPanel implements Runnable
   {
     try
     {
-      pca = new PCA(seqstrings.getSequenceStrings(' '), useidentity);
+      calcSettings.setEnabled(false);
+      pca = new PCA(seqstrings.getSequenceStrings(' '), nucleotide);
       pca.run();
 
       // Now find the component coordinates
@@ -173,18 +172,37 @@ public class PCAPanel extends GPCAPanel implements Runnable
       }
 
       rc.setPoints(points, pca.getM().rows);
-      rc.repaint();
-
-      addKeyListener(rc);
+      // rc.invalidate();
+      nuclSetting.setSelected(nucleotide);
+      protSetting.setSelected(!nucleotide);
 
     } catch (OutOfMemoryError er)
     {
       new OOMWarning("calculating PCA", er);
-
+      return;
+    }
+    calcSettings.setEnabled(true);
+    repaint();
+    if (getParent()==null)
+    {
+      addKeyListener(rc);
+      Desktop.addInternalFrame(this, "Principal component analysis", 400, 400);
     }
-
   }
-
+  @Override
+  protected void nuclSetting_actionPerfomed(ActionEvent arg0)
+  {
+    nucleotide=true;
+    Thread worker = new Thread(this);
+    worker.start();
+  }
+  @Override
+  protected void protSetting_actionPerfomed(ActionEvent arg0)
+  {
+    nucleotide=false;
+    Thread worker = new Thread(this);
+    worker.start();
+  }
   /**
    * DOCUMENT ME!
    */