new copy constructor and intersect method
authorjprocter <Jim Procter>
Wed, 12 Nov 2008 11:07:46 +0000 (11:07 +0000)
committerjprocter <Jim Procter>
Wed, 12 Nov 2008 11:07:46 +0000 (11:07 +0000)
src/jalview/datamodel/SequenceGroup.java

index bb075aa..33739aa 100755 (executable)
@@ -110,6 +110,41 @@ public class SequenceGroup
     endRes = end;
     recalcConservation();
   }
+  /**
+   * copy constructor
+   * @param seqsel
+   */
+  public SequenceGroup(SequenceGroup seqsel)
+  {
+    if (seqsel!=null)
+    {
+      sequences=new Vector(seqsel.sequences);
+      groupName = new String(seqsel.groupName);
+      displayBoxes = seqsel.displayBoxes;
+      displayText = seqsel.displayText;
+      colourText = seqsel.colourText;
+      startRes = seqsel.startRes;
+      endRes = seqsel.endRes;
+      cs =seqsel.cs;
+      if (seqsel.description!=null)
+        description = new String(seqsel.description);
+      groupName = new String(seqsel.groupName);
+      hidecols = seqsel.hidecols;
+      hidereps = seqsel.hidereps;
+      idColour = seqsel.idColour;
+      outlineColour = seqsel.outlineColour;
+      seqrep = seqsel.seqrep;
+      textColour = seqsel.textColour;
+      textColour2 = seqsel.textColour2;
+      thresholdTextColour = seqsel.thresholdTextColour;
+      width = seqsel.width;
+      if (seqsel.conserve!=null)
+      {
+        recalcConservation(); // safer than 
+        // aaFrequency = (Vector) seqsel.aaFrequency.clone(); // ??
+      }
+    }
+  }
 
   public SequenceI[] getSelectionAsNewSequences(AlignmentI align)
   {
@@ -753,4 +788,26 @@ public class SequenceGroup
   {
     return hidecols;
   }
+  /**
+   * create a new sequence group from the intersection of this group
+   * with an alignment Hashtable of hidden representatives
+   * 
+   * @param alignment (may not be null)
+   * @param hashtable (may be null)
+   * @return new group containing sequences common to this group and alignment
+   */
+  public SequenceGroup intersect(AlignmentI alignment, Hashtable hashtable)
+  {
+    SequenceGroup sgroup = new SequenceGroup(this);
+    Enumeration en = getSequences(hashtable).elements();
+    while (en.hasMoreElements())
+    {
+      SequenceI elem = (SequenceI) en.nextElement();
+      if (alignment.getSequences().contains(elem))
+      {
+        sgroup.addSequence(elem, false);
+      }
+    }
+    return sgroup;
+  }
 }