1 package jalview.datamodel;
\r
3 import jalview.schemes.*;
\r
4 import jalview.analysis.*;
\r
5 import jalview.datamodel.*;
\r
6 import java.util.Vector;
\r
9 public class SequenceGroup
\r
12 Conservation conserve;
\r
14 boolean displayBoxes;
\r
15 boolean displayText;
\r
17 public Vector sequences = new Vector();
\r
19 public ColourSchemeI cs;
\r
22 Color outlineColour = Color.black;
\r
24 public SequenceGroup()
\r
26 groupName = "Group";
\r
27 this.displayBoxes = true;
\r
28 this.displayText = true;
\r
29 this.colourText = false;
\r
33 public SequenceGroup(String groupName, ColourSchemeI scheme,
\r
34 boolean displayBoxes, boolean displayText,
\r
40 this.groupName = groupName;
\r
41 this.displayBoxes = displayBoxes;
\r
42 this.displayText = displayText;
\r
43 this.colourText = colourText;
\r
49 public boolean adjustForRemoveLeft(int col)
\r
51 // return value is true if the group still exists
\r
53 startRes = startRes - col;
\r
56 endRes = endRes - col;
\r
62 // must delete this group!!
\r
69 public boolean adjustForRemoveRight(int col)
\r
74 // delete this group
\r
85 public String getName()
\r
90 public void setName(String name)
\r
95 public Conservation getConservation()
\r
100 public void setConservation(Conservation c)
\r
105 public void addSequence(SequenceI s)
\r
107 if(!sequences.contains(s))
\r
108 sequences.addElement(s);
\r
112 cs.setConsensus( AAFrequency.calculate(sequences, 0, getWidth()) );
\r
114 if(cs instanceof ConservationColourScheme)
\r
115 recalcConservation();
\r
118 void recalcConservation()
\r
120 Conservation c = new Conservation(groupName,
\r
121 ResidueProperties.propHash, 3,
\r
122 sequences, 0, getWidth());
\r
124 c.verdict(false, 25);
\r
125 ConservationColourScheme ccs = (ConservationColourScheme)cs;
\r
129 public void addOrRemove(SequenceI s)
\r
131 if(sequences.contains(s))
\r
137 public void deleteSequence(SequenceI s)
\r
139 sequences.removeElement(s);
\r
142 cs.setConsensus( AAFrequency.calculate(sequences, 0, getWidth()) );
\r
144 if(cs instanceof ConservationColourScheme)
\r
145 recalcConservation();
\r
149 public int getStartRes()
\r
154 public int getEndRes()
\r
159 public void setStartRes(int i)
\r
164 public void setEndRes(int i)
\r
169 public int getSize()
\r
171 return sequences.size();
\r
174 public SequenceI getSequenceAt(int i)
\r
176 return (SequenceI) sequences.elementAt(i);
\r
179 public void setColourText(boolean state)
\r
181 colourText = state;
\r
184 public boolean getColourText()
\r
189 public void setDisplayText(boolean state)
\r
191 displayText = state;
\r
194 public boolean getDisplayText()
\r
196 return displayText;
\r
199 public void setDisplayBoxes(boolean state)
\r
201 displayBoxes = state;
\r
204 public boolean getDisplayBoxes()
\r
206 return displayBoxes;
\r
209 public int getWidth()
\r
211 // MC This needs to get reset when characters are inserted and deleted
\r
212 if (sequences.size()>0)
\r
213 width = ((SequenceI) sequences.elementAt(0)).getLength();
\r
214 for (int i = 1; i < sequences.size(); i++)
\r
216 SequenceI seq = (SequenceI) sequences.elementAt(i);
\r
217 if (seq.getLength() > width)
\r
218 width = seq.getLength();
\r
224 public void setOutlineColour(Color c)
\r
228 public Color getOutlineColour()
\r
230 return outlineColour;
\r
234 * returns the sequences in the group ordered by the ordering given by al
\r
236 * @param al Alignment
\r
237 * @return SequenceI[]
\r
239 public SequenceI[] getSequencesInOrder(Alignment al) {
\r
241 java.util.Hashtable orderedSeqs = new java.util.Hashtable();
\r
242 SequenceI[] seqs=new SequenceI[sz=sequences.size()];
\r
243 for(int i=0; i<sz; i++)
\r
245 SequenceI seq = (SequenceI) sequences.elementAt(i);
\r
246 int index = al.findIndex(seq);
\r
247 orderedSeqs.put(index+"", seq);
\r
251 for(int i=0; i<sz; i++) {
\r
252 SequenceI seq = null;
\r
253 while (seq == null)
\r
255 if (orderedSeqs.containsKey(index + ""))
\r
257 seq = (SequenceI) orderedSeqs.get(index + "");
\r