JAL-3748 don’t trash start/end on SequenceI reconstructed from a SeqCigar via SeqsetU...
authorJim Procter <jprocter@issues.jalview.org>
Tue, 22 Sep 2020 14:09:51 +0000 (15:09 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Tue, 22 Sep 2020 14:10:08 +0000 (15:10 +0100)
src/jalview/analysis/SeqsetUtils.java
src/jalview/datamodel/SeqCigar.java

index fdca89d..891e295 100755 (executable)
@@ -84,6 +84,20 @@ public class SeqsetUtils
    */
   public static boolean SeqCharacterUnhash(SequenceI sq, Hashtable sqinfo)
   {
+    return SeqCharacterUnhash(sq, sqinfo, false, false);
+  }
+
+  /**
+   * restore some characteristics for a sequence from its hash
+   * @param sq
+   * @param sqinfo
+   * @param excludeLimits - when true, start/end is left unmodified
+   * @param excludeFeatures - when true, features are not restored from stashed vector
+   * @return true if sequence's name was modified
+   */
+          
+  public static boolean SeqCharacterUnhash(SequenceI sq, Hashtable sqinfo, boolean excludeLimits,boolean excludeFeatures)
+  {
     boolean namePresent = true;
     if (sqinfo == null)
     {
@@ -110,13 +124,13 @@ public class SeqsetUtils
       sq.setPDBId(pdbid);
     }
 
-    if ((start != null) && (end != null))
+    if (!excludeLimits && (start != null) && (end != null))
     {
       sq.setStart(start.intValue());
       sq.setEnd(end.intValue());
     }
-
-    if (sfeatures != null && !sfeatures.isEmpty())
+    // TODO: drop this completely since we should not manipulate sequenceFeatures as a vector any more
+    if (!excludeFeatures && sfeatures != null && !sfeatures.isEmpty())
     {
       sq.setSequenceFeatures(sfeatures);
     }
index c282d6e..34697b3 100644 (file)
@@ -587,7 +587,7 @@ public class SeqCigar extends CigarSimple
                       + (bounds[2] == 0 ? -1 : bounds[2]));
       seqs[i].setDatasetSequence(ref);
       seqs[i].setDescription(ref.getDescription());
-      SeqsetUtils.SeqCharacterUnhash(seqs[i],alseqs[i].seqProps);
+      SeqsetUtils.SeqCharacterUnhash(seqs[i],alseqs[i].seqProps,true,true);
     }
     if (segments != null)
     {