JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / datamodel / AlignedCodonFrame.js
1 Clazz.declarePackage ("jalview.datamodel");\r
2 Clazz.load (null, "jalview.datamodel.AlignedCodonFrame", ["jalview.datamodel.Mapping", "jalview.util.MappingUtils", "java.util.ArrayList"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.dnaSeqs = null;\r
5 this.dnaToProt = null;\r
6 Clazz.instantialize (this, arguments);\r
7 }, jalview.datamodel, "AlignedCodonFrame");\r
8 Clazz.makeConstructor (c$, \r
9 function () {\r
10 });\r
11 Clazz.defineMethod (c$, "addMap", \r
12 function (dnaseq, aaseq, map) {\r
13 var nlen = 1;\r
14 if (this.dnaSeqs != null) {\r
15 nlen = this.dnaSeqs.length + 1;\r
16 }var ndna =  new Array (nlen);\r
17 var ndtp =  new Array (nlen);\r
18 if (this.dnaSeqs != null) {\r
19 System.arraycopy (this.dnaSeqs, 0, ndna, 0, this.dnaSeqs.length);\r
20 System.arraycopy (this.dnaToProt, 0, ndtp, 0, this.dnaSeqs.length);\r
21 }this.dnaSeqs = ndna;\r
22 this.dnaToProt = ndtp;\r
23 nlen--;\r
24 this.dnaSeqs[nlen] = (dnaseq.getDatasetSequence () == null) ? dnaseq : dnaseq.getDatasetSequence ();\r
25 var mp =  new jalview.datamodel.Mapping (map);\r
26 mp.to = (aaseq.getDatasetSequence () == null) ? aaseq : aaseq.getDatasetSequence ();\r
27 this.dnaToProt[nlen] = mp;\r
28 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList");\r
29 Clazz.defineMethod (c$, "getdnaSeqs", \r
30 function () {\r
31 return this.dnaSeqs;\r
32 });\r
33 Clazz.defineMethod (c$, "getAaSeqs", \r
34 function () {\r
35 if (this.dnaToProt == null) {\r
36 return null;\r
37 }var sqs =  new Array (this.dnaToProt.length);\r
38 for (var sz = 0; sz < this.dnaToProt.length; sz++) {\r
39 sqs[sz] = this.dnaToProt[sz].to;\r
40 }\r
41 return sqs;\r
42 });\r
43 Clazz.defineMethod (c$, "getdnaToProt", \r
44 function () {\r
45 if (this.dnaToProt == null) {\r
46 return null;\r
47 }var sqs =  new Array (this.dnaToProt.length);\r
48 for (var sz = 0; sz < this.dnaToProt.length; sz++) {\r
49 sqs[sz] = this.dnaToProt[sz].map;\r
50 }\r
51 return sqs;\r
52 });\r
53 Clazz.defineMethod (c$, "getProtMappings", \r
54 function () {\r
55 return this.dnaToProt;\r
56 });\r
57 Clazz.defineMethod (c$, "getMappingForSequence", \r
58 function (seq) {\r
59 if (this.dnaSeqs == null) {\r
60 return null;\r
61 }var seqDs = seq.getDatasetSequence ();\r
62 seqDs = seqDs != null ? seqDs : seq;\r
63 for (var ds = 0; ds < this.dnaSeqs.length; ds++) {\r
64 if (this.dnaSeqs[ds] === seqDs || this.dnaToProt[ds].to === seqDs) {\r
65 return this.dnaToProt[ds];\r
66 }}\r
67 return null;\r
68 }, "jalview.datamodel.SequenceI");\r
69 Clazz.defineMethod (c$, "getAaForDnaSeq", \r
70 function (dnaSeqRef) {\r
71 if (this.dnaSeqs == null) {\r
72 return null;\r
73 }var dnads = dnaSeqRef.getDatasetSequence ();\r
74 for (var ds = 0; ds < this.dnaSeqs.length; ds++) {\r
75 if (this.dnaSeqs[ds] === dnaSeqRef || this.dnaSeqs[ds] === dnads) {\r
76 return this.dnaToProt[ds].to;\r
77 }}\r
78 return null;\r
79 }, "jalview.datamodel.SequenceI");\r
80 Clazz.defineMethod (c$, "getDnaForAaSeq", \r
81 function (aaSeqRef) {\r
82 if (this.dnaToProt == null) {\r
83 return null;\r
84 }var aads = aaSeqRef.getDatasetSequence ();\r
85 for (var as = 0; as < this.dnaToProt.length; as++) {\r
86 if (this.dnaToProt[as].to === aaSeqRef || this.dnaToProt[as].to === aads) {\r
87 return this.dnaSeqs[as];\r
88 }}\r
89 return null;\r
90 }, "jalview.datamodel.SequenceI");\r
91 Clazz.defineMethod (c$, "involvesSequence", \r
92 function (seq) {\r
93 return this.getAaForDnaSeq (seq) != null || this.getDnaForAaSeq (seq) != null;\r
94 }, "jalview.datamodel.SequenceI");\r
95 Clazz.defineMethod (c$, "markMappedRegion", \r
96 function (seq, index, results) {\r
97 if (this.dnaToProt == null) {\r
98 return;\r
99 }var codon;\r
100 var ds = seq.getDatasetSequence ();\r
101 for (var mi = 0; mi < this.dnaToProt.length; mi++) {\r
102 if (this.dnaSeqs[mi] === seq || this.dnaSeqs[mi] === ds) {\r
103 codon = this.dnaToProt[mi].map.locateInTo (index, index);\r
104 if (codon != null) {\r
105 for (var i = 0; i < codon.length; i += 2) {\r
106 results.addResult (this.dnaToProt[mi].to, codon[i], codon[i + 1]);\r
107 }\r
108 }} else if (this.dnaToProt[mi].to === seq || this.dnaToProt[mi].to === ds) {\r
109 {\r
110 codon = this.dnaToProt[mi].map.locateInFrom (index, index);\r
111 if (codon != null) {\r
112 for (var i = 0; i < codon.length; i += 2) {\r
113 results.addResult (this.dnaSeqs[mi], codon[i], codon[i + 1]);\r
114 }\r
115 }}}}\r
116 }, "jalview.datamodel.SequenceI,~N,jalview.datamodel.SearchResults");\r
117 Clazz.defineMethod (c$, "getDnaPosition", \r
118 function (seq, aaPos) {\r
119 var ml = null;\r
120 for (var i = 0; i < this.dnaToProt.length; i++) {\r
121 if (this.dnaSeqs[i] === seq) {\r
122 ml = this.getdnaToProt ()[i];\r
123 break;\r
124 }}\r
125 return ml == null ? null : ml.locateInFrom (aaPos, aaPos);\r
126 }, "jalview.datamodel.SequenceI,~N");\r
127 Clazz.defineMethod (c$, "findAlignedSequence", \r
128 function (seq, al) {\r
129 if (this.dnaToProt != null) {\r
130 for (var i = 0; i < this.dnaToProt.length; i++) {\r
131 if (this.dnaSeqs[i] === seq) {\r
132 for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {\r
133 if (this.dnaToProt[i].to === sourceAligned.getDatasetSequence ()) {\r
134 return sourceAligned;\r
135 }}\r
136 }}\r
137 }if (this.dnaToProt != null) {\r
138 for (var i = 0; i < this.dnaToProt.length; i++) {\r
139 if (this.dnaToProt[i].to === seq) {\r
140 for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {\r
141 if (this.dnaSeqs[i] === sourceAligned.getDatasetSequence ()) {\r
142 return sourceAligned;\r
143 }}\r
144 }}\r
145 }return null;\r
146 }, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI");\r
147 Clazz.defineMethod (c$, "getMappedRegion", \r
148 function (mappedFrom, mappedTo, pos) {\r
149 var targetDs = mappedFrom.getDatasetSequence () == null ? mappedFrom : mappedFrom.getDatasetSequence ();\r
150 var sourceDs = mappedTo.getDatasetSequence () == null ? mappedTo : mappedTo.getDatasetSequence ();\r
151 if (targetDs == null || sourceDs == null || this.dnaToProt == null) {\r
152 return null;\r
153 }for (var mi = 0; mi < this.dnaToProt.length; mi++) {\r
154 if (this.dnaSeqs[mi] === targetDs && this.dnaToProt[mi].to === sourceDs) {\r
155 var codon = this.dnaToProt[mi].map.locateInFrom (pos, pos);\r
156 if (codon != null) {\r
157 return codon;\r
158 }}}\r
159 return null;\r
160 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N");\r
161 Clazz.defineMethod (c$, "getMappedCodon", \r
162 function (protein, aaPos) {\r
163 if (this.dnaToProt == null) {\r
164 return null;\r
165 }var ml = null;\r
166 var dnaSeq = null;\r
167 for (var i = 0; i < this.dnaToProt.length; i++) {\r
168 if (this.dnaToProt[i].to === protein) {\r
169 ml = this.getdnaToProt ()[i];\r
170 dnaSeq = this.dnaSeqs[i].getSequence ();\r
171 break;\r
172 }}\r
173 if (ml == null) {\r
174 return null;\r
175 }var codonPos = ml.locateInFrom (aaPos, aaPos);\r
176 if (codonPos == null) {\r
177 return null;\r
178 }codonPos = jalview.util.MappingUtils.flattenRanges (codonPos);\r
179 return  Clazz.newCharArray (-1, [dnaSeq[codonPos[0] - 1], dnaSeq[codonPos[1] - 1], dnaSeq[codonPos[2] - 1]]);\r
180 }, "jalview.datamodel.SequenceI,~N");\r
181 Clazz.defineMethod (c$, "getMappingsForSequence", \r
182 function (seq) {\r
183 var result =  new java.util.ArrayList ();\r
184 if (this.dnaSeqs == null) {\r
185 return result;\r
186 }var related =  new java.util.ArrayList ();\r
187 var seqDs = seq.getDatasetSequence ();\r
188 seqDs = seqDs != null ? seqDs : seq;\r
189 for (var ds = 0; ds < this.dnaSeqs.length; ds++) {\r
190 var mapping = this.dnaToProt[ds];\r
191 if (this.dnaSeqs[ds] === seqDs || mapping.to === seqDs) {\r
192 if (!related.contains (mapping.to)) {\r
193 result.add (mapping);\r
194 related.add (mapping.to);\r
195 }}}\r
196 return result;\r
197 }, "jalview.datamodel.SequenceI");\r
198 });\r