X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FGrouping.java;h=88d3525ce175c71b3b1c3f6400b774d149b2208c;hb=038cb9c86641c3de91d8f330c5e3267507c46643;hp=ddf483b3dcd6f3836b5ba08254fa9acbdae31a40;hpb=fefc840cd97faf34b69ca387e8a38e3b9c79b92f;p=jalview.git diff --git a/src/jalview/analysis/Grouping.java b/src/jalview/analysis/Grouping.java index ddf483b..88d3525 100644 --- a/src/jalview/analysis/Grouping.java +++ b/src/jalview/analysis/Grouping.java @@ -21,11 +21,11 @@ package jalview.analysis; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -92,8 +92,8 @@ public class Grouping i = 0; for (String key : gps.keySet()) { - SequenceGroup group = new SequenceGroup(gps.get(key), "Subseq: " - + key, null, true, true, false, 0, width - 1); + SequenceGroup group = new SequenceGroup(gps.get(key), + "Subseq: " + key, null, true, true, false, 0, width - 1); groups[i++] = group; } @@ -110,10 +110,12 @@ public class Grouping * @param sequences * @param columnSelection * @param list + * @param hiddenColumns * @return */ public static SequenceGroup[] makeGroupsFromCols(SequenceI[] sequences, - ColumnSelection cs, List list) + ColumnSelection cs, List list, + HiddenColumns hiddenColumns) { // TODO: determine how to get/recover input data for group generation Map> gps = new HashMap>(); @@ -128,19 +130,27 @@ public class Grouping } } } + + /* + * get selected columns (in the order they were selected); + * note this could include right-to-left ranges + */ int[] spos = new int[cs.getSelected().size()]; int width = -1; int i = 0; for (Integer pos : cs.getSelected()) { - spos[i++] = pos.intValue(); + if (hiddenColumns == null || hiddenColumns.isVisible(pos.intValue())) + { + spos[i++] = pos.intValue(); + } } - - /* - * ensure column selection is in ascending order - */ - Arrays.sort(spos); - + if (i < spos.length) + { + // mark end of visible column position + spos[i] = -1; + } + // actual number of visible columns for (i = 0; i < sequences.length; i++) { int slen = sequences[i].getLength(); @@ -157,6 +167,10 @@ public class Grouping } for (int p : spos) { + if (p < 0) + { + break; + } if (p >= slen) { schar.append("~"); @@ -179,8 +193,8 @@ public class Grouping i = 0; for (String key : gps.keySet()) { - SequenceGroup group = new SequenceGroup(gps.get(key), "Subseq: " - + key, null, true, true, false, 0, width - 1); + SequenceGroup group = new SequenceGroup(gps.get(key), + "Subseq: " + key, null, true, true, false, 0, width - 1); groups[i++] = group; }