+ /* (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();
+ }
+ }