X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=c725db88a15aea6da7e779ef14591bf6b7961171;hb=7335cf4c36225b8f425e6b5c452e0529d5b36de5;hp=2b3e5ce5aa5c8e711fa78307e228ae9a3b00a597;hpb=36192ebcb63fc6f2a832b06121fb93976a2e6ca2;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 2b3e5ce..c725db8 100644 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -70,7 +70,6 @@ import jalview.schemabinding.version2.DBRef; 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; @@ -104,6 +103,9 @@ import jalview.schemabinding.version2.Setting; 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; @@ -1622,42 +1624,30 @@ public class Jalview2XML 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) @@ -1667,6 +1657,49 @@ public class Jalview2XML } /** + * 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 *