JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / jalview / analysis / ParseProperties.js
1 Clazz.declarePackage ("jalview.analysis");\r
2 Clazz.load (null, "jalview.analysis.ParseProperties", ["jalview.datamodel.AlignmentAnnotation", "jalview.jsdev.RegExp", "java.lang.Double"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.al = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, jalview.analysis, "ParseProperties");\r
7 Clazz.makeConstructor (c$, \r
8 function (al) {\r
9 this.al = al;\r
10 }, "jalview.datamodel.AlignmentI");\r
11 Clazz.defineMethod (c$, "getScoresFromDescription", \r
12 function (ScoreName, ScoreDescriptions, regex, repeat) {\r
13 return this.getScoresFromDescription ( Clazz.newArray (-1, [ScoreName]),  Clazz.newArray (-1, [ScoreDescriptions]), regex, repeat);\r
14 }, "~S,~S,~S,~B");\r
15 Clazz.defineMethod (c$, "getScoresFromDescription", \r
16 function (ScoreNames, ScoreDescriptions, regex, repeat) {\r
17 return this.getScoresFromDescription (this.al.getSequencesArray (), ScoreNames, ScoreDescriptions, regex, repeat);\r
18 }, "~A,~A,~S,~B");\r
19 Clazz.defineMethod (c$, "getScoresFromDescription", \r
20 function (seqs, ScoreNames, ScoreDescriptions, regex, repeat) {\r
21 var count = 0;\r
22 var pattern = jalview.jsdev.RegExp.newRegex ([regex]);\r
23 if (pattern.numSubs () > ScoreNames.length) {\r
24 var onamelen = ScoreNames.length;\r
25 var tnames =  new Array (pattern.numSubs () + 1);\r
26 System.arraycopy (ScoreNames, 0, tnames, 0, ScoreNames.length);\r
27 var base = tnames[ScoreNames.length - 1];\r
28 ScoreNames = tnames;\r
29 var descrbase = ScoreDescriptions[onamelen - 1];\r
30 if (descrbase == null) {\r
31 descrbase = "Score parsed from (" + regex + ")";\r
32 }tnames =  new Array (pattern.numSubs () + 1);\r
33 System.arraycopy (ScoreDescriptions, 0, tnames, 0, ScoreDescriptions.length);\r
34 ScoreDescriptions = tnames;\r
35 for (var i = onamelen; i < ScoreNames.length; i++) {\r
36 ScoreNames[i] = base + "_" + i;\r
37 ScoreDescriptions[i] = descrbase + " (column " + i + ")";\r
38 }\r
39 }for (var i = 0; i < seqs.length; i++) {\r
40 var descr = seqs[i].getDescription ();\r
41 if (descr == null) {\r
42 continue;\r
43 }var pos = 0;\r
44 var added = false;\r
45 var reps = 0;\r
46 while ((repeat || pos == 0) && pattern.searchFrom (descr, pos)) {\r
47 pos = pattern.matchedTo ();\r
48 for (var cols = 0; cols < pattern.numSubs (); cols++) {\r
49 var sstring = pattern.stringMatchedI (cols + 1);\r
50 var score = NaN;\r
51 try {\r
52 score =  new Double (sstring).doubleValue ();\r
53 } catch (e) {\r
54 if (Clazz.exceptionOf (e, Exception)) {\r
55 continue;\r
56 } else {\r
57 throw e;\r
58 }\r
59 }\r
60 var an =  new jalview.datamodel.AlignmentAnnotation (ScoreNames[cols] + ((reps > 0) ? "_" + reps : ""), ScoreDescriptions[cols], null);\r
61 an.setScore (score);\r
62 System.out.println (seqs[i].getName () + " score: '" + ScoreNames[cols] + "' = " + score);\r
63 an.setSequenceRef (seqs[i]);\r
64 seqs[i].addAlignmentAnnotation (an);\r
65 this.al.addAnnotation (an);\r
66 added = true;\r
67 }\r
68 reps++;\r
69 }\r
70 if (added) {\r
71 count++;\r
72 }}\r
73 return count;\r
74 }, "~A,~A,~A,~S,~B");\r
75 });\r