From: jprocter Date: Wed, 12 Nov 2008 11:07:46 +0000 (+0000) Subject: new copy constructor and intersect method X-Git-Tag: Release_2_5~425 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=e0903f3de53b3047ce57fda93103d80ac46a3db5;p=jalview.git new copy constructor and intersect method --- diff --git a/src/jalview/datamodel/SequenceGroup.java b/src/jalview/datamodel/SequenceGroup.java index bb075aa..33739aa 100755 --- a/src/jalview/datamodel/SequenceGroup.java +++ b/src/jalview/datamodel/SequenceGroup.java @@ -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; + } }