JAL-1807 still testing
[jalviewjs.git] / bin / jalview / datamodel / SeqCigar.js
index d35d16f..c9304ac 100644 (file)
-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");
-});
+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