1 Clazz.declarePackage ("jalview.analysis");
\r
2 Clazz.load (null, "jalview.analysis.SecStrConsensus", ["java.util.ArrayList", "$.Hashtable"], function () {
\r
3 c$ = Clazz.declareType (jalview.analysis, "SecStrConsensus");
\r
4 c$.extractConsensus = Clazz.defineMethod (c$, "extractConsensus",
\r
7 for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
\r
8 for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
\r
9 maxlength = Math.max (1 + Math.max (bp.bp5, bp.bp3), maxlength);
\r
12 var seq = new java.util.ArrayList ();
\r
13 for (var i = 0; i < maxlength; i++) {
\r
14 seq.add ( new java.util.Hashtable ());
\r
16 for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
\r
17 for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
\r
20 var h = seq.get (i);
\r
21 if (!h.containsKey (new Integer (j))) {
\r
22 h.put (new Integer (j), new Double (0.0));
\r
23 }h.put (new Integer (j), new Double ((h.get (new Integer (j))).doubleValue () + 1.));
\r
26 var mat = jalview.analysis.SecStrConsensus.fillMatrix (seq);
\r
27 var res = jalview.analysis.SecStrConsensus.backtrack (mat, seq);
\r
28 var finalres = Clazz.newIntArray (seq.size (), 0);
\r
29 for (var i = 0; i < seq.size (); i++) {
\r
32 for (var bp, $bp = res.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
\r
33 finalres[bp.bp5] = bp.bp3;
\r
34 finalres[bp.bp3] = bp.bp5;
\r
37 }, "java.util.ArrayList");
\r
38 c$.canBasePair = Clazz.defineMethod (c$, "canBasePair",
\r
39 ($fz = function (seq, i, k) {
\r
40 return seq.get (i).containsKey (new Integer (k));
\r
41 }, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");
\r
42 c$.basePairScore = Clazz.defineMethod (c$, "basePairScore",
\r
43 ($fz = function (seq, i, k) {
\r
44 return seq.get (i).get (new Integer (k));
\r
45 }, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");
\r
46 c$.fillMatrix = Clazz.defineMethod (c$, "fillMatrix",
\r
47 ($fz = function (seq) {
\r
48 var n = seq.size ();
\r
49 var tab = Clazz.newDoubleArray (n, n, 0);
\r
50 for (var m = 1; m <= n; m++) {
\r
51 for (var i = 0; i < n - m + 1; i++) {
\r
55 tab[i][j] = Math.max (tab[i][j], tab[i + 1][j]);
\r
56 for (var k = i + 1; k <= j; k++) {
\r
57 if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
\r
60 fact1 = tab[i + 1][k - 1];
\r
63 fact2 = tab[k + 1][j];
\r
64 }tab[i][j] = Math.max (tab[i][j], jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2);
\r
69 }, $fz.isPrivate = true, $fz), "java.util.ArrayList");
\r
70 c$.backtrack = Clazz.defineMethod (c$, "backtrack",
\r
71 ($fz = function (tab, seq) {
\r
72 return jalview.analysis.SecStrConsensus.backtrack (tab, seq, 0, seq.size () - 1);
\r
73 }, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList");
\r
74 c$.backtrack = Clazz.defineMethod (c$, "backtrack",
\r
75 ($fz = function (tab, seq, i, j) {
\r
76 var result = new java.util.ArrayList ();
\r
78 var indices = new java.util.ArrayList ();
\r
79 indices.add (new Integer (-1));
\r
80 for (var k = i + 1; k <= j; k++) {
\r
81 indices.add (new Integer (k));
\r
83 for (var k, $k = indices.iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
\r
85 if (tab[i][j] == tab[i + 1][j]) {
\r
86 result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, j);
\r
88 if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
\r
91 fact1 = tab[i + 1][k - 1];
\r
94 fact2 = tab[k + 1][j];
\r
95 }if (tab[i][j] == jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2) {
\r
96 result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, k - 1);
\r
97 result.addAll (jalview.analysis.SecStrConsensus.backtrack (tab, seq, k + 1, j));
\r
98 result.add ( new jalview.analysis.SecStrConsensus.SimpleBP (i, k));
\r
100 } else if (i == j) {
\r
103 }, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList,~N,~N");
\r
105 c$ = Clazz.decorateAsClass (function () {
\r
108 Clazz.instantialize (this, arguments);
\r
109 }, jalview.analysis.SecStrConsensus, "SimpleBP");
\r
110 Clazz.makeConstructor (c$,
\r
113 Clazz.makeConstructor (c$,
\r
118 Clazz.defineMethod (c$, "setBP5",
\r
122 Clazz.defineMethod (c$, "setBP3",
\r
126 Clazz.defineMethod (c$, "getBP5",
\r
130 Clazz.defineMethod (c$, "getBP3",
\r
134 Clazz.overrideMethod (c$, "toString",
\r
136 return "(" + this.bp5 + "," + this.bp3 + ")";
\r