create dataset sequence method
authorjprocter <Jim Procter>
Thu, 30 Aug 2007 11:40:09 +0000 (11:40 +0000)
committerjprocter <Jim Procter>
Thu, 30 Aug 2007 11:40:09 +0000 (11:40 +0000)
src/jalview/datamodel/Sequence.java
src/jalview/datamodel/SequenceI.java

index 257f88a..65857ce 100755 (executable)
@@ -882,6 +882,29 @@ public class Sequence
     }
     return seq;
   }
+
+  /* (non-Javadoc)
+   * @see jalview.datamodel.SequenceI#createDatasetSequence()
+   */
+  public SequenceI createDatasetSequence()
+  {
+    if (datasetSequence==null)
+    {
+      datasetSequence = new Sequence(getName(),
+              AlignSeq.extractGaps(
+                jalview.util.Comparison.GapChars,
+                getSequenceAsString()),
+            getStart(),
+            getEnd());
+      datasetSequence.setSequenceFeatures(getSequenceFeatures());
+      datasetSequence.setDescription(getDescription());
+      setSequenceFeatures(null);
+      // move database references onto dataset sequence
+      datasetSequence.setDBRef(getDBRef());
+      setDBRef(null);
+    }
+    return datasetSequence;
+  }
   /* (non-Javadoc)
    * @see jalview.datamodel.SequenceI#setAlignmentAnnotation(AlignmmentAnnotation[] annotations)
    */
index 5c15108..c11ebc2 100755 (executable)
@@ -282,5 +282,12 @@ public interface SequenceI
    * @return null or array of annotations.
    */
   public AlignmentAnnotation[] getAnnotation(String label);
+  /**
+   * create a new dataset sequence (if necessary) 
+   * for this sequence and sets this sequence to refer to it.
+   * This call will move any features or references on the sequence onto the dataset.
+   * @return dataset sequence for this sequence
+   */
+  public SequenceI createDatasetSequence();
 
 }