JAL-3081 new method to get alignment sequence order lookup
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 8 Nov 2019 09:35:44 +0000 (09:35 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 8 Nov 2019 09:35:44 +0000 (09:35 +0000)
src/jalview/datamodel/Alignment.java
src/jalview/datamodel/AlignmentI.java

index ac00fa2..5739b7c 100755 (executable)
@@ -32,6 +32,7 @@ import java.util.Arrays;
 import java.util.BitSet;
 import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -2024,4 +2025,23 @@ public class Alignment implements AlignmentI
     }
   }
 
+  /**
+   * Returns a map from sequence to position (0, 1,...) in the alignment
+   */
+  @Override
+  public Map<SequenceI, Integer> getSequencePositions()
+  {
+    Map<SequenceI, Integer> map = new HashMap<>();
+
+    synchronized (sequences)
+    {
+      int i = sequences.size();
+      for (int j = 0; j < i; j++)
+      {
+        map.put(sequences.get(j), Integer.valueOf(j));
+      }
+    }
+    return map;
+  }
+
 }
index 93a2456..34457fc 100755 (executable)
@@ -624,4 +624,12 @@ public interface AlignmentI extends AnnotatedCollectionI
   public HiddenColumns propagateInsertions(SequenceI profileseq,
           AlignmentView input);
 
+  /**
+   * Returns a map whose key is a sequence in the alignment, and value the
+   * position (0, 1, 2...) of the sequence
+   * 
+   * @return
+   */
+  Map<SequenceI, Integer> getSequencePositions();
+
 }