JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / jalview / util / Comparison.js
1 Clazz.declarePackage ("jalview.util");
2 Clazz.load (null, "jalview.util.Comparison", ["java.util.ArrayList"], function () {
3 c$ = Clazz.declareType (jalview.util, "Comparison");
4 c$.compare = Clazz.defineMethod (c$, "compare", 
5 function (ii, jj) {
6 return jalview.util.Comparison.compare (ii, jj, 0, ii.getLength () - 1);
7 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
8 c$.compare = Clazz.defineMethod (c$, "compare", 
9 function (ii, jj, start, end) {
10 var si = ii.getSequenceAsString ();
11 var sj = jj.getSequenceAsString ();
12 var ilen = si.length - 1;
13 var jlen = sj.length - 1;
14 while (jalview.util.Comparison.isGap (si.charAt (start + ilen))) {
15 ilen--;
16 }
17 while (jalview.util.Comparison.isGap (sj.charAt (start + jlen))) {
18 jlen--;
19 }
20 var count = 0;
21 var match = 0;
22 var pid = -1;
23 if (ilen > jlen) {
24 for (var j = 0; j < jlen; j++) {
25 if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {
26 match++;
27 }count++;
28 }
29 pid = match / ilen * 100;
30 } else {
31 for (var j = 0; j < jlen; j++) {
32 if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {
33 match++;
34 }count++;
35 }
36 pid = match / jlen * 100;
37 }return pid;
38 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N,~N");
39 c$.PID = Clazz.defineMethod (c$, "PID", 
40 function (seq1, seq2) {
41 return jalview.util.Comparison.PID (seq1, seq2, 0, seq1.length);
42 }, "~S,~S");
43 c$.PID = Clazz.defineMethod (c$, "PID", 
44 function (seq1, seq2, start, end) {
45 return jalview.util.Comparison.PID (seq1, seq2, start, end, true, false);
46 }, "~S,~S,~N,~N");
47 c$.PID = Clazz.defineMethod (c$, "PID", 
48 function (seq1, seq2, start, end, wcGaps, ungappedOnly) {
49 var s1len = seq1.length;
50 var s2len = seq2.length;
51 var len = Math.min (s1len, s2len);
52 if (end < len) {
53 len = end;
54 }if (len < start) {
55 start = len - 1;
56 }var elen = len - start;
57 var bad = 0;
58 var chr1;
59 var chr2;
60 var agap;
61 for (var i = start; i < len; i++) {
62 chr1 = seq1.charAt (i);
63 chr2 = seq2.charAt (i);
64 agap = jalview.util.Comparison.isGap (chr1) || jalview.util.Comparison.isGap (chr2);
65 if ('a' <= chr1 && chr1 <= 'z') {
66 chr1 = String.fromCharCode (chr1.charCodeAt (0) - 32);
67 }if ('a' <= chr2 && chr2 <= 'z') {
68 chr2 = String.fromCharCode (chr2.charCodeAt (0) - 32);
69 }if (chr1 != chr2) {
70 if (agap) {
71 if (ungappedOnly) {
72 elen--;
73 } else if (!wcGaps) {
74 bad++;
75 }} else {
76 bad++;
77 }}}
78 if (elen < 1) {
79 return 0;
80 }return (100 * (elen - bad)) / elen;
81 }, "~S,~S,~N,~N,~B,~B");
82 c$.isGap = Clazz.defineMethod (c$, "isGap", 
83 function (c) {
84 return (c == '-' || c == '.' || c == ' ') ? true : false;
85 }, "~S");
86 c$.isNucleotide = Clazz.defineMethod (c$, "isNucleotide", 
87 function (seqs) {
88 if (seqs == null) {
89 return false;
90 }var ntCount = 0;
91 var aaCount = 0;
92 for (var seq, $seq = 0, $$seq = seqs; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
93 if (seq == null) {
94 continue;
95 }for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
96 if ('a' <= c && c <= 'z') {
97 c = String.fromCharCode (c.charCodeAt (0) - 32);
98 }if (c == 'A' || c == 'G' || c == 'C' || c == 'T' || c == 'U') {
99 ntCount++;
100 } else if (!jalview.util.Comparison.isGap (c)) {
101 aaCount++;
102 }}
103 }
104 if (ntCount * 100 > 85 * (ntCount + aaCount)) {
105 return true;
106 } else {
107 return false;
108 }}, "~A");
109 c$.isNucleotide2 = Clazz.defineMethod (c$, "isNucleotide2", 
110 function (seqs) {
111 if (seqs == null) {
112 return false;
113 }var flattened =  new java.util.ArrayList ();
114 for (var ss, $ss = 0, $$ss = seqs; $ss < $$ss.length && ((ss = $$ss[$ss]) || true); $ss++) {
115 for (var s, $s = 0, $$s = ss; $s < $$s.length && ((s = $$s[$s]) || true); $s++) {
116 flattened.add (s);
117 }
118 }
119 var oneDArray = flattened.toArray ( new Array (flattened.size ()));
120 return jalview.util.Comparison.isNucleotide (oneDArray);
121 }, "~A");
122 Clazz.defineStatics (c$,
123 "EIGHTY_FIVE", 85,
124 "TO_UPPER_CASE", 32,
125 "GAP_SPACE", ' ',
126 "GAP_DOT", '.',
127 "GAP_DASH", '-');
128 c$.GapChars = c$.prototype.GapChars =  String.instantialize ( Clazz.newCharArray (-1, [' ', '.', '-']));
129 Clazz.defineStatics (c$,
130 "caseShift", 32);
131 });