X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fanalysis%2FAlignmentSorter.java;h=9353aab4449bb5f41634d437d98da42deba0d8c2;hb=bc71174b43a00b00e6a5229fc0ae22d4df9fb14e;hp=ab1e62d546f420bd8e790b674fe6bedc6d0bd7fa;hpb=d6ab080a4e9181800bbecb6525e6329c10246aab;p=jalview.git diff --git a/src/jalview/analysis/AlignmentSorter.java b/src/jalview/analysis/AlignmentSorter.java index ab1e62d..9353aab 100755 --- a/src/jalview/analysis/AlignmentSorter.java +++ b/src/jalview/analysis/AlignmentSorter.java @@ -64,6 +64,8 @@ public class AlignmentSorter */ private static String lastSortByFeatureScore; + private static boolean sortLengthAscending; + /** * Sort by Percentage Identity w.r.t. s * @@ -202,6 +204,38 @@ public class AlignmentSorter sortIdAscending = !sortIdAscending; } + /** + * Sorts by sequence length + * + * @param align + * The alignment object to sort + */ + public static void sortByLength(AlignmentI align) + { + int nSeq = align.getHeight(); + + float[] length = new float[nSeq]; + SequenceI[] seqs = new SequenceI[nSeq]; + + for (int i = 0; i < nSeq; i++) + { + seqs[i] = align.getSequenceAt(i); + length[i] = (float) (seqs[i].getEnd()-seqs[i].getStart()); + } + + QuickSort.sort(length, seqs); + + if (sortLengthAscending) + { + setReverseOrder(align, seqs); + } + else + { + setOrder(align, seqs); + } + + sortLengthAscending = !sortLengthAscending; + } /** * Sorts the alignment by size of group.