Extension to fastaFile for myhits
[jalview.git] / src / jalview / datamodel / Sequence.java
index 4687116..02fc543 100755 (executable)
@@ -47,10 +47,6 @@ public class Sequence implements SequenceI
   /** DOCUMENT ME!! */
   public SequenceFeature[] sequenceFeatures;
 
-  /** This array holds hidden sequences
-   * of which this sequence is the representitive member of a group
-   */
-  SequenceGroup hiddenSequences;
 
   /**
    * Creates a new Sequence object.
@@ -138,9 +134,14 @@ public class Sequence implements SequenceI
    */
   public Sequence(SequenceI seq)
   {
-    this(seq.getName(), seq.getSequence(), seq.getStart(), seq.getEnd());
+    this(seq.getName(),
+         seq.getSequence(),
+         seq.getStart(),
+         seq.getEnd());
+    description = seq.getDescription();
   }
 
+
   /**
    * DOCUMENT ME!
    *
@@ -377,7 +378,7 @@ public class Sequence implements SequenceI
     // JBPNote - left to user to pad the result here (TODO:Decide on this policy)
     if (start >= sequence.length)
     {
-      System.out.println("DOES THIS GET CALLED???");
+      return new char[0];
     }
 
     if (end >= sequence.length)
@@ -410,7 +411,10 @@ public class Sequence implements SequenceI
     // JBPNote - this is an incomplete copy.
     SequenceI nseq = new Sequence(this.getName(), seq, nstart, nend);
     nseq.setDescription(description);
-    nseq.setDatasetSequence(getDatasetSequence());
+    if (datasetSequence!=null)
+        nseq.setDatasetSequence(datasetSequence);
+    else
+        nseq.setDatasetSequence(this);
     return nseq;
   }
 
@@ -681,28 +685,35 @@ public class Sequence implements SequenceI
     this.annotation.addElement(annotation);
   }
 
-  public SequenceGroup getHiddenSequences()
-  {
-    return hiddenSequences;
-  }
 
-  public void addHiddenSequence(SequenceI seq)
-  {
-    if (hiddenSequences == null)
-    {
-      hiddenSequences = new SequenceGroup();
-    }
-    hiddenSequences.addSequence(seq, false);
+  /**
+   * test if this is a valid candidate for another
+   * sequence's dataset sequence.
+   *
+   */
+  private boolean isValidDatasetSequence() {
+      if (datasetSequence!=null)
+          return false;
+      for (int i=0;i<sequence.length; i++)
+          if (jalview.util.Comparison.isGap(sequence[i]))
+              return false;
+      return true;
+  }
+  /* (non-Javadoc)
+   * @see jalview.datamodel.SequenceI#deriveSequence()
+   */
+  public SequenceI deriveSequence() {
+      SequenceI seq = new Sequence(name, sequence, start, end);
+      seq.setDescription(description);
+      if (datasetSequence!=null) {
+          seq.setDatasetSequence(datasetSequence);
+      } else {
+          if (isValidDatasetSequence())
+              seq.setDatasetSequence(this);
+      }
+      return seq;
   }
 
-  public void showHiddenSequence(SequenceI seq)
-  {
-    hiddenSequences.deleteSequence(seq, false);
-    if (hiddenSequences.getSize(false) < 1)
-    {
-      hiddenSequences = null;
-    }
-  }
 }