1 Clazz.declarePackage ("jalview.analysis");
\r
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 () {
\r
3 c$ = Clazz.declareType (jalview.analysis, "Rna");
\r
4 c$.isOpeningParenthesis = Clazz.defineMethod (c$, "isOpeningParenthesis",
\r
6 return jalview.analysis.Rna.openingParsSet.contains (new Character (c).charCodeAt (0));
\r
8 c$.isClosingParenthesis = Clazz.defineMethod (c$, "isClosingParenthesis",
\r
10 return jalview.analysis.Rna.closingParsSet.contains (new Character (c).charCodeAt (0));
\r
12 c$.matchingOpeningParenthesis = Clazz.defineMethod (c$, "matchingOpeningParenthesis",
\r
13 function (closingParenthesis) {
\r
14 if (!jalview.analysis.Rna.isClosingParenthesis (closingParenthesis)) {
\r
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);
\r
16 }return String.fromCharCode (jalview.analysis.Rna.closingToOpening.get (new Character (closingParenthesis).charCodeAt (0)));
\r
18 c$.GetSimpleBPs = Clazz.defineMethod (c$, "GetSimpleBPs",
\r
20 var stacks = new java.util.Hashtable ();
\r
21 var pairs = new java.util.Vector ();
\r
23 while (i < line.length) {
\r
24 var base = line.charAt (i);
\r
25 if (jalview.analysis.Rna.isOpeningParenthesis (base)) {
\r
26 if (!stacks.containsKey (new Character (base).charCodeAt (0))) {
\r
27 stacks.put (new Character (base).charCodeAt (0), new java.util.Stack ());
\r
28 }stacks.get (new Character (base).charCodeAt (0)).push (new Integer (i));
\r
29 } else if (jalview.analysis.Rna.isClosingParenthesis (base)) {
\r
30 var opening = jalview.analysis.Rna.matchingOpeningParenthesis (base);
\r
31 if (!stacks.containsKey (new Character (opening).charCodeAt (0))) {
\r
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);
\r
33 }var stack = stacks.get (new Character (opening).charCodeAt (0));
\r
34 if (stack.isEmpty ()) {
\r
35 throw new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_closing_char", Clazz.newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);
\r
36 }var temp = (stack.pop ()).intValue ();
\r
37 pairs.add ( new jalview.analysis.SecStrConsensus.SimpleBP (temp, i));
\r
40 for (var opening, $opening = stacks.keySet ().iterator (); $opening.hasNext () && ((opening = $opening.next ()) || true);) {
\r
41 var stack = stacks.get (new Character (opening).charCodeAt (0));
\r
42 if (!stack.empty ()) {
\r
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);
\r
47 c$.GetBasePairs = Clazz.defineMethod (c$, "GetBasePairs",
\r
49 var bps = jalview.analysis.Rna.GetSimpleBPs (line);
\r
50 var outPairs = new Array (bps.size ());
\r
51 for (var p = 0; p < bps.size (); p++) {
\r
52 var bp = bps.elementAt (p);
\r
53 outPairs[p] = new jalview.datamodel.SequenceFeature ("RNA helix", "", "", bp.getBP5 (), bp.getBP3 (), "");
\r
57 c$.GetModeleBP = Clazz.defineMethod (c$, "GetModeleBP",
\r
59 var bps = jalview.analysis.Rna.GetSimpleBPs (line);
\r
60 return new java.util.ArrayList (bps);
\r
62 c$.HelixMap = Clazz.defineMethod (c$, "HelixMap",
\r
66 var lastclose = 9999999;
\r
67 var i = pairs.length;
\r
71 var helices = new java.util.Hashtable ();
\r
72 for (i = 0; i < pairs.length; i++) {
\r
73 open = pairs[i].getBegin ();
\r
74 close = pairs[i].getEnd ();
\r
75 if (open > lastclose) {
\r
77 }j = pairs.length - 1;
\r
79 var popen = pairs[j].getBegin ();
\r
80 if ((popen < lastopen) && (popen > open)) {
\r
81 if (helices.containsValue (new Integer (popen)) && (((helices.get (new Integer (popen)))).intValue () === helix)) {
\r
88 helices.put (new Integer (open), new Integer (helix));
\r
89 helices.put (new Integer (close), new Integer (helix));
\r
90 pairs[i].setFeatureGroup (Integer.toString (helix));
\r
95 c$.pairHash = c$.prototype.pairHash = new java.util.Hashtable ();
\r
96 Clazz.defineStatics (c$,
\r
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')]),
\r
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')]));
\r
99 c$.openingParsSet = c$.prototype.openingParsSet = new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.openingPars));
\r
100 c$.closingParsSet = c$.prototype.closingParsSet = new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.closingPars));
\r
101 c$.closingToOpening = c$.prototype.closingToOpening = new java.util.Hashtable ();
\r
103 for (var i = 0; i < jalview.analysis.Rna.openingPars.length; i++) {
\r
104 jalview.analysis.Rna.closingToOpening.put (jalview.analysis.Rna.closingPars[i], jalview.analysis.Rna.openingPars[i]);
\r