import jalview.schemabinding.version2.DoubleMatrix;
import jalview.schemabinding.version2.EigenMatrix;
import jalview.schemabinding.version2.EigenMatrixD;
-import jalview.schemabinding.version2.EigenMatrixE;
import jalview.schemabinding.version2.Features;
import jalview.schemabinding.version2.Group;
import jalview.schemabinding.version2.HiddenColumns;
import jalview.schemabinding.version2.StructureState;
import jalview.schemabinding.version2.ThresholdLine;
import jalview.schemabinding.version2.Tree;
+import jalview.schemabinding.version2.TridiagonalD;
+import jalview.schemabinding.version2.TridiagonalE;
+import jalview.schemabinding.version2.TridiagonalMatrix;
import jalview.schemabinding.version2.UserColours;
import jalview.schemabinding.version2.Viewport;
import jalview.schemabinding.version2.types.ColourThreshTypeType;
PcaData data = new PcaData();
viewer.setPcaData(data);
PCA pca = pcaModel.getPcaData();
- data.setDetails(pca.getDetails());
- MatrixI m = pca.getEigenmatrix();
- EigenMatrix eigenMatrix = new EigenMatrix();
- eigenMatrix.setRows(m.height());
- eigenMatrix.setColumns(m.width());
- data.setEigenMatrix(eigenMatrix);
- for (int i = 0; i < m.height(); i++)
- {
- Row row = new Row();
- for (int j = 0; j < m.width(); j++)
- {
- row.addD(m.getValue(i, j));
- }
- eigenMatrix.addRow(row);
- }
- EigenMatrixD eigenMatrixD = new EigenMatrixD();
- eigenMatrixD.setD(m.getD());
- data.setEigenMatrixD(eigenMatrixD);
- EigenMatrixE eigenMatrixE = new EigenMatrixE();
- eigenMatrixE.setD(m.getE());
- data.setEigenMatrixE(eigenMatrixE);
PairwiseMatrix pm = new PairwiseMatrix();
- m = pca.getPairwiseScores();
- pm.setRows(m.height());
- pm.setColumns(m.width());
+ MatrixI m = pca.getPairwiseScores();
+ saveDoubleMatrix(m, pm);
data.setPairwiseMatrix(pm);
- for (int i = 0; i < m.height(); i++)
- {
- Row row = new Row();
- for (int j = 0; j < m.width(); j++)
- {
- row.addD(m.getValue(i, j));
- }
- pm.addRow(row);
- }
+
+ TridiagonalMatrix tm = new TridiagonalMatrix();
+ m = pca.getTridiagonal();
+ saveDoubleMatrix(m, tm);
+ data.setTridiagonalMatrix(tm);
+ TridiagonalD tridiagonalD = new TridiagonalD();
+ tridiagonalD.setD(m.getD());
+ data.setTridiagonalD(tridiagonalD);
+ TridiagonalE tridiagonalE = new TridiagonalE();
+ tridiagonalE.setD(m.getE());
+ data.setTridiagonalE(tridiagonalE);
+
+ m = pca.getEigenmatrix();
+ EigenMatrix eigenMatrix = new EigenMatrix();
+ data.setEigenMatrix(eigenMatrix);
+ saveDoubleMatrix(m, eigenMatrix);
+ EigenMatrixD eigenmatrixD = new EigenMatrixD();
+ eigenmatrixD.setD(m.getD());
+ data.setEigenMatrixD(eigenmatrixD);
jms.addPcaViewer(viewer);
} catch (Throwable t)
}
/**
+ * Stores values from a matrix into an XML element
+ *
+ * @param m
+ * @param xmlMatrix
+ * @see #loadDoubleMatrix(DoubleMatrix)
+ */
+ protected void saveDoubleMatrix(MatrixI m, DoubleMatrix xmlMatrix)
+ {
+ xmlMatrix.setRows(m.height());
+ xmlMatrix.setColumns(m.width());
+ for (int i = 0; i < m.height(); i++)
+ {
+ Row row = new Row();
+ for (int j = 0; j < m.width(); j++)
+ {
+ row.addD(m.getValue(i, j));
+ }
+ xmlMatrix.addRow(row);
+ }
+ }
+
+ /**
+ * Loads XML matrix data into a new Matrix object
+ *
+ * @param mData
+ * @return
+ * @see Jalview2XML#saveDoubleMatrix(MatrixI, DoubleMatrix)
+ */
+ protected MatrixI loadDoubleMatrix(DoubleMatrix mData)
+ {
+ int rows = mData.getRows();
+ double[][] vals = new double[rows][];
+
+ for (int i = 0; i < rows; i++)
+ {
+ vals[i] = mData.getRow(i).getD();
+ }
+
+ MatrixI m = new Matrix(vals);
+ return m;
+ }
+
+ /**
* Save any Varna viewers linked to this sequence. Writes an rnaViewer element
* for each viewer, with
* <ul>
.getScoreModel(modelName, ap);
PCA pca = new PCA(null, scoreModel, params);
PcaData pcaData = viewer.getPcaData();
- pca.setDetails(pcaData.getDetails());
- MatrixI pairwise = loadMatrix(pcaData.getPairwiseMatrix());
+
+ MatrixI pairwise = loadDoubleMatrix(pcaData.getPairwiseMatrix());
pca.setPairwiseScores(pairwise);
- MatrixI result = loadMatrix(pcaData.getEigenMatrix());
+
+ MatrixI triDiag = loadDoubleMatrix(pcaData.getTridiagonalMatrix());
+ triDiag.setD(pcaData.getTridiagonalD().getD());
+ triDiag.setE(pcaData.getTridiagonalE().getD());
+ pca.setTridiagonal(triDiag);
+
+ MatrixI result = loadDoubleMatrix(pcaData.getEigenMatrix());
result.setD(pcaData.getEigenMatrixD().getD());
- result.setE(pcaData.getEigenMatrixE().getD());
pca.setEigenmatrix(result);
+
panel.pcaModel.setPCA(pca);
/*
}
/**
- * Loads XML matrix data into a new Matrix object
- *
- * @param mData
- * @return
- */
- protected MatrixI loadMatrix(DoubleMatrix mData)
- {
- int rows = mData.getRows();
- double[][] vals = new double[rows][];
-
- for (int i = 0; i < rows; i++)
- {
- vals[i] = mData.getRow(i).getD();
- }
-
- MatrixI m = new Matrix(vals);
- return m;
- }
-
- /**
* Populates an XML model of the feature colour scheme for one feature type
*
* @param featureType