JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / datamodel / AlignmentView.js
1 Clazz.declarePackage ("jalview.datamodel");\r
2 Clazz.load (null, "jalview.datamodel.AlignmentView", ["jalview.datamodel.Alignment", "$.CigarArray", "$.ColumnSelection", "$.SeqCigar", "$.SequenceGroup", "jalview.util.MessageManager", "$.ShiftList", "java.lang.Error", "java.util.ArrayList", "$.Vector"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.sequences = null;\r
5 this.contigs = null;\r
6 this.width = 0;\r
7 this.firstCol = 0;\r
8 this.scGroups = null;\r
9 this.$isNa = false;\r
10 if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentView.ScGroup")) {\r
11 jalview.datamodel.AlignmentView.$AlignmentView$ScGroup$ ();\r
12 }\r
13 this.selected = null;\r
14 Clazz.instantialize (this, arguments);\r
15 }, jalview.datamodel, "AlignmentView");\r
16 Clazz.defineMethod (c$, "isNa", \r
17 function () {\r
18 return this.$isNa;\r
19 });\r
20 Clazz.makeConstructor (c$, \r
21 function (alignment, columnSelection, selection, hasHiddenColumns, selectedRegionOnly, recordGroups) {\r
22 this.construct ( new jalview.datamodel.CigarArray (alignment, (hasHiddenColumns ? columnSelection : null), (selectedRegionOnly ? selection : null)), (selectedRegionOnly && selection != null) ? selection.getStartRes () : 0);\r
23 this.$isNa = alignment.isNucleotide ();\r
24 var selseqs;\r
25 if (selection != null && selection.getSize () > 0) {\r
26 var sel = selection.getSequences (null);\r
27 this.selected =  new java.util.Vector ();\r
28 selseqs = selection.getSequencesInOrder (alignment, selectedRegionOnly);\r
29 } else {\r
30 selseqs = alignment.getSequencesArray ();\r
31 }var seqsets =  new java.util.ArrayList ();\r
32 var grps =  new java.util.ArrayList ();\r
33 var gg = alignment.getGroups ();\r
34 grps.addAll (gg);\r
35 var sgrps = null;\r
36 var addedgps = null;\r
37 if (grps != null) {\r
38 if (selection != null && selectedRegionOnly) {\r
39 var ssel = selection.getStartRes ();\r
40 var esel = selection.getEndRes ();\r
41 var isg =  new java.util.ArrayList ();\r
42 for (var sg, $sg = grps.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
43 if (!(sg.getStartRes () > esel || sg.getEndRes () < ssel)) {\r
44 if (sg.getStartRes () < ssel) {\r
45 sg.setStartRes (ssel);\r
46 }if (sg.getEndRes () > esel) {\r
47 sg.setEndRes (esel);\r
48 }sg.setStartRes (sg.getStartRes () - ssel + 1);\r
49 sg.setEndRes (sg.getEndRes () - ssel + 1);\r
50 isg.add (sg);\r
51 }}\r
52 grps = isg;\r
53 }sgrps =  new Array (grps.size ());\r
54 addedgps =  Clazz.newBooleanArray (grps.size (), false);\r
55 for (var g = 0; g < sgrps.length; g++) {\r
56 var sg = grps.get (g);\r
57 sgrps[g] = Clazz.innerTypeInstance (jalview.datamodel.AlignmentView.ScGroup, this, null);\r
58 sgrps[g].sg =  new jalview.datamodel.SequenceGroup (sg);\r
59 addedgps[g] = false;\r
60 seqsets.add (sg.getSequences ());\r
61 }\r
62 }var csi = 0;\r
63 for (var i = 0; i < selseqs.length; i++) {\r
64 if (selseqs[i] != null) {\r
65 if (selection != null && selection.getSize () > 0 && !selectedRegionOnly) {\r
66 this.sequences[csi].setGroupMembership (this.selected);\r
67 this.selected.addElement (this.sequences[csi]);\r
68 }if (seqsets != null) {\r
69 for (var sg = 0; sg < sgrps.length; sg++) {\r
70 if ((seqsets.get (sg)).contains (selseqs[i])) {\r
71 this.sequences[csi].setGroupMembership (sgrps[sg]);\r
72 sgrps[sg].sg.deleteSequence (selseqs[i], false);\r
73 sgrps[sg].seqs.addElement (this.sequences[csi]);\r
74 if (!addedgps[sg]) {\r
75 if (this.scGroups == null) {\r
76 this.scGroups =  new java.util.ArrayList ();\r
77 }addedgps[sg] = true;\r
78 this.scGroups.add (sgrps[sg]);\r
79 }}}\r
80 }csi++;\r
81 }}\r
82 for (var sg = 0; sg < sgrps.length; sg++) {\r
83 var sqs = sgrps[sg].sg.getSequencesAsArray (null);\r
84 for (var si = 0; si < sqs.length; si++) {\r
85 sgrps[sg].sg.deleteSequence (sqs[si], false);\r
86 }\r
87 sgrps[sg] = null;\r
88 }\r
89 }, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup,~B,~B,~B");\r
90 Clazz.makeConstructor (c$, \r
91 function (seqcigararray) {\r
92 if (!seqcigararray.isSeqCigarArray ()) {\r
93 throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_can_only_make_alignmnet_from_cigararray"));\r
94 }this.contigs = seqcigararray.getDeletedRegions ();\r
95 this.sequences = seqcigararray.getSeqCigarArray ();\r
96 this.width = seqcigararray.getWidth ();\r
97 }, "jalview.datamodel.CigarArray");\r
98 Clazz.makeConstructor (c$, \r
99 function (sdata, firstcol) {\r
100 this.construct (sdata);\r
101 this.firstCol = firstcol;\r
102 }, "jalview.datamodel.CigarArray,~N");\r
103 Clazz.defineMethod (c$, "setSequences", \r
104 function (sequences) {\r
105 this.sequences = sequences;\r
106 }, "~A");\r
107 Clazz.defineMethod (c$, "setContigs", \r
108 function (contigs) {\r
109 this.contigs = contigs;\r
110 }, "~A");\r
111 Clazz.defineMethod (c$, "getSequences", \r
112 function () {\r
113 return this.sequences;\r
114 });\r
115 Clazz.defineMethod (c$, "getContigs", \r
116 function () {\r
117 return this.contigs;\r
118 });\r
119 Clazz.defineMethod (c$, "getAlignmentAndColumnSelection", \r
120 function (gapCharacter) {\r
121 var colsel =  new jalview.datamodel.ColumnSelection ();\r
122 return  Clazz.newArray (-1, [jalview.datamodel.SeqCigar.createAlignmentSequences (this.sequences, gapCharacter, colsel, this.contigs), colsel]);\r
123 }, "~S");\r
124 Clazz.defineMethod (c$, "getVisibleAlignment", \r
125 function (c) {\r
126 var aln = this.getVisibleSeqs (c);\r
127 var vcal =  new jalview.datamodel.Alignment (aln);\r
128 this.addPrunedGroupsInOrder (vcal, -1, -1, true);\r
129 return vcal;\r
130 }, "~S");\r
131 Clazz.defineMethod (c$, "addPrunedGroupsInOrder", \r
132 ($fz = function (vcal, gstart, gend, viscontigs) {\r
133 var r = false;\r
134 if (gstart > -1 && gstart <= gend) {\r
135 r = true;\r
136 }var aln = vcal.getSequencesArray ();\r
137 {\r
138 {\r
139 var nvg = (this.scGroups != null) ? this.scGroups.size () : 0;\r
140 if (nvg > 0) {\r
141 var nsg =  new Array (nvg);\r
142 for (var g = 0; g < nvg; g++) {\r
143 var sg = this.scGroups.get (g).sg;\r
144 if (r) {\r
145 if (sg.getStartRes () > gend || sg.getEndRes () < gstart) {\r
146 nsg[g] = null;\r
147 continue;\r
148 }}nsg[g] =  new jalview.datamodel.SequenceGroup (sg);\r
149 if (r && !viscontigs) {\r
150 if (nsg[g].getStartRes () < gstart) {\r
151 nsg[g].setStartRes (0);\r
152 } else {\r
153 nsg[g].setStartRes (nsg[g].getStartRes () - gstart);\r
154 nsg[g].setEndRes (nsg[g].getEndRes () - gstart);\r
155 }if (nsg[g].getEndRes () > (gend - gstart)) {\r
156 nsg[g].setEndRes (gend - gstart);\r
157 }}}\r
158 if (viscontigs) {\r
159 if (this.contigs != null) {\r
160 var p = 0;\r
161 var prune =  new jalview.util.ShiftList ();\r
162 if (r) {\r
163 prune.addShift (gstart, -gstart);\r
164 }for (var h = 0; h < this.contigs.length; h += 3) {\r
165 {\r
166 prune.addShift (p + this.contigs[h + 1], this.contigs[h + 2] - this.contigs[h + 1]);\r
167 }p = this.contigs[h + 1] + this.contigs[h + 2];\r
168 }\r
169 for (var g = 0; g < nsg.length; g++) {\r
170 if (nsg[g] != null) {\r
171 var s = nsg[g].getStartRes ();\r
172 var t = nsg[g].getEndRes ();\r
173 var w = 1 + t - s;\r
174 if (r) {\r
175 if (s < gstart) {\r
176 s = gstart;\r
177 }if (t > gend) {\r
178 t = gend;\r
179 }}s = prune.shift (s);\r
180 t = prune.shift (t);\r
181 nsg[g].setStartRes (s);\r
182 nsg[g].setEndRes (t);\r
183 }}\r
184 }}for (var nsq = 0; nsq < aln.length; nsq++) {\r
185 for (var g = 0; g < nvg; g++) {\r
186 if (nsg[g] != null && this.sequences[nsq].isMemberOf (this.scGroups.get (g))) {\r
187 nsg[g].addSequence (aln[nsq], false);\r
188 }}\r
189 }\r
190 for (var g = 0; g < nvg; g++) {\r
191 if (nsg[g] != null && nsg[g].getSize () > 0) {\r
192 vcal.addGroup (nsg[g]);\r
193 }nsg[g] = null;\r
194 }\r
195 }}}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~N,~N,~B");\r
196 Clazz.defineMethod (c$, "getVisibleSeqs", \r
197 ($fz = function (c) {\r
198 var aln =  new Array (this.sequences.length);\r
199 for (var i = 0, j = this.sequences.length; i < j; i++) {\r
200 aln[i] = this.sequences[i].getSeq ('-');\r
201 }\r
202 var seqs = this.getSequenceStrings ('-');\r
203 for (var i = 0, j = aln.length; i < j; i++) {\r
204 aln[i].setSequence (seqs[i]);\r
205 }\r
206 return aln;\r
207 }, $fz.isPrivate = true, $fz), "~S");\r
208 Clazz.defineMethod (c$, "getVisibleContigAlignments", \r
209 function (c) {\r
210 var nvc = 0;\r
211 var vcontigs = this.getVisibleContigs ();\r
212 var contigviews = this.getVisibleContigs (c);\r
213 var vcals =  new Array (contigviews.length);\r
214 for (nvc = 0; nvc < contigviews.length; nvc++) {\r
215 vcals[nvc] =  new jalview.datamodel.Alignment (contigviews[nvc]);\r
216 if (this.scGroups != null && this.scGroups.size () > 0) {\r
217 this.addPrunedGroupsInOrder (vcals[nvc], vcontigs[nvc * 2], vcontigs[nvc * 2 + 1], true);\r
218 }}\r
219 return vcals;\r
220 }, "~S");\r
221 Clazz.defineMethod (c$, "getSequenceStrings", \r
222 function (c) {\r
223 var seqs =  new Array (this.sequences.length);\r
224 for (var n = 0; n < this.sequences.length; n++) {\r
225 var fullseq = this.sequences[n].getSequenceString (c);\r
226 if (this.contigs != null) {\r
227 seqs[n] = "";\r
228 var p = 0;\r
229 for (var h = 0; h < this.contigs.length; h += 3) {\r
230 seqs[n] += fullseq.substring (p, this.contigs[h + 1]);\r
231 p = this.contigs[h + 1] + this.contigs[h + 2];\r
232 }\r
233 seqs[n] += fullseq.substring (p);\r
234 } else {\r
235 seqs[n] = fullseq;\r
236 }}\r
237 return seqs;\r
238 }, "~S");\r
239 Clazz.defineMethod (c$, "getWidth", \r
240 function () {\r
241 return this.width;\r
242 });\r
243 Clazz.defineMethod (c$, "setWidth", \r
244 function (width) {\r
245 this.width = width;\r
246 }, "~N");\r
247 Clazz.defineMethod (c$, "getVisibleContigs", \r
248 function (gapCharacter) {\r
249 var smsa;\r
250 var njobs = 1;\r
251 if (this.sequences == null || this.width <= 0) {\r
252 return null;\r
253 }if (this.contigs != null && this.contigs.length > 0) {\r
254 var start = 0;\r
255 njobs = 0;\r
256 var fwidth = this.width;\r
257 for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
258 if ((this.contigs[contig + 1] - start) > 0) {\r
259 njobs++;\r
260 }fwidth += this.contigs[contig + 2];\r
261 start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
262 }\r
263 if (start < fwidth) {\r
264 njobs++;\r
265 }smsa =  new Array (njobs);\r
266 start = 0;\r
267 var j = 0;\r
268 for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
269 if (this.contigs[contig + 1] - start > 0) {\r
270 var mseq =  new Array (this.sequences.length);\r
271 for (var s = 0; s < mseq.length; s++) {\r
272 mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);\r
273 }\r
274 smsa[j] = mseq;\r
275 j++;\r
276 }start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
277 }\r
278 if (start < fwidth) {\r
279 var mseq =  new Array (this.sequences.length);\r
280 for (var s = 0; s < mseq.length; s++) {\r
281 mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, fwidth + 1);\r
282 }\r
283 smsa[j] = mseq;\r
284 j++;\r
285 }} else {\r
286 smsa =  new Array (1);\r
287 smsa[0] =  new Array (this.sequences.length);\r
288 for (var s = 0; s < this.sequences.length; s++) {\r
289 smsa[0][s] = this.sequences[s].getSeq (gapCharacter);\r
290 }\r
291 }return smsa;\r
292 }, "~S");\r
293 Clazz.defineMethod (c$, "getUpdatedView", \r
294 function (nvismsa, orders, gapCharacter) {\r
295 if (this.sequences == null || this.width <= 0) {\r
296 throw  new Error (jalview.util.MessageManager.getString ("error.empty_view_cannot_be_updated"));\r
297 }if (nvismsa == null) {\r
298 throw  new Error ("nvismsa==null. use getAlignmentAndColumnSelection() instead.");\r
299 }if (this.contigs != null && this.contigs.length > 0) {\r
300 var alignment =  new Array (this.sequences.length);\r
301 var columnselection =  new jalview.datamodel.ColumnSelection ();\r
302 if (this.contigs != null && this.contigs.length > 0) {\r
303 var start = 0;\r
304 var nwidth = 0;\r
305 var owidth = this.width;\r
306 var j = 0;\r
307 for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
308 owidth += this.contigs[contig + 2];\r
309 if (this.contigs[contig + 1] - start > 0) {\r
310 var swidth = 0;\r
311 if (nvismsa[j] != null) {\r
312 var mseq = nvismsa[j];\r
313 var order = (orders == null) ? null : orders[j];\r
314 j++;\r
315 if (mseq.length != this.sequences.length) {\r
316 throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_number_of_sequences_in_block",  Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (mseq.length).toString (), Integer.$valueOf (this.sequences.length).toString ()])));\r
317 }swidth = mseq[0].getLength ();\r
318 for (var s = 0; s < mseq.length; s++) {\r
319 if (alignment[s] == null) {\r
320 alignment[s] = mseq[s];\r
321 } else {\r
322 alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());\r
323 if (mseq[s].getStart () <= mseq[s].getEnd ()) {\r
324 alignment[s].setEnd (mseq[s].getEnd ());\r
325 }if (order != null) {\r
326 order.updateSequence (mseq[s], alignment[s]);\r
327 }}}\r
328 } else {\r
329 if (true) {\r
330 for (var s = 0; s < this.sequences.length; s++) {\r
331 var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);\r
332 if (swidth < oseq.getLength ()) {\r
333 swidth = oseq.getLength ();\r
334 }if (alignment[s] == null) {\r
335 alignment[s] = oseq;\r
336 } else {\r
337 alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());\r
338 if (oseq.getEnd () >= oseq.getStart ()) {\r
339 alignment[s].setEnd (oseq.getEnd ());\r
340 }}}\r
341 }j++;\r
342 }nwidth += swidth;\r
343 }start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
344 for (var s = 0; s < this.sequences.length; s++) {\r
345 var hseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (this.contigs[contig + 1], start);\r
346 if (alignment[s] == null) {\r
347 alignment[s] = hseq;\r
348 } else {\r
349 alignment[s].setSequence (alignment[s].getSequenceAsString () + hseq.getSequenceAsString ());\r
350 if (hseq.getEnd () >= hseq.getStart ()) {\r
351 alignment[s].setEnd (hseq.getEnd ());\r
352 }}}\r
353 columnselection.hideColumns (nwidth, nwidth + this.contigs[contig + 2] - 1);\r
354 nwidth += this.contigs[contig + 2];\r
355 }\r
356 if (j < nvismsa.length) {\r
357 var swidth = 0;\r
358 if (nvismsa[j] != null) {\r
359 var mseq = nvismsa[j];\r
360 var order = (orders != null) ? orders[j] : null;\r
361 swidth = mseq[0].getLength ();\r
362 for (var s = 0; s < mseq.length; s++) {\r
363 if (alignment[s] == null) {\r
364 alignment[s] = mseq[s];\r
365 } else {\r
366 alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());\r
367 if (mseq[s].getEnd () >= mseq[s].getStart ()) {\r
368 alignment[s].setEnd (mseq[s].getEnd ());\r
369 }if (order != null) {\r
370 order.updateSequence (mseq[s], alignment[s]);\r
371 }}}\r
372 } else {\r
373 if (start < owidth) {\r
374 if (true) {\r
375 for (var s = 0; s < this.sequences.length; s++) {\r
376 var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, owidth + 1);\r
377 if (swidth < oseq.getLength ()) {\r
378 swidth = oseq.getLength ();\r
379 }if (alignment[s] == null) {\r
380 alignment[s] = oseq;\r
381 } else {\r
382 alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());\r
383 if (oseq.getEnd () >= oseq.getStart ()) {\r
384 alignment[s].setEnd (oseq.getEnd ());\r
385 }}}\r
386 nwidth += swidth;\r
387 } else {\r
388 throw  new Error (jalview.util.MessageManager.getString ("error.padding_not_yet_implemented"));\r
389 }}}}}return  Clazz.newArray (-1, [alignment, columnselection]);\r
390 } else {\r
391 if (nvismsa.length != 1) {\r
392 throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view",  Clazz.newArray (-1, [Integer.$valueOf (nvismsa.length).toString ()])));\r
393 }if (nvismsa[0] != null) {\r
394 return  Clazz.newArray (-1, [nvismsa[0],  new jalview.datamodel.ColumnSelection ()]);\r
395 } else {\r
396 return this.getAlignmentAndColumnSelection (gapCharacter);\r
397 }}}, "~A,~A,~S");\r
398 Clazz.defineMethod (c$, "getVisibleContigs", \r
399 function () {\r
400 if (this.contigs != null && this.contigs.length > 0) {\r
401 var start = 0;\r
402 var nvis = 0;\r
403 var fwidth = this.width;\r
404 for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
405 if ((this.contigs[contig + 1] - start) > 0) {\r
406 nvis++;\r
407 }fwidth += this.contigs[contig + 2];\r
408 start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
409 }\r
410 if (start < fwidth) {\r
411 nvis++;\r
412 }var viscontigs =  Clazz.newIntArray (nvis * 2, 0);\r
413 nvis = 0;\r
414 start = 0;\r
415 for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
416 if ((this.contigs[contig + 1] - start) > 0) {\r
417 viscontigs[nvis] = start;\r
418 viscontigs[nvis + 1] = this.contigs[contig + 1] - 1;\r
419 nvis += 2;\r
420 }start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
421 }\r
422 if (start < fwidth) {\r
423 viscontigs[nvis] = start;\r
424 viscontigs[nvis + 1] = fwidth;\r
425 nvis += 2;\r
426 }return viscontigs;\r
427 } else {\r
428 return  Clazz.newIntArray (-1, [0, this.width]);\r
429 }});\r
430 Clazz.defineMethod (c$, "getAlignmentOrigin", \r
431 function () {\r
432 return this.firstCol;\r
433 });\r
434 Clazz.defineMethod (c$, "getVisibleContigMapFor", \r
435 function (gapMap) {\r
436 var delMap = null;\r
437 var viscontigs = this.getVisibleContigs ();\r
438 var spos = 0;\r
439 var i = 0;\r
440 if (viscontigs != null) {\r
441 delMap =  Clazz.newIntArray (gapMap.length, 0);\r
442 for (var contig = 0; contig < viscontigs.length; contig += 2) {\r
443 while (spos < gapMap.length && gapMap[spos] < viscontigs[contig]) {\r
444 spos++;\r
445 }\r
446 while (spos < gapMap.length && gapMap[spos] <= viscontigs[contig + 1]) {\r
447 delMap[i++] = spos++;\r
448 }\r
449 }\r
450 var tmap =  Clazz.newIntArray (i, 0);\r
451 System.arraycopy (delMap, 0, tmap, 0, i);\r
452 delMap = tmap;\r
453 }return delMap;\r
454 }, "~A");\r
455 Clazz.defineMethod (c$, "getEditedSequences", \r
456 function (gc, $delete) {\r
457 var msf = this.getSequences ();\r
458 var aln =  new Array (msf.length);\r
459 for (var i = 0, j = msf.length; i < j; i++) {\r
460 aln[i] = msf[i].getSeq (gc);\r
461 }\r
462 if ($delete) {\r
463 var sqs = this.getSequenceStrings (gc);\r
464 for (var i = 0; i < sqs.length; i++) {\r
465 aln[i].setSequence (sqs[i]);\r
466 sqs[i] = null;\r
467 }\r
468 }return aln;\r
469 }, "~S,~B");\r
470 c$.summariseAlignmentView = Clazz.defineMethod (c$, "summariseAlignmentView", \r
471 function (view, os) {\r
472 os.print ("View has " + view.sequences.length + " of which ");\r
473 if (view.selected == null) {\r
474 os.print ("None");\r
475 } else {\r
476 os.print (" " + view.selected.size ());\r
477 }os.println (" are selected.");\r
478 os.print ("View is " + view.getWidth () + " columns wide");\r
479 var viswid = 0;\r
480 var contigs = view.getContigs ();\r
481 if (contigs != null) {\r
482 viswid = view.width;\r
483 for (var i = 0; i < contigs.length; i += 3) {\r
484 viswid += contigs[i + 2];\r
485 }\r
486 os.println ("with " + viswid + " visible columns spread over " + Clazz.doubleToInt (contigs.length / 3) + " regions.");\r
487 } else {\r
488 viswid = view.width;\r
489 os.println (".");\r
490 }if (view.scGroups != null) {\r
491 os.println ("There are " + view.scGroups.size () + " groups defined on the view.");\r
492 for (var g = 0; g < view.scGroups.size (); g++) {\r
493 var sgr = view.scGroups.get (g);\r
494 os.println ("Group " + g + ": Name = " + sgr.sg.getName () + " Contains " + sgr.seqs.size () + " Seqs.");\r
495 os.println ("This group runs from " + sgr.sg.getStartRes () + " to " + sgr.sg.getEndRes ());\r
496 for (var s = 0; s < sgr.seqs.size (); s++) {\r
497 if (!(sgr.seqs.elementAt (s)).isMemberOf (sgr)) {\r
498 os.println ("** WARNING: sequence " + (sgr.seqs.elementAt (s)).toString () + " is not marked as member of group.");\r
499 }}\r
500 }\r
501 var visal = view.getVisibleAlignment ('-');\r
502 if (visal != null) {\r
503 os.println ("Vis. alignment is " + visal.getWidth () + " wide and has " + visal.getHeight () + " seqs.");\r
504 if (visal.getGroups () != null && visal.getGroups ().size () > 0) {\r
505 var i = 1;\r
506 for (var sg, $sg = visal.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
507 os.println ("Group " + (i++) + " begins at column " + sg.getStartRes () + " and ends at " + sg.getEndRes ());\r
508 }\r
509 }}}}, "jalview.datamodel.AlignmentView,java.io.PrintStream");\r
510 c$.testSelectionViews = Clazz.defineMethod (c$, "testSelectionViews", \r
511 function (alignment, csel, selection) {\r
512 System.out.println ("Testing standard view creation:\n");\r
513 var view = null;\r
514 try {\r
515 System.out.println ("View with no hidden columns, no limit to selection, no groups to be collected:");\r
516 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, false);\r
517 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
518 } catch (e) {\r
519 if (Clazz.exceptionOf (e, Exception)) {\r
520 e.printStackTrace ();\r
521 System.err.println ("Failed to generate alignment with selection but no groups marked.");\r
522 } else {\r
523 throw e;\r
524 }\r
525 }\r
526 try {\r
527 System.out.println ("View with no hidden columns, no limit to selection, and all groups to be collected:");\r
528 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, true);\r
529 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
530 } catch (e) {\r
531 if (Clazz.exceptionOf (e, Exception)) {\r
532 e.printStackTrace ();\r
533 System.err.println ("Failed to generate alignment with selection marked but no groups marked.");\r
534 } else {\r
535 throw e;\r
536 }\r
537 }\r
538 try {\r
539 System.out.println ("View with no hidden columns, limited to selection and no groups to be collected:");\r
540 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, false);\r
541 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
542 } catch (e) {\r
543 if (Clazz.exceptionOf (e, Exception)) {\r
544 e.printStackTrace ();\r
545 System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");\r
546 } else {\r
547 throw e;\r
548 }\r
549 }\r
550 try {\r
551 System.out.println ("View with no hidden columns, limited to selection, and all groups to be collected:");\r
552 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, true);\r
553 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
554 } catch (e) {\r
555 if (Clazz.exceptionOf (e, Exception)) {\r
556 e.printStackTrace ();\r
557 System.err.println ("Failed to generate alignment with selection restricted and groups marked.");\r
558 } else {\r
559 throw e;\r
560 }\r
561 }\r
562 try {\r
563 System.out.println ("View *with* hidden columns, no limit to selection, no groups to be collected:");\r
564 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, false);\r
565 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
566 } catch (e) {\r
567 if (Clazz.exceptionOf (e, Exception)) {\r
568 e.printStackTrace ();\r
569 System.err.println ("Failed to generate alignment with selection but no groups marked.");\r
570 } else {\r
571 throw e;\r
572 }\r
573 }\r
574 try {\r
575 System.out.println ("View *with* hidden columns, no limit to selection, and all groups to be collected:");\r
576 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, true);\r
577 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
578 } catch (e) {\r
579 if (Clazz.exceptionOf (e, Exception)) {\r
580 e.printStackTrace ();\r
581 System.err.println ("Failed to generate alignment with selection marked but no groups marked.");\r
582 } else {\r
583 throw e;\r
584 }\r
585 }\r
586 try {\r
587 System.out.println ("View *with* hidden columns, limited to selection and no groups to be collected:");\r
588 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, false);\r
589 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
590 } catch (e) {\r
591 if (Clazz.exceptionOf (e, Exception)) {\r
592 e.printStackTrace ();\r
593 System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");\r
594 } else {\r
595 throw e;\r
596 }\r
597 }\r
598 try {\r
599 System.out.println ("View *with* hidden columns, limited to selection, and all groups to be collected:");\r
600 view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, true);\r
601 jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
602 } catch (e) {\r
603 if (Clazz.exceptionOf (e, Exception)) {\r
604 e.printStackTrace ();\r
605 System.err.println ("Failed to generate alignment with selection restricted and groups marked.");\r
606 } else {\r
607 throw e;\r
608 }\r
609 }\r
610 }, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");\r
611 c$.$AlignmentView$ScGroup$ = function () {\r
612 Clazz.pu$h ();\r
613 c$ = Clazz.decorateAsClass (function () {\r
614 Clazz.prepareCallback (this, arguments);\r
615 this.seqs = null;\r
616 this.sg = null;\r
617 Clazz.instantialize (this, arguments);\r
618 }, jalview.datamodel.AlignmentView, "ScGroup");\r
619 Clazz.makeConstructor (c$, \r
620 function () {\r
621 this.seqs =  new java.util.Vector ();\r
622 });\r
623 c$ = Clazz.p0p ();\r
624 };\r
625 });\r