import jalview.schemabinding.version2.Axis;
import jalview.schemabinding.version2.CalcIdParam;
import jalview.schemabinding.version2.CompoundMatcher;
+import jalview.schemabinding.version2.D;
import jalview.schemabinding.version2.DBRef;
import jalview.schemabinding.version2.DoubleMatrix;
+import jalview.schemabinding.version2.E;
import jalview.schemabinding.version2.EigenMatrix;
-import jalview.schemabinding.version2.EigenMatrixD;
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;
}
/*
- * raw PCA data
+ * raw PCA data (note we are not restoring PCA inputs here -
+ * alignment view, score model, similarity parameters)
*/
PcaData data = new PcaData();
viewer.setPcaData(data);
PCA pca = pcaModel.getPcaData();
PairwiseMatrix pm = new PairwiseMatrix();
- MatrixI m = pca.getPairwiseScores();
- saveDoubleMatrix(m, pm);
+ saveDoubleMatrix(pca.getPairwiseScores(), pm);
data.setPairwiseMatrix(pm);
TridiagonalMatrix tm = new TridiagonalMatrix();
- m = pca.getTridiagonal();
- saveDoubleMatrix(m, tm);
+ saveDoubleMatrix(pca.getTridiagonal(), 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);
+ saveDoubleMatrix(pca.getEigenmatrix(), eigenMatrix);
jms.addPcaViewer(viewer);
} catch (Throwable t)
}
/**
- * Stores values from a matrix into an XML element
+ * Stores values from a matrix into an XML element, including (if present) the
+ * D or E vectors
*
* @param m
* @param xmlMatrix
Row row = new Row();
for (int j = 0; j < m.width(); j++)
{
- row.addD(m.getValue(i, j));
+ row.addV(m.getValue(i, j));
}
xmlMatrix.addRow(row);
}
+ if (m.getD() != null)
+ {
+ D dVector = new D();
+ dVector.setV(m.getD());
+ xmlMatrix.setD(dVector);
+ }
+ if (m.getE() != null)
+ {
+ E eVector = new E();
+ eVector.setV(m.getE());
+ xmlMatrix.setE(eVector);
+ }
}
/**
- * Loads XML matrix data into a new Matrix object
+ * Loads XML matrix data into a new Matrix object, including the D and/or E
+ * vectors (if present)
*
* @param mData
* @return
for (int i = 0; i < rows; i++)
{
- vals[i] = mData.getRow(i).getD();
+ vals[i] = mData.getRow(i).getV();
}
MatrixI m = new Matrix(vals);
+
+ if (mData.getD() != null) {
+ m.setD(mData.getD().getV());
+ }
+ if (mData.getE() != null)
+ {
+ m.setE(mData.getE().getV());
+ }
+
return m;
}
pca.setPairwiseScores(pairwise);
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());
pca.setEigenmatrix(result);
panel.pcaModel.setPCA(pca);