JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / jalview / datamodel / SeqCigar.js
index c9304ac..d35d16f 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.SeqCigar", ["jalview.analysis.AlignSeq", "$.SeqsetUtils", "jalview.datamodel.Sequence", "jalview.util.Comparison", "$.MessageManager", "$.ShiftList", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.start = 0;\r
-this.end = 0;\r
-this.refseq = null;\r
-this.seqProps = null;\r
-this.selGroups = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SeqCigar", jalview.datamodel.CigarSimple);\r
-Clazz.defineMethod (c$, "getRefSeq", \r
-function () {\r
-return this.refseq;\r
-});\r
-Clazz.defineMethod (c$, "getStart", \r
-function () {\r
-return this.start;\r
-});\r
-Clazz.defineMethod (c$, "getEnd", \r
-function () {\r
-return this.end;\r
-});\r
-Clazz.overrideMethod (c$, "getSequenceString", \r
-function (GapChar) {\r
-return (this.length == 0) ? "" : this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar)[0];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSeq", \r
-function (GapChar) {\r
-var seq;\r
-if (this.refseq == null || this.length == 0) {\r
-return null;\r
-}var edit_result = this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar);\r
-if (edit_result == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unexpected_null_from_get_sequence_and_deletions"));\r
-}var bounds = edit_result[1];\r
-seq =  new jalview.datamodel.Sequence (this.refseq.getName (), edit_result[0], this.refseq.getStart () + this.start + bounds[0], this.refseq.getStart () + this.start + ((bounds[2] == 0) ? -1 : bounds[2]));\r
-seq.setDescription (this.refseq.getDescription ());\r
-var sstart = seq.getStart ();\r
-var send = seq.getEnd ();\r
-if (this.seqProps != null) {\r
-jalview.analysis.SeqsetUtils.SeqCharacterUnhash (seq, this.seqProps);\r
-}seq.setDatasetSequence (this.refseq);\r
-seq.setStart (sstart);\r
-seq.setEnd (send);\r
-return seq;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "_setSeq", \r
-($fz = function (seq, initialDeletion, _s, _e) {\r
-var hasgaps = false;\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_set_seq_null"));\r
-}if (_s < 0) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_s",  Clazz.newArray (-1, [Integer.$valueOf (_s).toString ()])));\r
-}var seq_string = seq.getSequenceAsString ();\r
-if (_e == 0 || _e < _s || _e > seq_string.length) {\r
-_e = seq_string.length;\r
-}this.start = seq.findPosition (_s) - seq.getStart ();\r
-this.end = seq.findPosition (_e) - seq.getStart ();\r
-var l_ungapped = this.end - this.start;\r
-var ds = seq.getDatasetSequence ();\r
-if (ds == null) {\r
-var ungapped = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (seq_string));\r
-l_ungapped = ungapped.length;\r
-if (l_ungapped == seq.getLength ()) {\r
-ds = seq;\r
-} else {\r
-ds =  new jalview.datamodel.Sequence (seq.getName (), ungapped, seq.getStart (), seq.getStart () + ungapped.length - 1);\r
-}}if (ds.getStart () < seq.getStart ()) {\r
-var offset = seq.getStart () - ds.getStart ();\r
-if (initialDeletion) {\r
-this.addDeleted (_s + offset);\r
-this.start = 0;\r
-this.end += offset;\r
-} else {\r
-this.start += offset;\r
-this.end += offset;\r
-}}if (l_ungapped != (_e - _s)) {\r
-hasgaps = true;\r
-}this.refseq = ds;\r
-this.seqProps = jalview.analysis.SeqsetUtils.SeqCharacterHash (seq);\r
-if (this.end > ds.getLength ()) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_seqcigar_possible"));\r
-}return hasgaps;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,~B,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (seq, operation, range) {\r
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implmentation_bug_seq_null"));\r
-}if (operation.length != range.length) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_cigar_operation_list_range_list"));\r
-}if (operation != null) {\r
-this.operation =  Clazz.newCharArray (operation.length + this._inc_length, '\0');\r
-this.range =  Clazz.newIntArray (operation.length + this._inc_length, 0);\r
-if (this._setSeq (seq, false, 0, 0)) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));\r
-}for (var i = this.length, j = 0; j < operation.length; i++, j++) {\r
-var op = operation[j];\r
-if (op != 'M' && op != 'I' && op != 'D') {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_bug_cigar_operation",  Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (op.charCodeAt (0)).toString (), Integer.$valueOf ('M'.charCodeAt (0)).toString (), Integer.$valueOf ('I'.charCodeAt (0)).toString (), Integer.$valueOf ('D'.charCodeAt (0)).toString ()])));\r
-}this.operation[i] = op;\r
-this.range[i] = range[j];\r
-}\r
-this.length += operation.length;\r
-} else {\r
-this.operation = null;\r
-this.range = null;\r
-this.length = 0;\r
-if (this._setSeq (seq, false, 0, 0)) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));\r
-}}}, "jalview.datamodel.SequenceI,~A,~A");\r
-Clazz.defineMethod (c$, "addMatch", \r
-function (range) {\r
-this.addOperation ('M', range);\r
-}, "~N");\r
-c$.addSequenceOps = Clazz.defineMethod (c$, "addSequenceOps", \r
-function (cigar, seq, startpos, endpos, initialDeletions) {\r
-var op = '\u0000';\r
-var range = 0;\r
-var p = 0;\r
-var res = seq.getLength ();\r
-if (!initialDeletions) {\r
-p = startpos;\r
-}while (p <= endpos) {\r
-var isGap = (p < res) ? jalview.util.Comparison.isGap (seq.getCharAt (p)) : true;\r
-if ((startpos <= p) && (p <= endpos)) {\r
-if (isGap) {\r
-if (range > 0 && op != 'I') {\r
-cigar.addOperation (op, range);\r
-range = 0;\r
-}op = 'I';\r
-range++;\r
-} else {\r
-if (range > 0 && op != 'M') {\r
-cigar.addOperation (op, range);\r
-range = 0;\r
-}op = 'M';\r
-range++;\r
-}} else {\r
-if (!isGap) {\r
-if (range > 0 && op != 'D') {\r
-cigar.addOperation (op, range);\r
-range = 0;\r
-}op = 'D';\r
-range++;\r
-} else {\r
-}}p++;\r
-}\r
-if (range > 0) {\r
-cigar.addOperation (op, range);\r
-}}, "jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");\r
-Clazz.makeConstructor (c$, \r
-function (seq) {\r
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));\r
-}this._setSeq (seq, false, 0, 0);\r
-jalview.datamodel.SeqCigar.addSequenceOps (this, seq, 0, seq.getLength () - 1, false);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.makeConstructor (c$, \r
-function (seq, start, end) {\r
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));\r
-}this._setSeq (seq, false, start, end + 1);\r
-jalview.datamodel.SeqCigar.addSequenceOps (this, seq, start, end, false);\r
-}, "jalview.datamodel.SequenceI,~N,~N");\r
-c$.parseCigar = Clazz.defineMethod (c$, "parseCigar", \r
-function (seq, cigarString) {\r
-var opsandrange = jalview.datamodel.CigarBase.parseCigarString (cigarString);\r
-return  new jalview.datamodel.SeqCigar (seq, opsandrange[0], opsandrange[1]);\r
-}, "jalview.datamodel.SequenceI,~S");\r
-c$.createAlignmentSequences = Clazz.defineMethod (c$, "createAlignmentSequences", \r
-function (alseqs, gapCharacter, colsel, segments) {\r
-var seqs =  new Array (alseqs.length);\r
-var g_seqs =  new Array (alseqs.length);\r
-var alseqs_string =  new Array (alseqs.length);\r
-var gs_regions =  new Array (alseqs.length);\r
-for (var i = 0; i < alseqs.length; i++) {\r
-alseqs_string[i] = alseqs[i].getRefSeq ().getSequenceAsString (alseqs[i].start, alseqs[i].end);\r
-gs_regions[i] = alseqs[i].getSequenceAndDeletions (alseqs_string[i], gapCharacter);\r
-if (gs_regions[i] == null) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cigar_seq_no_operations",  Clazz.newArray (-1, [Integer.$valueOf (i).toString ()])));\r
-}g_seqs[i] =  new StringBuffer ((gs_regions[i])[0]);\r
-}\r
-var shifts =  new jalview.util.ShiftList ();\r
-for (var i = 0; i < alseqs.length; i++) {\r
-var gs_region = ((gs_regions[i])[2]);\r
-if (gs_region != null) {\r
-for (var hr = 0; hr < gs_region.length; hr++) {\r
-var region = gs_region[hr];\r
-var insert =  Clazz.newCharArray (region[1] - region[0] + 1, '\0');\r
-for (var s = 0; s < insert.length; s++) {\r
-insert[s] = gapCharacter;\r
-}\r
-var inspos = shifts.shift (region[2]);\r
-for (var s = 0; s < alseqs.length; s++) {\r
-if (s != i) {\r
-if (g_seqs[s].length () <= inspos) {\r
-for (var l = inspos - g_seqs[s].length (); l > 0; l--) {\r
-g_seqs[s].append (gapCharacter);\r
-}\r
-}g_seqs[s].insert (inspos, insert);\r
-} else {\r
-g_seqs[s].insert (inspos, alseqs_string[i].substring (region[0], region[1] + 1));\r
-}}\r
-shifts.addShift (region[2], insert.length);\r
-if (segments == null) {\r
-colsel.hideColumns (inspos, inspos + insert.length - 1);\r
-}}\r
-}}\r
-for (var i = 0; i < alseqs.length; i++) {\r
-var bounds = ((gs_regions[i])[1]);\r
-var ref = alseqs[i].getRefSeq ();\r
-seqs[i] =  new jalview.datamodel.Sequence (ref.getName (), g_seqs[i].toString (), ref.getStart () + alseqs[i].start + bounds[0], ref.getStart () + alseqs[i].start + (bounds[2] == 0 ? -1 : bounds[2]));\r
-seqs[i].setDatasetSequence (ref);\r
-seqs[i].setDescription (ref.getDescription ());\r
-}\r
-if (segments != null) {\r
-for (var i = 0; i < segments.length; i += 3) {\r
-colsel.hideColumns (segments[i + 1], segments[i + 1] + segments[i + 2] - 1);\r
-}\r
-}return seqs;\r
-}, "~A,~S,jalview.datamodel.ColumnSelection,~A");\r
-Clazz.defineMethod (c$, "setGroupMembership", \r
-function (group) {\r
-if (this.selGroups == null) {\r
-this.selGroups =  new java.util.Hashtable ();\r
-}this.selGroups.put (group,  Clazz.newIntArray (0, 0));\r
-}, "~O");\r
-Clazz.defineMethod (c$, "removeGroupMembership", \r
-function (group) {\r
-if (this.selGroups != null && this.selGroups.containsKey (group)) {\r
-this.selGroups.remove (group);\r
-return true;\r
-}return false;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "clearMemberships", \r
-function () {\r
-if (this.selGroups != null) {\r
-this.selGroups.clear ();\r
-}this.selGroups = null;\r
-});\r
-Clazz.defineMethod (c$, "getAllMemberships", \r
-function () {\r
-if (this.selGroups == null) {\r
-return null;\r
-}var mmbs =  new Array (this.selGroups.size ());\r
-var en = this.selGroups.keys ();\r
-for (var i = 0; en.hasMoreElements (); i++) {\r
-mmbs[i] = en.nextElement ();\r
-}\r
-return mmbs;\r
-});\r
-Clazz.defineMethod (c$, "isMemberOf", \r
-function (sgr) {\r
-return (this.selGroups != null) && this.selGroups.get (sgr) != null;\r
-}, "~O");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.SeqCigar", ["jalview.analysis.AlignSeq", "$.SeqsetUtils", "jalview.datamodel.Sequence", "jalview.util.Comparison", "$.MessageManager", "$.ShiftList", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.start = 0;
+this.end = 0;
+this.refseq = null;
+this.seqProps = null;
+this.selGroups = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SeqCigar", jalview.datamodel.CigarSimple);
+Clazz.defineMethod (c$, "getRefSeq", 
+function () {
+return this.refseq;
+});
+Clazz.defineMethod (c$, "getStart", 
+function () {
+return this.start;
+});
+Clazz.defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz.overrideMethod (c$, "getSequenceString", 
+function (GapChar) {
+return (this.length == 0) ? "" : this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar)[0];
+}, "~S");
+Clazz.defineMethod (c$, "getSeq", 
+function (GapChar) {
+var seq;
+if (this.refseq == null || this.length == 0) {
+return null;
+}var edit_result = this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar);
+if (edit_result == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unexpected_null_from_get_sequence_and_deletions"));
+}var bounds = edit_result[1];
+seq =  new jalview.datamodel.Sequence (this.refseq.getName (), edit_result[0], this.refseq.getStart () + this.start + bounds[0], this.refseq.getStart () + this.start + ((bounds[2] == 0) ? -1 : bounds[2]));
+seq.setDescription (this.refseq.getDescription ());
+var sstart = seq.getStart ();
+var send = seq.getEnd ();
+if (this.seqProps != null) {
+jalview.analysis.SeqsetUtils.SeqCharacterUnhash (seq, this.seqProps);
+}seq.setDatasetSequence (this.refseq);
+seq.setStart (sstart);
+seq.setEnd (send);
+return seq;
+}, "~S");
+Clazz.defineMethod (c$, "_setSeq", 
+($fz = function (seq, initialDeletion, _s, _e) {
+var hasgaps = false;
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_set_seq_null"));
+}if (_s < 0) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_s",  Clazz.newArray (-1, [Integer.$valueOf (_s).toString ()])));
+}var seq_string = seq.getSequenceAsString ();
+if (_e == 0 || _e < _s || _e > seq_string.length) {
+_e = seq_string.length;
+}this.start = seq.findPosition (_s) - seq.getStart ();
+this.end = seq.findPosition (_e) - seq.getStart ();
+var l_ungapped = this.end - this.start;
+var ds = seq.getDatasetSequence ();
+if (ds == null) {
+var ungapped = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (seq_string));
+l_ungapped = ungapped.length;
+if (l_ungapped == seq.getLength ()) {
+ds = seq;
+} else {
+ds =  new jalview.datamodel.Sequence (seq.getName (), ungapped, seq.getStart (), seq.getStart () + ungapped.length - 1);
+}}if (ds.getStart () < seq.getStart ()) {
+var offset = seq.getStart () - ds.getStart ();
+if (initialDeletion) {
+this.addDeleted (_s + offset);
+this.start = 0;
+this.end += offset;
+} else {
+this.start += offset;
+this.end += offset;
+}}if (l_ungapped != (_e - _s)) {
+hasgaps = true;
+}this.refseq = ds;
+this.seqProps = jalview.analysis.SeqsetUtils.SeqCharacterHash (seq);
+if (this.end > ds.getLength ()) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_seqcigar_possible"));
+}return hasgaps;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,~B,~N,~N");
+Clazz.makeConstructor (c$, 
+function (seq, operation, range) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implmentation_bug_seq_null"));
+}if (operation.length != range.length) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_cigar_operation_list_range_list"));
+}if (operation != null) {
+this.operation =  Clazz.newCharArray (operation.length + this._inc_length, '\0');
+this.range =  Clazz.newIntArray (operation.length + this._inc_length, 0);
+if (this._setSeq (seq, false, 0, 0)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}for (var i = this.length, j = 0; j < operation.length; i++, j++) {
+var op = operation[j];
+if (op != 'M' && op != 'I' && op != 'D') {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_bug_cigar_operation",  Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (op.charCodeAt (0)).toString (), Integer.$valueOf ('M'.charCodeAt (0)).toString (), Integer.$valueOf ('I'.charCodeAt (0)).toString (), Integer.$valueOf ('D'.charCodeAt (0)).toString ()])));
+}this.operation[i] = op;
+this.range[i] = range[j];
+}
+this.length += operation.length;
+} else {
+this.operation = null;
+this.range = null;
+this.length = 0;
+if (this._setSeq (seq, false, 0, 0)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}}}, "jalview.datamodel.SequenceI,~A,~A");
+Clazz.defineMethod (c$, "addMatch", 
+function (range) {
+this.addOperation ('M', range);
+}, "~N");
+c$.addSequenceOps = Clazz.defineMethod (c$, "addSequenceOps", 
+function (cigar, seq, startpos, endpos, initialDeletions) {
+var op = '\u0000';
+var range = 0;
+var p = 0;
+var res = seq.getLength ();
+if (!initialDeletions) {
+p = startpos;
+}while (p <= endpos) {
+var isGap = (p < res) ? jalview.util.Comparison.isGap (seq.getCharAt (p)) : true;
+if ((startpos <= p) && (p <= endpos)) {
+if (isGap) {
+if (range > 0 && op != 'I') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'I';
+range++;
+} else {
+if (range > 0 && op != 'M') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'M';
+range++;
+}} else {
+if (!isGap) {
+if (range > 0 && op != 'D') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'D';
+range++;
+} else {
+}}p++;
+}
+if (range > 0) {
+cigar.addOperation (op, range);
+}}, "jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");
+Clazz.makeConstructor (c$, 
+function (seq) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, 0, 0);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, 0, seq.getLength () - 1, false);
+}, "jalview.datamodel.SequenceI");
+Clazz.makeConstructor (c$, 
+function (seq, start, end) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, start, end + 1);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, start, end, false);
+}, "jalview.datamodel.SequenceI,~N,~N");
+c$.parseCigar = Clazz.defineMethod (c$, "parseCigar", 
+function (seq, cigarString) {
+var opsandrange = jalview.datamodel.CigarBase.parseCigarString (cigarString);
+return  new jalview.datamodel.SeqCigar (seq, opsandrange[0], opsandrange[1]);
+}, "jalview.datamodel.SequenceI,~S");
+c$.createAlignmentSequences = Clazz.defineMethod (c$, "createAlignmentSequences", 
+function (alseqs, gapCharacter, colsel, segments) {
+var seqs =  new Array (alseqs.length);
+var g_seqs =  new Array (alseqs.length);
+var alseqs_string =  new Array (alseqs.length);
+var gs_regions =  new Array (alseqs.length);
+for (var i = 0; i < alseqs.length; i++) {
+alseqs_string[i] = alseqs[i].getRefSeq ().getSequenceAsString (alseqs[i].start, alseqs[i].end);
+gs_regions[i] = alseqs[i].getSequenceAndDeletions (alseqs_string[i], gapCharacter);
+if (gs_regions[i] == null) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cigar_seq_no_operations",  Clazz.newArray (-1, [Integer.$valueOf (i).toString ()])));
+}g_seqs[i] =  new StringBuffer ((gs_regions[i])[0]);
+}
+var shifts =  new jalview.util.ShiftList ();
+for (var i = 0; i < alseqs.length; i++) {
+var gs_region = ((gs_regions[i])[2]);
+if (gs_region != null) {
+for (var hr = 0; hr < gs_region.length; hr++) {
+var region = gs_region[hr];
+var insert =  Clazz.newCharArray (region[1] - region[0] + 1, '\0');
+for (var s = 0; s < insert.length; s++) {
+insert[s] = gapCharacter;
+}
+var inspos = shifts.shift (region[2]);
+for (var s = 0; s < alseqs.length; s++) {
+if (s != i) {
+if (g_seqs[s].length () <= inspos) {
+for (var l = inspos - g_seqs[s].length (); l > 0; l--) {
+g_seqs[s].append (gapCharacter);
+}
+}g_seqs[s].insert (inspos, insert);
+} else {
+g_seqs[s].insert (inspos, alseqs_string[i].substring (region[0], region[1] + 1));
+}}
+shifts.addShift (region[2], insert.length);
+if (segments == null) {
+colsel.hideColumns (inspos, inspos + insert.length - 1);
+}}
+}}
+for (var i = 0; i < alseqs.length; i++) {
+var bounds = ((gs_regions[i])[1]);
+var ref = alseqs[i].getRefSeq ();
+seqs[i] =  new jalview.datamodel.Sequence (ref.getName (), g_seqs[i].toString (), ref.getStart () + alseqs[i].start + bounds[0], ref.getStart () + alseqs[i].start + (bounds[2] == 0 ? -1 : bounds[2]));
+seqs[i].setDatasetSequence (ref);
+seqs[i].setDescription (ref.getDescription ());
+}
+if (segments != null) {
+for (var i = 0; i < segments.length; i += 3) {
+colsel.hideColumns (segments[i + 1], segments[i + 1] + segments[i + 2] - 1);
+}
+}return seqs;
+}, "~A,~S,jalview.datamodel.ColumnSelection,~A");
+Clazz.defineMethod (c$, "setGroupMembership", 
+function (group) {
+if (this.selGroups == null) {
+this.selGroups =  new java.util.Hashtable ();
+}this.selGroups.put (group,  Clazz.newIntArray (0, 0));
+}, "~O");
+Clazz.defineMethod (c$, "removeGroupMembership", 
+function (group) {
+if (this.selGroups != null && this.selGroups.containsKey (group)) {
+this.selGroups.remove (group);
+return true;
+}return false;
+}, "~O");
+Clazz.defineMethod (c$, "clearMemberships", 
+function () {
+if (this.selGroups != null) {
+this.selGroups.clear ();
+}this.selGroups = null;
+});
+Clazz.defineMethod (c$, "getAllMemberships", 
+function () {
+if (this.selGroups == null) {
+return null;
+}var mmbs =  new Array (this.selGroups.size ());
+var en = this.selGroups.keys ();
+for (var i = 0; en.hasMoreElements (); i++) {
+mmbs[i] = en.nextElement ();
+}
+return mmbs;
+});
+Clazz.defineMethod (c$, "isMemberOf", 
+function (sgr) {
+return (this.selGroups != null) && this.selGroups.get (sgr) != null;
+}, "~O");
+});