JAL-1807 test
[jalviewjs.git] / bin / jalview / analysis / SecStrConsensus.js
1 Clazz.declarePackage ("jalview.analysis");
2 Clazz.load (null, "jalview.analysis.SecStrConsensus", ["java.util.ArrayList", "$.Hashtable"], function () {
3 c$ = Clazz.declareType (jalview.analysis, "SecStrConsensus");
4 c$.extractConsensus = Clazz.defineMethod (c$, "extractConsensus", 
5 function (bps) {
6 var maxlength = 0;
7 for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
8 for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
9 maxlength = Math.max (1 + Math.max (bp.bp5, bp.bp3), maxlength);
10 }
11 }
12 var seq =  new java.util.ArrayList ();
13 for (var i = 0; i < maxlength; i++) {
14 seq.add ( new java.util.Hashtable ());
15 }
16 for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
17 for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
18 var i = bp.bp5;
19 var j = bp.bp3;
20 var h = seq.get (i);
21 if (!h.containsKey (new Integer (j))) {
22 h.put (new Integer (j), new Double (0.0));
23 }h.put (new Integer (j), new Double ((h.get (new Integer (j))).doubleValue () + 1.));
24 }
25 }
26 var mat = jalview.analysis.SecStrConsensus.fillMatrix (seq);
27 var res = jalview.analysis.SecStrConsensus.backtrack (mat, seq);
28 var finalres =  Clazz.newIntArray (seq.size (), 0);
29 for (var i = 0; i < seq.size (); i++) {
30 finalres[i] = -1;
31 }
32 for (var bp, $bp = res.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
33 finalres[bp.bp5] = bp.bp3;
34 finalres[bp.bp3] = bp.bp5;
35 }
36 return finalres;
37 }, "java.util.ArrayList");
38 c$.canBasePair = Clazz.defineMethod (c$, "canBasePair", 
39 ($fz = function (seq, i, k) {
40 return seq.get (i).containsKey (new Integer (k));
41 }, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");
42 c$.basePairScore = Clazz.defineMethod (c$, "basePairScore", 
43 ($fz = function (seq, i, k) {
44 return seq.get (i).get (new Integer (k));
45 }, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");
46 c$.fillMatrix = Clazz.defineMethod (c$, "fillMatrix", 
47 ($fz = function (seq) {
48 var n = seq.size ();
49 var tab =  Clazz.newDoubleArray (n, n, 0);
50 for (var m = 1; m <= n; m++) {
51 for (var i = 0; i < n - m + 1; i++) {
52 var j = i + m - 1;
53 tab[i][j] = 0;
54 if (i < j) {
55 tab[i][j] = Math.max (tab[i][j], tab[i + 1][j]);
56 for (var k = i + 1; k <= j; k++) {
57 if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
58 var fact1 = 0;
59 if (k > i + 1) {
60 fact1 = tab[i + 1][k - 1];
61 }var fact2 = 0;
62 if (k < j) {
63 fact2 = tab[k + 1][j];
64 }tab[i][j] = Math.max (tab[i][j], jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2);
65 }}
66 }}
67 }
68 return tab;
69 }, $fz.isPrivate = true, $fz), "java.util.ArrayList");
70 c$.backtrack = Clazz.defineMethod (c$, "backtrack", 
71 ($fz = function (tab, seq) {
72 return jalview.analysis.SecStrConsensus.backtrack (tab, seq, 0, seq.size () - 1);
73 }, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList");
74 c$.backtrack = Clazz.defineMethod (c$, "backtrack", 
75 ($fz = function (tab, seq, i, j) {
76 var result =  new java.util.ArrayList ();
77 if (i < j) {
78 var indices =  new java.util.ArrayList ();
79 indices.add (new Integer (-1));
80 for (var k = i + 1; k <= j; k++) {
81 indices.add (new Integer (k));
82 }
83 for (var k, $k = indices.iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
84 if (k == -1) {
85 if (tab[i][j] == tab[i + 1][j]) {
86 result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, j);
87 }} else {
88 if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
89 var fact1 = 0;
90 if (k > i + 1) {
91 fact1 = tab[i + 1][k - 1];
92 }var fact2 = 0;
93 if (k < j) {
94 fact2 = tab[k + 1][j];
95 }if (tab[i][j] == jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2) {
96 result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, k - 1);
97 result.addAll (jalview.analysis.SecStrConsensus.backtrack (tab, seq, k + 1, j));
98 result.add ( new jalview.analysis.SecStrConsensus.SimpleBP (i, k));
99 }}}}
100 } else if (i == j) {
101 } else {
102 }return result;
103 }, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList,~N,~N");
104 Clazz.pu$h ();
105 c$ = Clazz.decorateAsClass (function () {
106 this.bp5 = 0;
107 this.bp3 = 0;
108 Clazz.instantialize (this, arguments);
109 }, jalview.analysis.SecStrConsensus, "SimpleBP");
110 Clazz.makeConstructor (c$, 
111 function () {
112 });
113 Clazz.makeConstructor (c$, 
114 function (a, b) {
115 this.bp5 = a;
116 this.bp3 = b;
117 }, "~N,~N");
118 Clazz.defineMethod (c$, "setBP5", 
119 function (a) {
120 this.bp5 = a;
121 }, "~N");
122 Clazz.defineMethod (c$, "setBP3", 
123 function (a) {
124 this.bp3 = a;
125 }, "~N");
126 Clazz.defineMethod (c$, "getBP5", 
127 function () {
128 return this.bp5;
129 });
130 Clazz.defineMethod (c$, "getBP3", 
131 function () {
132 return this.bp3;
133 });
134 Clazz.overrideMethod (c$, "toString", 
135 function () {
136 return "(" + this.bp5 + "," + this.bp3 + ")";
137 });
138 c$ = Clazz.p0p ();
139 });