1 Clazz.declarePackage ("jalview.datamodel");
2 Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarArray", ["jalview.datamodel.CigarCigar", "$.SeqCigar", "java.lang.StringBuffer", "java.util.Vector"], function () {
3 c$ = Clazz.decorateAsClass (function () {
5 this.seqcigararray = false;
6 Clazz.instantialize (this, arguments);
7 }, jalview.datamodel, "CigarArray", jalview.datamodel.CigarBase);
8 Clazz.defineMethod (c$, "isSeqCigarArray",
10 return this.seqcigararray;
12 Clazz.makeConstructor (c$,
14 Clazz.superConstructor (this, jalview.datamodel.CigarArray);
15 this.seqcigararray = true;
16 if (cigars != null && cigars.length > 0) {
17 this.refCigars = new Array (cigars.length);
18 for (var c = 0; c < cigars.length; c++) {
19 this.refCigars[c] = cigars[c];
20 if (!((Clazz.instanceOf (cigars[c], jalview.datamodel.SeqCigar)) || Clazz.instanceOf (cigars[c], jalview.datamodel.CigarCigar))) {
21 this.seqcigararray = false;
24 Clazz.makeConstructor (c$,
25 function (alignment, columnSelection, selectionGroup) {
26 this.construct (jalview.datamodel.CigarArray.constructSeqCigarArray (alignment, selectionGroup));
27 this.constructFromAlignment (alignment, columnSelection != null ? columnSelection.getHiddenColumns () : null, selectionGroup);
28 }, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
29 c$._calcStartEndBounds = Clazz.defineMethod (c$, "_calcStartEndBounds",
30 ($fz = function (alignment, selectionGroup) {
31 var startend = Clazz.newIntArray (-1, [0, 0, 0]);
32 if (selectionGroup != null) {
33 startend[0] = selectionGroup.getSize ();
34 startend[1] = selectionGroup.getStartRes ();
35 startend[2] = selectionGroup.getEndRes ();
37 startend[0] = alignment.getHeight ();
38 startend[2] = alignment.getWidth () - 1;
40 }, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
41 c$.constructSeqCigarArray = Clazz.defineMethod (c$, "constructSeqCigarArray",
42 function (alignment, selectionGroup) {
46 var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
47 var start = _startend[1];
48 var end = _startend[2];
49 if (selectionGroup != null) {
50 iSize = selectionGroup.getSize ();
51 seqs = selectionGroup.getSequencesInOrder (alignment);
52 start = selectionGroup.getStartRes ();
53 end = selectionGroup.getEndRes ();
55 iSize = alignment.getHeight ();
56 seqs = alignment.getSequencesArray ();
57 end = alignment.getWidth () - 1;
58 }var selseqs = new Array (iSize);
59 for (i = 0; i < iSize; i++) {
60 selseqs[i] = new jalview.datamodel.SeqCigar (seqs[i], start, end);
63 }, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
64 Clazz.defineMethod (c$, "constructFromAlignment",
65 ($fz = function (alignment, list, selectionGroup) {
66 var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
67 var start = _startend[1];
68 var end = _startend[2];
74 for (var j = 0; new Boolean (last < end & j < list.size ()).valueOf (); j++) {
75 region = list.get (j);
76 hideStart = region[0];
78 if (hideStart < last) {
83 }}if (hideStart > end) {
87 }if (hideStart > hideEnd) {
89 }if (last < hideStart) {
90 this.addOperation ('M', hideStart - last);
91 }this.addOperation ('D', 1 + hideEnd - hideStart);
95 this.addOperation ('M', end - last + 1);
97 this.addOperation ('M', end - start + 1);
98 }}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceGroup");
99 Clazz.defineMethod (c$, "getArrayofSequenceAndDeletions",
101 if (this.refCigars == null || this.refCigars.length == 0 || this.length == 0) {
103 }var sqanddels = new Array (this.refCigars.length);
104 for (var c = 0; c < this.refCigars.length; c++) {
105 var refString = this.refCigars[c].getSequenceString (GapChar);
106 if (refString != null) {
107 sqanddels[c] = this.getSequenceAndDeletions (refString, GapChar);
113 Clazz.defineMethod (c$, "getSequenceString",
115 if (this.length == 0 || this.refCigars == null) {
117 }var seqStrings = new StringBuffer ();
118 var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
119 for (var c = 0; c < this.refCigars.length; c++) {
120 if (sqanddels[c] != null) {
121 seqStrings.append (sqanddels[c][0]);
122 sqanddels[c][0] = null;
123 }seqStrings.append ('\n');
125 return seqStrings.toString ();
127 Clazz.defineMethod (c$, "getSequenceStrings",
129 if (this.length == 0 || this.refCigars == null || this.refCigars.length == 0) {
131 }var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
132 var seqs = new Array (sqanddels.length);
133 for (var c = 0; c < this.refCigars.length; c++) {
134 seqs[c] = sqanddels[c][0];
138 Clazz.defineMethod (c$, "applyDeletions",
141 if (this.length == 0) {
147 while (i < this.length) {
148 if (this.operation[i] != 'D') {
149 if (this.operation[i] == 'M') {
150 cursor += this.range[i];
151 }vcursor += this.range[i++];
153 if (delpos == null) {
154 delpos = new java.util.Vector ();
155 }var delstart = cursor;
156 var delend = cursor + this.range[i] - 1;
157 delpos.addElement ( Clazz.newIntArray (-1, [vcursor + offset, this.range[i]]));
158 offset += this.range[i] - 1;
159 System.arraycopy (this.operation, i + 1, this.operation, i, this.length - i);
160 System.arraycopy (this.range, i + 1, this.range, i, this.length - i);
162 for (var s = 0; s < this.refCigars.length; s++) {
163 var d = this.refCigars[s].deleteRange (delstart, delend);
166 if (delpos != null) {
167 var pos = Clazz.newIntArray (delpos.size () * 2, 0);
168 for (var k = 0, l = delpos.size (); k < l; k++) {
169 var dr = (delpos.elementAt (k));
171 pos[k * 2 + 1] = dr[1];
172 delpos.setElementAt (null, k);
178 Clazz.defineMethod (c$, "getSeqCigarArray",
180 if (!this.isSeqCigarArray ()) {
182 }var sa = new Array (this.refCigars.length);
183 for (var i = 0; i < this.refCigars.length; i++) {
184 sa[i] = this.refCigars[i];