1 Clazz.declarePackage ("jalview.viewmodel");
2 Clazz.load (null, "jalview.viewmodel.PCAModel", ["jalview.analysis.PCA", "jalview.datamodel.SequencePoint", "java.lang.StringBuffer", "java.util.Vector"], function () {
3 c$ = Clazz.decorateAsClass (function () {
6 this.seqstrings = null;
8 this.score_matrix = null;
9 this.nucleotide = false;
11 this.jvCalcMode = true;
12 Clazz.instantialize (this, arguments);
13 }, jalview.viewmodel, "PCAModel");
14 Clazz.makeConstructor (c$,
15 function (seqstrings2, seqs2, nucleotide2) {
16 this.seqstrings = seqstrings2;
18 this.nucleotide = nucleotide2;
19 this.score_matrix = nucleotide2 ? "PID" : "BLOSUM62";
20 }, "jalview.datamodel.AlignmentView,~A,~B");
21 Clazz.defineMethod (c$, "isJvCalcMode",
23 return this.jvCalcMode;
25 Clazz.defineMethod (c$, "run",
27 this.pca = new jalview.analysis.PCA (this.seqstrings.getSequenceStrings (' '), this.nucleotide, this.score_matrix);
28 this.pca.setJvCalcMode (this.jvCalcMode);
31 while ((ii < this.seqs.length) && (this.seqs[ii] != null)) {
34 var comps = Clazz.newDoubleArray (ii, ii, 0);
35 for (var i = 0; i < ii; i++) {
36 if (this.pca.getEigenvalue (i) > 1e-4) {
37 comps[i] = this.pca.component (i);
39 this.top = this.pca.getM ().rows - 1;
40 this.points = new java.util.Vector ();
41 var scores = this.pca.getComponents (this.top - 1, this.top - 2, this.top - 3, 100);
42 for (var i = 0; i < this.pca.getM ().rows; i++) {
43 var sp = new jalview.datamodel.SequencePoint (this.seqs[i], scores[i]);
44 this.points.addElement (sp);
47 Clazz.defineMethod (c$, "updateRc",
49 rc.setPoints (this.points, this.pca.getM ().rows);
50 }, "jalview.api.RotatableCanvasI");
51 Clazz.defineMethod (c$, "isNucleotide",
53 return this.nucleotide;
55 Clazz.defineMethod (c$, "setNucleotide",
56 function (nucleotide) {
57 this.nucleotide = nucleotide;
59 Clazz.defineMethod (c$, "getTop",
63 Clazz.defineMethod (c$, "updateRcView",
64 function (dim1, dim2, dim3) {
65 var scores = this.pca.getComponents (dim1 - 1, dim2 - 1, dim3 - 1, 100);
66 for (var i = 0; i < this.pca.getM ().rows; i++) {
67 (this.points.elementAt (i)).coord = scores[i];
70 Clazz.defineMethod (c$, "getDetails",
72 return this.pca.getDetails ();
74 Clazz.defineMethod (c$, "getSeqtrings",
76 return this.seqstrings;
78 Clazz.defineMethod (c$, "getPointsasCsv",
79 function (transformed, xdim, ydim, zdim) {
80 var csv = new StringBuffer ();
81 csv.append ("\"Sequence\"");
84 csv.append ("" + xdim);
86 csv.append ("" + ydim);
88 csv.append ("" + zdim);
90 for (var d = 1, dmax = this.pca.component (1).length; d <= dmax; d++) {
94 for (var s = 0; s < this.seqs.length; s++) {
95 csv.append ("\"" + this.seqs[s].getName () + "\"");
98 fl = this.pca.component (s);
99 for (var d = fl.length - 1; d >= 0; d--) {
104 fl = this.getPointPosition (s);
105 for (var d = 0; d < fl.length; d++) {
111 return csv.toString ();
113 Clazz.defineMethod (c$, "getPointPosition",
115 var pts = Clazz.newDoubleArray (3, 0);
116 var p = this.points.elementAt (s).coord;
122 Clazz.defineMethod (c$, "setJvCalcMode",
124 this.jvCalcMode = state;
126 Clazz.defineMethod (c$, "getScore_matrix",
128 return this.score_matrix;
130 Clazz.defineMethod (c$, "setScore_matrix",
131 function (score_matrix) {
132 this.score_matrix = score_matrix;