From 3d451fd5cf0a9d719457846257ab0ac24bf7ef2d Mon Sep 17 00:00:00 2001 From: jprocter Date: Fri, 20 May 2005 15:17:00 +0000 Subject: [PATCH] Various sort methods added and bugs fixed (coping with associated trees and alignment orders from web services) --- src/jalview/analysis/AlignmentSorter.java | 110 +++++++++++++++++++++++------ 1 file changed, 88 insertions(+), 22 deletions(-) diff --git a/src/jalview/analysis/AlignmentSorter.java b/src/jalview/analysis/AlignmentSorter.java index 64682c1..48e771e 100755 --- a/src/jalview/analysis/AlignmentSorter.java +++ b/src/jalview/analysis/AlignmentSorter.java @@ -36,7 +36,12 @@ public class AlignmentSorter { // align.setGroups(newg); } - /** */ + /** + * Sort by Percentage Identity + * + * @param align AlignmentI + * @param s SequenceI + */ public static void sortByPID(AlignmentI align, SequenceI s) { int nSeq = align.getHeight(); @@ -72,16 +77,17 @@ public class AlignmentSorter { } private static void setOrder(AlignmentI align, Vector tmp) { - setOrder(align,vectorToArray(tmp)); + setOrder(align,vectorSubsetToArray(tmp, align.getSequences())); } private static void setOrder(AlignmentI align, SequenceI [] seqs) { -// NOTE: DO NOT USE align.setSequenceAt() here - it will NOT work - for (int i = 0; i < seqs.length; i++) { - align.getSequences().setElementAt(seqs[i],i); - } - } + // NOTE: DO NOT USE align.setSequenceAt() here - it will NOT work + Vector algn = align.getSequences(); + + for (int i = 0, p = 0; i < seqs.length; i++) + algn.setElementAt(seqs[i], p++); + } /** */ static boolean sortIdAscending = true; public static void sortByID(AlignmentI align) { @@ -144,27 +150,70 @@ public class AlignmentSorter { return seqs; } + private static SequenceI [] vectorSubsetToArray(Vector tmp, Vector mask) { + Vector seqs = new Vector(); + int i,m, p; + boolean[] tmask = new boolean[m=mask.size()]; + for (i=0; i