JAL-2629 multiple HMMs can now be dropped onto an alignment
[jalview.git] / src / jalview / datamodel / Alignment.java
index 0b4ffd7..8ca859f 100755 (executable)
@@ -30,6 +30,7 @@ import jalview.util.MessageManager;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
@@ -1960,6 +1961,58 @@ public class Alignment implements AlignmentI
     hiddenCols = cols;
   }
 
+  @Override
+  public Map<Integer, SequenceI> getHMMConsensusSequences(boolean remove)
+  {
+    Map<Integer, SequenceI> seqs = new HashMap<>();
+    int position = 0;
+    for (SequenceI seq : sequences)
+    {
+      if (seq.isHMMConsensusSequence())
+      {
+        seqs.put(position, seq);
+        if (remove)
+        {
+          sequences.set(position, null);
+        }
+
+      }
+      position++;
+    }
+    boolean endReached = false;
+    int pos = 0;
+    while (!endReached)
+    {
+      if (sequences.get(pos) == null)
+      {
+        sequences.remove(pos);
+      }
+      else
+      {
+        pos++;
+      }
+      if (pos >= sequences.size())
+      {
+        endReached = true;
+      }
+    }
+
+    return seqs;
+  }
+
+  @Override
+  public List<SequenceI> getHMMConsensusSequences()
+  {
+    List<SequenceI> seqs = new ArrayList<>();
+    for (SequenceI seq : sequences)
+    {
+      if (seq.isHMMConsensusSequence())
+      {
+        seqs.add(seq);
+      }
+    }
+    return seqs;
+  }