1 package jalview.schemes;
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertTrue;
6 import jalview.bin.Cache;
7 import jalview.bin.Jalview;
8 import jalview.datamodel.AlignmentI;
9 import jalview.datamodel.AnnotatedCollectionI;
10 import jalview.datamodel.SequenceCollectionI;
11 import jalview.datamodel.SequenceI;
12 import jalview.gui.AlignFrame;
13 import jalview.gui.AlignViewport;
14 import jalview.gui.Desktop;
15 import jalview.gui.SequenceRenderer;
16 import jalview.io.DataSourceType;
17 import jalview.io.FileLoader;
18 import jalview.schemes.ClustalxColourScheme.ClustalColour;
20 import java.awt.Color;
21 import java.util.Iterator;
24 import org.testng.annotations.AfterClass;
25 import org.testng.annotations.BeforeClass;
26 import org.testng.annotations.Test;
28 public class ColourSchemesTest
31 * a colour scheme that alternates Taylor and Zappo
34 class Stripy extends ResidueColourScheme
37 public ColourSchemeI getInstance(AnnotatedCollectionI sg,
38 Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
40 final ColourSchemeI odd = ColourSchemes.getInstance()
41 .getColourScheme(JalviewColourScheme.Taylor.toString(),
42 (AnnotatedCollectionI) null);
43 final ColourSchemeI even = ColourSchemes.getInstance()
44 .getColourScheme(JalviewColourScheme.Zappo.toString(),
45 (AnnotatedCollectionI) null);
46 return new ResidueColourScheme() {
48 public Color findColour(char c, int j, SequenceI seq)
52 return odd.findColour(c, j, seq);
56 return even.findColour(c, j, seq);
61 public ColourSchemeI getInstance(AnnotatedCollectionI ac,
62 Map<SequenceI, SequenceCollectionI> hrs)
68 public String getSchemeName()
70 return Stripy.this.getSchemeName();
77 public String getSchemeName()
84 * a colour scheme that is Clustal but using AWT colour equivalents
86 class MyClustal extends ResidueColourScheme
88 ColourSchemeI delegate;
94 public MyClustal(ColourSchemeI scheme)
100 public Color findColour(char c, int j, SequenceI seq)
102 Color col = delegate.findColour(c, j, seq);
104 if (col.equals(ClustalColour.BLUE.colour))
108 else if (col.equals(ClustalColour.CYAN.colour))
112 else if (col.equals(ClustalColour.GREEN.colour))
114 result = Color.green;
116 else if (col.equals(ClustalColour.MAGENTA.colour))
118 result = Color.magenta;
120 else if (col.equals(ClustalColour.ORANGE.colour))
122 result = Color.orange;
124 else if (col.equals(ClustalColour.PINK.colour))
128 else if (col.equals(ClustalColour.RED.colour))
132 else if (col.equals(ClustalColour.YELLOW.colour))
134 result = Color.yellow;
140 public ColourSchemeI getInstance(AnnotatedCollectionI sg,
141 Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
143 return new MyClustal(new ClustalxColourScheme().getInstance(sg,
144 hiddenRepSequences));
148 public String getSchemeName()
155 @BeforeClass(alwaysRun = true)
156 public static void setUpBeforeClass() throws Exception
159 * use read-only test properties file
161 Cache.loadProperties("test/jalview/io/testProps.jvprops");
162 Jalview.main(new String[] { "-nonews" });
165 @AfterClass(alwaysRun = true)
166 public static void tearDownAfterClass() throws Exception
168 Desktop.instance.closeAll_actionPerformed(null);
171 @Test(groups = "Functional")
172 public void testGetColourSchemes()
175 * this just verifies that built-in colour schemes are loaded into ColourSchemes
176 * in the order in which they are declared in the JalviewColourScheme enum
177 * (this also determines their order in Colour menus)
179 Iterator<ColourSchemeI> schemes = ColourSchemes.getInstance().getColourSchemes().iterator();
180 JalviewColourScheme[] jalviewSchemes = JalviewColourScheme.values();
182 while (schemes.hasNext() && i < jalviewSchemes.length)
184 assertTrue(schemes.next().getSchemeName()
185 .equals(jalviewSchemes[i].toString()));
190 @Test(groups = "Functional")
191 public void testGetColourScheme_forViewport()
193 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
194 ">seq1\nAGLRTWQU", DataSourceType.PASTE);
195 ColourSchemes cs = ColourSchemes.getInstance();
197 AlignViewport viewport = af.getViewport();
198 AlignmentI alignment = viewport.getAlignment();
199 assertTrue(cs.getColourScheme(JalviewColourScheme.Blosum62.toString(),
200 alignment) instanceof Blosum62ColourScheme);
201 assertTrue(cs.getColourScheme(JalviewColourScheme.Buried.toString(),
202 alignment) instanceof BuriedColourScheme);
203 assertTrue(cs.getColourScheme(JalviewColourScheme.Clustal.toString(),
204 alignment) instanceof ClustalxColourScheme);
205 assertTrue(cs.getColourScheme(JalviewColourScheme.Helix.toString(),
206 alignment) instanceof HelixColourScheme);
207 assertTrue(cs.getColourScheme(
208 JalviewColourScheme.Hydrophobic.toString(), alignment) instanceof HydrophobicColourScheme);
209 assertTrue(cs.getColourScheme(
210 JalviewColourScheme.Nucleotide.toString(), alignment) instanceof NucleotideColourScheme);
211 assertTrue(cs.getColourScheme(JalviewColourScheme.PID.toString(),
212 alignment) instanceof PIDColourScheme);
213 assertTrue(cs.getColourScheme(
214 JalviewColourScheme.PurinePyrimidine.toString(), alignment) instanceof PurinePyrimidineColourScheme);
215 assertTrue(cs.getColourScheme(
216 JalviewColourScheme.RNAHelices.toString(), alignment) instanceof RNAHelicesColour);
217 assertTrue(cs.getColourScheme(JalviewColourScheme.Strand.toString(),
218 alignment) instanceof StrandColourScheme);
219 assertTrue(cs.getColourScheme(JalviewColourScheme.Taylor.toString(),
220 alignment) instanceof TaylorColourScheme);
221 assertTrue(cs.getColourScheme(JalviewColourScheme.TCoffee.toString(),
222 alignment) instanceof TCoffeeColourScheme);
223 assertTrue(cs.getColourScheme(JalviewColourScheme.Turn.toString(),
224 alignment) instanceof TurnColourScheme);
225 assertTrue(cs.getColourScheme(JalviewColourScheme.Zappo.toString(),
226 alignment) instanceof ZappoColourScheme);
227 af.closeMenuItem_actionPerformed(true);
230 @Test(groups = "Functional")
231 public void testGetColourScheme_forAnnotatedCollection()
233 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
234 ">seq1\nAGLRTWQU", DataSourceType.PASTE);
235 ColourSchemes cs = ColourSchemes.getInstance();
237 AnnotatedCollectionI al = af.getViewport().getAlignment();
238 assertTrue(cs.getColourScheme(JalviewColourScheme.Blosum62.toString(),
239 al) instanceof Blosum62ColourScheme);
241 .getColourScheme(JalviewColourScheme.Buried.toString(), al) instanceof BuriedColourScheme);
242 assertTrue(cs.getColourScheme(JalviewColourScheme.Clustal.toString(),
243 al) instanceof ClustalxColourScheme);
244 assertTrue(cs.getColourScheme(JalviewColourScheme.Helix.toString(), al) instanceof HelixColourScheme);
245 assertTrue(cs.getColourScheme(
246 JalviewColourScheme.Hydrophobic.toString(), al) instanceof HydrophobicColourScheme);
247 assertTrue(cs.getColourScheme(
248 JalviewColourScheme.Nucleotide.toString(), al) instanceof NucleotideColourScheme);
249 assertTrue(cs.getColourScheme(JalviewColourScheme.PID.toString(), al) instanceof PIDColourScheme);
250 assertTrue(cs.getColourScheme(
251 JalviewColourScheme.PurinePyrimidine.toString(), al) instanceof PurinePyrimidineColourScheme);
252 assertTrue(cs.getColourScheme(
253 JalviewColourScheme.RNAHelices.toString(), al) instanceof RNAHelicesColour);
255 .getColourScheme(JalviewColourScheme.Strand.toString(), al) instanceof StrandColourScheme);
257 .getColourScheme(JalviewColourScheme.Taylor.toString(), al) instanceof TaylorColourScheme);
258 assertTrue(cs.getColourScheme(JalviewColourScheme.TCoffee.toString(),
259 al) instanceof TCoffeeColourScheme);
260 assertTrue(cs.getColourScheme(JalviewColourScheme.Turn.toString(), al) instanceof TurnColourScheme);
261 assertTrue(cs.getColourScheme(JalviewColourScheme.Zappo.toString(), al) instanceof ZappoColourScheme);
262 af.closeMenuItem_actionPerformed(true);
265 @Test(groups = "Functional")
266 public void testRegisterColourScheme()
268 ColourSchemes.getInstance().registerColourScheme(new Stripy());
269 ColourSchemes.getInstance().registerColourScheme(new MyClustal());
270 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
271 "examples/uniref50.fa", DataSourceType.FILE);
273 * set a breakpoint here to see and play with the newly registered
274 * colour schemes in the AlignFrame colour menu
276 SequenceRenderer sr = new SequenceRenderer(af.getViewport());
277 SequenceI seq = af.getViewport().getAlignment().findName("FER_CAPAA");
280 * set and check Taylor colours
282 af.changeColour_actionPerformed(JalviewColourScheme.Taylor.toString());
283 Color taylor1 = sr.getResidueBoxColour(seq, 88); // E 255,0,102
284 Color taylor2 = sr.getResidueBoxColour(seq, 89); // A 204,255,0
285 Color taylor3 = sr.getResidueBoxColour(seq, 90); // G 255,153,0
286 assertEquals(taylor1, new Color(255, 0, 102));
287 assertEquals(taylor2, new Color(204, 255, 0));
288 assertEquals(taylor3, new Color(255, 153, 0));
291 * set and check Zappo colours
293 af.changeColour_actionPerformed(JalviewColourScheme.Zappo.toString());
294 Color zappo1 = sr.getResidueBoxColour(seq, 88); // E red
295 Color zappo2 = sr.getResidueBoxColour(seq, 89); // A pink
296 Color zappo3 = sr.getResidueBoxColour(seq, 90); // G magenta
297 assertEquals(zappo1, Color.red);
298 assertEquals(zappo2, Color.pink);
299 assertEquals(zappo3, Color.magenta);
302 * set 'stripy' colours - odd columns are Taylor and even are Zappo
304 af.changeColour_actionPerformed("stripy");
305 Color stripy1 = sr.getResidueBoxColour(seq, 88);
306 Color stripy2 = sr.getResidueBoxColour(seq, 89);
307 Color stripy3 = sr.getResidueBoxColour(seq, 90);
308 assertEquals(stripy1, zappo1);
309 assertEquals(stripy2, taylor2);
310 assertEquals(stripy3, zappo3);
313 * set and check Clustal colours
315 af.changeColour_actionPerformed(JalviewColourScheme.Clustal.toString());
316 Color clustal1 = sr.getResidueBoxColour(seq, 88);
317 Color clustal2 = sr.getResidueBoxColour(seq, 89);
318 Color clustal3 = sr.getResidueBoxColour(seq, 90);
319 assertEquals(clustal1, ClustalColour.MAGENTA.colour);
320 assertEquals(clustal2, ClustalColour.BLUE.colour);
321 assertEquals(clustal3, ClustalColour.ORANGE.colour);
324 * set 'MyClustal' colours - uses AWT colour equivalents
326 af.changeColour_actionPerformed("MyClustal");
327 Color myclustal1 = sr.getResidueBoxColour(seq, 88);
328 Color myclustal2 = sr.getResidueBoxColour(seq, 89);
329 Color myclustal3 = sr.getResidueBoxColour(seq, 90);
330 assertEquals(myclustal1, Color.MAGENTA);
331 assertEquals(myclustal2, Color.BLUE);
332 assertEquals(myclustal3, Color.ORANGE);