JAL-1706 fixed to correctly restore the last dialog selection after
[jalview.git] / src / jalview / analysis / AlignmentUtils.java
index 7dec4ec..a4aeac7 100644 (file)
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -1278,7 +1279,7 @@ public class AlignmentUtils
   public static AlignmentI makeExonAlignment(SequenceI[] dna,
           Set<AlignedCodonFrame> mappings)
   {
-    Set<AlignedCodonFrame> newMappings = new HashSet<AlignedCodonFrame>();
+    Set<AlignedCodonFrame> newMappings = new LinkedHashSet<AlignedCodonFrame>();
     List<SequenceI> exonSequences = new ArrayList<SequenceI>();
     
     for (SequenceI dnaSeq : dna)
@@ -1346,8 +1347,8 @@ public class AlignmentUtils
       /*
        * Get the codon regions as { [2, 5], [7, 12], [14, 14] etc }
        */
-      List<int[]> exonRanges = seqMapping.getMap().getFromRanges();
-      for (int[] range : exonRanges)
+      final List<int[]> dnaExonRanges = seqMapping.getMap().getFromRanges();
+      for (int[] range : dnaExonRanges)
       {
         for (int pos = range[0]; pos <= range[1]; pos++)
         {
@@ -1389,6 +1390,8 @@ public class AlignmentUtils
               .getToRanges(),
               3, 1);
       newMapping.addMap(exon.getDatasetSequence(), seqMapping.getTo(), map);
+      MapList cdsToDnaMap = new MapList(dnaExonRanges, exonRange, 1, 1);
+      newMapping.addMap(dnaSeq, exon.getDatasetSequence(), cdsToDnaMap);
 
       exonSequences.add(exon);
     }