+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * jalview.jbgui.GPCAPanel#outputPoints_actionPerformed(java.awt.event.ActionEvent
+ * )
+ */
+ protected void outputPoints_actionPerformed(ActionEvent e)
+ {
+ CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ try
+ {
+ cap.setText(getPointsasCsv(false));
+ Desktop.addInternalFrame(cap, "Points for " + getTitle(), 500, 500);
+ } catch (OutOfMemoryError oom)
+ {
+ new OOMWarning("exporting PCA points", oom);
+ cap.dispose();
+ }
+ }
+
+ private String getPointsasCsv(boolean transformed)
+ {
+ StringBuffer csv = new StringBuffer();
+ csv.append("\"Sequence\"");
+ if (transformed)
+ {
+ csv.append(",");
+ csv.append(xCombobox.getSelectedIndex());
+ csv.append(",");
+ csv.append(yCombobox.getSelectedIndex());
+ csv.append(",");
+ csv.append(zCombobox.getSelectedIndex());
+ }
+ else
+ {
+ for (int d = 1, dmax = pca.component(1).length; d <= dmax; d++)
+ {
+ csv.append("," + d);
+ }
+ }
+ csv.append("\n");
+ for (int s = 0; s < seqs.length; s++)
+ {
+ csv.append("\"" + seqs[s].getName() + "\"");
+ double fl[];
+ if (!transformed)
+ {
+ // output pca in correct order
+ fl = pca.component(s);
+ for (int d = fl.length - 1; d >= 0; d--)
+ {
+ csv.append(",");
+ csv.append(fl[d]);
+ }
+ }
+ else
+ {
+ // output current x,y,z coords for points
+ fl = rc.getPointPosition(s);
+ for (int d = 0; d < fl.length; d++)
+ {
+ csv.append(",");
+ csv.append(fl[d]);
+ }
+ }
+ csv.append("\n");
+ }
+ return csv.toString();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * jalview.jbgui.GPCAPanel#outputProjPoints_actionPerformed(java.awt.event
+ * .ActionEvent)
+ */
+ protected void outputProjPoints_actionPerformed(ActionEvent e)
+ {
+ CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ try
+ {
+ cap.setText(getPointsasCsv(true));
+ Desktop.addInternalFrame(cap, "Transformed points for " + getTitle(),
+ 500, 500);
+ } catch (OutOfMemoryError oom)
+ {
+ new OOMWarning("exporting transformed PCA points", oom);
+ cap.dispose();
+ }
+ }
+