JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / schemes / ScoreMatrix.js
1 Clazz.declarePackage ("jalview.schemes");\r
2 Clazz.load (["jalview.analysis.scoremodels.PairwiseSeqScoreModel", "jalview.api.analysis.ScoreModelI"], "jalview.schemes.ScoreMatrix", ["jalview.schemes.ResidueProperties", "java.lang.StringBuffer"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.name = null;\r
5 this.matrix = null;\r
6 this.type = 0;\r
7 Clazz.instantialize (this, arguments);\r
8 }, jalview.schemes, "ScoreMatrix", jalview.analysis.scoremodels.PairwiseSeqScoreModel, jalview.api.analysis.ScoreModelI);\r
9 Clazz.overrideMethod (c$, "getName", \r
10 function () {\r
11 return this.name;\r
12 });\r
13 Clazz.makeConstructor (c$, \r
14 function (name, matrix, type) {\r
15 Clazz.superConstructor (this, jalview.schemes.ScoreMatrix, []);\r
16 this.matrix = matrix;\r
17 this.type = type;\r
18 this.name = name;\r
19 }, "~S,~A,~N");\r
20 Clazz.overrideMethod (c$, "isDNA", \r
21 function () {\r
22 return this.type == 1;\r
23 });\r
24 Clazz.overrideMethod (c$, "isProtein", \r
25 function () {\r
26 return this.type == 0;\r
27 });\r
28 Clazz.overrideMethod (c$, "getMatrix", \r
29 function () {\r
30 return this.matrix;\r
31 });\r
32 Clazz.defineMethod (c$, "getPairwiseScore", \r
33 function (A1, A2) {\r
34 return this.getPairwiseScore (A1.charAt (0), A2.charAt (0));\r
35 }, "~S,~S");\r
36 Clazz.defineMethod (c$, "getPairwiseScore", \r
37 function (c, d) {\r
38 var pog = 0;\r
39 try {\r
40 var a = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)];\r
41 var b = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[d.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[d.charCodeAt (0)];\r
42 pog = this.matrix[a][b];\r
43 } catch (e) {\r
44 if (Clazz.exceptionOf (e, Exception)) {\r
45 } else {\r
46 throw e;\r
47 }\r
48 }\r
49 return pog;\r
50 }, "~S,~S");\r
51 Clazz.overrideMethod (c$, "toString", \r
52 function () {\r
53 return this.outputMatrix (false);\r
54 });\r
55 Clazz.defineMethod (c$, "outputMatrix", \r
56 function (html) {\r
57 var sb =  new StringBuffer ();\r
58 var symbols = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex : jalview.schemes.ResidueProperties.nucleotideIndex;\r
59 var symMax = (this.type == 0) ? 23 : 10;\r
60 var header = true;\r
61 if (html) {\r
62 sb.append ("<table border=\"1\">");\r
63 }for (var sym = 'A'; sym <= 'Z'; sym = String.fromCharCode (sym.charCodeAt (0) + 1)) {\r
64 if (symbols[sym.charCodeAt (0)] >= 0 && symbols[sym.charCodeAt (0)] < symMax) {\r
65 if (header) {\r
66 sb.append (html ? "<tr><td></td>" : "");\r
67 for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {\r
68 if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {\r
69 sb.append ((html ? "<td>&nbsp;" : "\t") + sym2 + (html ? "&nbsp;</td>" : ""));\r
70 }}\r
71 header = false;\r
72 sb.append (html ? "</tr>\n" : "\n");\r
73 }if (html) {\r
74 sb.append ("<tr>");\r
75 }sb.append ((html ? "<td>" : "") + sym + (html ? "</td>" : ""));\r
76 for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {\r
77 if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {\r
78 sb.append ((html ? "<td>" : "\t") + this.matrix[symbols[sym.charCodeAt (0)]][symbols[sym2.charCodeAt (0)]] + (html ? "</td>" : ""));\r
79 }}\r
80 sb.append (html ? "</tr>\n" : "\n");\r
81 }}\r
82 if (html) {\r
83 sb.append ("</table>");\r
84 }return sb.toString ();\r
85 }, "~B");\r
86 });\r