1 Clazz.declarePackage ("jalview.analysis");
\r
2 Clazz.load (null, "jalview.analysis.StructureFrequency", ["jalview.datamodel.Annotation", "jalview.util.Format", "$.QuickSort", "java.lang.Float", "java.util.Hashtable", "JU.AU"], function () {
\r
3 c$ = Clazz.declareType (jalview.analysis, "StructureFrequency");
\r
4 c$.findPair = Clazz.defineMethod (c$, "findPair",
\r
5 function (pairs, indice) {
\r
6 for (var i = 0; i < pairs.length; i++) {
\r
7 if (pairs[i].getBegin () == indice) {
\r
8 return pairs[i].getEnd ();
\r
12 c$.calculate = Clazz.defineMethod (c$, "calculate",
\r
13 function (sequences, start, end, result, profile, rnaStruc) {
\r
16 var struc = rnaStruc.getRNAStruc ().toCharArray ();
\r
17 var rna = rnaStruc._rnasecstr;
\r
26 var jSize = sequences.length;
\r
31 for (i = start; i < end; i++) {
\r
32 residueHash = new java.util.Hashtable ();
\r
34 values = Clazz.newIntArray (255, 0);
\r
35 pairs = Clazz.newIntArray (255, 255, 0);
\r
37 if (i < struc.length) {
\r
41 }if (s == '.' || s == ' ') {
\r
43 }if (s != '(' && s != '[') {
\r
45 values['-'.charCodeAt (0)]++;
\r
47 bpEnd = jalview.analysis.StructureFrequency.findPair (rna, i);
\r
49 for (j = 0; j < jSize; j++) {
\r
50 if (sequences[j] == null) {
\r
51 System.err.println ("WARNING: Consensus skipping null sequence - possible race condition.");
\r
53 }c = sequences[j].getCharAt (i);
\r
54 if (c == '.' || c == ' ') {
\r
57 values['-'.charCodeAt (0)]++;
\r
59 }cEnd = sequences[j].getCharAt (bpEnd);
\r
60 if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == true) {
\r
61 values['('.charCodeAt (0)]++;
\r
64 }if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == false) {
\r
66 values['['.charCodeAt (0)]++;
\r
68 }pairs[c.charCodeAt (0)][cEnd.charCodeAt (0)]++;
\r
71 residueHash.put ("P", Clazz.newArray (-1, [values, Clazz.newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));
\r
72 residueHash.put ("B", pairs);
\r
73 }if (wooble == true) {
\r
74 count = values['('.charCodeAt (0)];
\r
75 }if (wooble == false) {
\r
76 count = values['['.charCodeAt (0)];
\r
77 }residueHash.put ("C", new Integer (count));
\r
78 residueHash.put ("R", maxResidue);
\r
79 percentage = (count * 100) / jSize;
\r
80 residueHash.put ("G", new Float (percentage));
\r
81 if (result[i] == null) {
\r
82 result[i] = residueHash;
\r
84 values[')'.charCodeAt (0)] = values['('.charCodeAt (0)];
\r
85 values[']'.charCodeAt (0)] = values['['.charCodeAt (0)];
\r
86 values['('.charCodeAt (0)] = 0;
\r
87 values['['.charCodeAt (0)] = 0;
\r
88 residueHash = new java.util.Hashtable ();
\r
89 if (wooble == true) {
\r
91 }if (wooble == false) {
\r
94 residueHash.put ("P", Clazz.newArray (-1, [values, Clazz.newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));
\r
95 residueHash.put ("B", pairs);
\r
96 }residueHash.put ("C", new Integer (count));
\r
97 residueHash.put ("R", maxResidue);
\r
98 percentage = (count * 100) / jSize;
\r
99 residueHash.put ("G", new Float (percentage));
\r
100 result[bpEnd] = residueHash;
\r
102 }, "~A,~N,~N,~A,~B,jalview.datamodel.AlignmentAnnotation");
\r
103 c$.checkBpType = Clazz.defineMethod (c$, "checkBpType",
\r
104 function (up, down) {
\r
106 up = String.fromCharCode (up.charCodeAt (0) - 32);
\r
108 down = String.fromCharCode (down.charCodeAt (0) - 32);
\r
153 c$.completeConsensus = Clazz.defineMethod (c$, "completeConsensus",
\r
154 function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, nseq) {
\r
157 if (consensus == null || consensus.annotations == null || consensus.annotations.length < width) {
\r
159 }var fmtstr = "%3.1f";
\r
161 while (nseq > 100) {
\r
165 if (precision > 2) {
\r
166 fmtstr = "%" + (2 + precision) + "." + precision + "f";
\r
167 }var fmt = new jalview.util.Format (fmtstr);
\r
168 for (var i = iStart; i < width; i++) {
\r
170 if (i >= hconsensus.length || ((hci = hconsensus[i]) == null)) {
\r
171 consensus.annotations[i] = null;
\r
175 if (ignoreGapsInConsensusCalculation) {
\r
176 fv = hci.get ("N");
\r
178 fv = hci.get ("G");
\r
180 consensus.annotations[i] = null;
\r
182 }value = fv.floatValue ();
\r
183 var maxRes = hci.get ("R").toString ();
\r
184 var mouseOver = hci.get ("R") + " ";
\r
185 if (maxRes.length > 1) {
\r
186 mouseOver = "[" + maxRes + "] ";
\r
188 }var profile = hci.get ("P");
\r
189 var pairs = hci.get ("B");
\r
190 if (pairs != null && includeAllConsSymbols) {
\r
192 var ca = JU.AU.newInt2 (625);
\r
193 var vl = Clazz.newFloatArray (625, 0);
\r
195 for (var c = 65; c < 90; c++) {
\r
196 for (var d = 65; d < 90; d++) {
\r
197 ca[x] = Clazz.newIntArray (-1, [c, d]);
\r
198 vl[x] = pairs[c][d];
\r
202 jalview.util.QuickSort.sortFloatObject (vl, ca);
\r
204 var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
\r
205 for (var c = 624; c > 0; c--) {
\r
207 tval = (vl[c] * 100 / divisor);
\r
208 mouseOver += ((p == 0) ? "" : "; ") + String.fromCharCode (ca[c][0]) + String.fromCharCode (ca[c][1]) + " " + fmt.formDouble (tval) + "%";
\r
212 mouseOver += (fmt.formDouble (value) + "%");
\r
213 }consensus.annotations[i] = new jalview.datamodel.Annotation (maxRes, mouseOver, ' ', value);
\r
215 }, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");
\r
216 c$.extractProfile = Clazz.defineMethod (c$, "extractProfile",
\r
217 function (hconsensus, ignoreGapsInConsensusCalculation) {
\r
218 var rtnval = Clazz.newIntArray (74, 0);
\r
219 var profile = hconsensus.get ("P");
\r
220 var pairs = hconsensus.get ("B");
\r
221 if (profile == null) {
\r
223 }var ca = JU.AU.newInt2 (625);
\r
224 var vl = Clazz.newFloatArray (625, 0);
\r
226 for (var c = 65; c < 90; c++) {
\r
227 for (var d = 65; d < 90; d++) {
\r
228 ca[x] = Clazz.newIntArray (-1, [c, d]);
\r
229 vl[x] = pairs[c][d];
\r
233 jalview.util.QuickSort.sortFloatObject (vl, ca);
\r
234 var valuesCount = 0;
\r
237 var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
\r
238 for (var c = 624; c > 0; c--) {
\r
240 rtnval[offset++] = ca[c][0];
\r
241 rtnval[offset++] = ca[c][1];
\r
242 rtnval[offset] = Clazz.floatToInt (vl[c] * 100 / divisor);
\r
243 rtnval[1] += rtnval[offset++];
\r
246 rtnval[0] = valuesCount;
\r
247 var result = Clazz.newIntArray (rtnval.length + 1, 0);
\r
249 System.arraycopy (rtnval, 0, result, 1, rtnval.length);
\r
251 }, "java.util.Hashtable,~B");
\r
252 Clazz.defineStatics (c$,
\r
253 "STRUCTURE_PROFILE_LENGTH", 74,
\r
259 "PAIRPROFILE", "B");
\r