JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / jalview / analysis / Rna.js
1 Clazz.declarePackage ("jalview.analysis");
2 Clazz.load (["java.util.Arrays", "$.HashSet", "$.Hashtable"], "jalview.analysis.Rna", ["jalview.analysis.SecStrConsensus", "$.WUSSParseException", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.lang.StringBuffer", "java.util.ArrayList", "$.Stack", "$.Vector"], function () {
3 c$ = Clazz.declareType (jalview.analysis, "Rna");
4 c$.isOpeningParenthesis = Clazz.defineMethod (c$, "isOpeningParenthesis", 
5 ($fz = function (c) {
6 return jalview.analysis.Rna.openingParsSet.contains (new Character (c).charCodeAt (0));
7 }, $fz.isPrivate = true, $fz), "~S");
8 c$.isClosingParenthesis = Clazz.defineMethod (c$, "isClosingParenthesis", 
9 ($fz = function (c) {
10 return jalview.analysis.Rna.closingParsSet.contains (new Character (c).charCodeAt (0));
11 }, $fz.isPrivate = true, $fz), "~S");
12 c$.matchingOpeningParenthesis = Clazz.defineMethod (c$, "matchingOpeningParenthesis", 
13 ($fz = function (closingParenthesis) {
14 if (!jalview.analysis.Rna.isClosingParenthesis (closingParenthesis)) {
15 throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis",  Clazz.newArray (-1, [ new StringBuffer (closingParenthesis.charCodeAt (0)).toString ()])), -1);
16 }return String.fromCharCode (jalview.analysis.Rna.closingToOpening.get (new Character (closingParenthesis).charCodeAt (0)));
17 }, $fz.isPrivate = true, $fz), "~S");
18 c$.GetSimpleBPs = Clazz.defineMethod (c$, "GetSimpleBPs", 
19 function (line) {
20 var stacks =  new java.util.Hashtable ();
21 var pairs =  new java.util.Vector ();
22 var i = 0;
23 while (i < line.length) {
24 var base = line.charAt (i);
25 if (jalview.analysis.Rna.isOpeningParenthesis (base)) {
26 if (!stacks.containsKey (new Character (base).charCodeAt (0))) {
27 stacks.put (new Character (base).charCodeAt (0),  new java.util.Stack ());
28 }stacks.get (new Character (base).charCodeAt (0)).push (new Integer (i));
29 } else if (jalview.analysis.Rna.isClosingParenthesis (base)) {
30 var opening = jalview.analysis.Rna.matchingOpeningParenthesis (base);
31 if (!stacks.containsKey (new Character (opening).charCodeAt (0))) {
32 throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_unseen_closing_char",  Clazz.newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);
33 }var stack = stacks.get (new Character (opening).charCodeAt (0));
34 if (stack.isEmpty ()) {
35 throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_closing_char",  Clazz.newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);
36 }var temp = (stack.pop ()).intValue ();
37 pairs.add ( new jalview.analysis.SecStrConsensus.SimpleBP (temp, i));
38 }i++;
39 }
40 for (var opening, $opening = stacks.keySet ().iterator (); $opening.hasNext () && ((opening = $opening.next ()) || true);) {
41 var stack = stacks.get (new Character (opening).charCodeAt (0));
42 if (!stack.empty ()) {
43 throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_opening_char",  Clazz.newArray (-1, [ new StringBuffer (opening.charCodeAt (0)).toString (), Integer.$valueOf ((stack.pop ()).intValue ()).toString ()])), i);
44 }}
45 return pairs;
46 }, "CharSequence");
47 c$.GetBasePairs = Clazz.defineMethod (c$, "GetBasePairs", 
48 function (line) {
49 var bps = jalview.analysis.Rna.GetSimpleBPs (line);
50 var outPairs =  new Array (bps.size ());
51 for (var p = 0; p < bps.size (); p++) {
52 var bp = bps.elementAt (p);
53 outPairs[p] =  new jalview.datamodel.SequenceFeature ("RNA helix", "", "", bp.getBP5 (), bp.getBP3 (), "");
54 }
55 return outPairs;
56 }, "CharSequence");
57 c$.GetModeleBP = Clazz.defineMethod (c$, "GetModeleBP", 
58 function (line) {
59 var bps = jalview.analysis.Rna.GetSimpleBPs (line);
60 return  new java.util.ArrayList (bps);
61 }, "CharSequence");
62 c$.HelixMap = Clazz.defineMethod (c$, "HelixMap", 
63 function (pairs) {
64 var helix = 0;
65 var lastopen = 0;
66 var lastclose = 9999999;
67 var i = pairs.length;
68 var open;
69 var close;
70 var j;
71 var helices =  new java.util.Hashtable ();
72 for (i = 0; i < pairs.length; i++) {
73 open = pairs[i].getBegin ();
74 close = pairs[i].getEnd ();
75 if (open > lastclose) {
76 helix++;
77 }j = pairs.length - 1;
78 while (j >= 0) {
79 var popen = pairs[j].getBegin ();
80 if ((popen < lastopen) && (popen > open)) {
81 if (helices.containsValue (new Integer (popen)) && (((helices.get (new Integer (popen)))).intValue () === helix)) {
82 continue;
83 } else {
84 helix++;
85 break;
86 }}j -= 1;
87 }
88 helices.put (new Integer (open), new Integer (helix));
89 helices.put (new Integer (close), new Integer (helix));
90 pairs[i].setFeatureGroup (Integer.toString (helix));
91 lastopen = open;
92 lastclose = close;
93 }
94 }, "~A");
95 c$.pairHash = c$.prototype.pairHash =  new java.util.Hashtable ();
96 Clazz.defineStatics (c$,
97 "openingPars",  Clazz.newArray (-1, [new Character ('('), new Character ('['), new Character ('{'), new Character ('<'), new Character ('A'), new Character ('B'), new Character ('C'), new Character ('D'), new Character ('E'), new Character ('F'), new Character ('G'), new Character ('H'), new Character ('I'), new Character ('J'), new Character ('K'), new Character ('L'), new Character ('M'), new Character ('N'), new Character ('O'), new Character ('P'), new Character ('Q'), new Character ('R'), new Character ('S'), new Character ('T'), new Character ('U'), new Character ('V'), new Character ('W'), new Character ('X'), new Character ('Y'), new Character ('Z')]),
98 "closingPars",  Clazz.newArray (-1, [new Character (')'), new Character (']'), new Character ('}'), new Character ('>'), new Character ('a'), new Character ('b'), new Character ('c'), new Character ('d'), new Character ('e'), new Character ('f'), new Character ('g'), new Character ('h'), new Character ('i'), new Character ('j'), new Character ('k'), new Character ('l'), new Character ('m'), new Character ('n'), new Character ('o'), new Character ('p'), new Character ('q'), new Character ('r'), new Character ('s'), new Character ('t'), new Character ('u'), new Character ('v'), new Character ('w'), new Character ('x'), new Character ('y'), new Character ('z')]));
99 c$.openingParsSet = c$.prototype.openingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.openingPars));
100 c$.closingParsSet = c$.prototype.closingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.closingPars));
101 c$.closingToOpening = c$.prototype.closingToOpening =  new java.util.Hashtable ();
102 {
103 for (var i = 0; i < jalview.analysis.Rna.openingPars.length; i++) {
104 jalview.analysis.Rna.closingToOpening.put (jalview.analysis.Rna.closingPars[i], jalview.analysis.Rna.openingPars[i]);
105 }
106 }});