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