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.AnnotatedCollectionI;
9 import jalview.datamodel.SequenceCollectionI;
10 import jalview.datamodel.SequenceI;
11 import jalview.gui.AlignFrame;
12 import jalview.gui.AlignViewport;
13 import jalview.gui.Desktop;
14 import jalview.gui.SequenceRenderer;
15 import jalview.io.DataSourceType;
16 import jalview.io.FileLoader;
17 import jalview.schemes.ClustalxColourScheme.ClustalColour;
19 import java.awt.Color;
20 import java.util.Iterator;
23 import org.testng.annotations.AfterClass;
24 import org.testng.annotations.BeforeClass;
25 import org.testng.annotations.Test;
27 public class ColourSchemesTest
30 * a colour scheme that alternates Taylor and Zappo
33 class Stripy extends ResidueColourScheme
36 public ColourSchemeI getInstance(AnnotatedCollectionI sg,
37 Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
39 final ColourSchemeI odd = ColourSchemes.getInstance()
40 .getColourScheme(JalviewColourScheme.Taylor.toString(),
41 (AnnotatedCollectionI) null);
42 final ColourSchemeI even = ColourSchemes.getInstance()
43 .getColourScheme(JalviewColourScheme.Zappo.toString(),
44 (AnnotatedCollectionI) null);
45 return new ResidueColourScheme() {
47 public Color findColour(char c, int j, SequenceI seq)
51 return odd.findColour(c, j, seq);
55 return even.findColour(c, j, seq);
60 public ColourSchemeI getInstance(AnnotatedCollectionI sg,
61 Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
67 public String getSchemeName()
69 return Stripy.this.getSchemeName();
76 public String getSchemeName()
83 * a colour scheme that is Clustal but using AWT colour equivalents
85 class MyClustal extends ResidueColourScheme
87 ColourSchemeI delegate;
93 public MyClustal(ColourSchemeI scheme)
99 public Color findColour(char c, int j, SequenceI seq)
101 Color col = delegate.findColour(c, j, seq);
103 if (col.equals(ClustalColour.BLUE.colour))
107 else if (col.equals(ClustalColour.CYAN.colour))
111 else if (col.equals(ClustalColour.GREEN.colour))
113 result = Color.green;
115 else if (col.equals(ClustalColour.MAGENTA.colour))
117 result = Color.magenta;
119 else if (col.equals(ClustalColour.ORANGE.colour))
121 result = Color.orange;
123 else if (col.equals(ClustalColour.PINK.colour))
127 else if (col.equals(ClustalColour.RED.colour))
131 else if (col.equals(ClustalColour.YELLOW.colour))
133 result = Color.yellow;
139 public ColourSchemeI getInstance(AnnotatedCollectionI sg,
140 Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
142 return new MyClustal(new ClustalxColourScheme().getInstance(sg,
143 hiddenRepSequences));
147 public String getSchemeName()
154 @BeforeClass(alwaysRun = true)
155 public static void setUpBeforeClass() throws Exception
158 * use read-only test properties file
160 Cache.loadProperties("test/jalview/io/testProps.jvprops");
161 Jalview.main(new String[] { "-nonews" });
164 @AfterClass(alwaysRun = true)
165 public static void tearDownAfterClass() throws Exception
167 Desktop.instance.closeAll_actionPerformed(null);
170 @Test(groups = "Functional")
171 public void testGetColourSchemes()
174 * this just verifies that built-in colour schemes are loaded into ColourSchemes
175 * in the order in which they are declared in the JalviewColourScheme enum
176 * (this also determines their order in Colour menus)
178 Iterator<ColourSchemeI> schemes = ColourSchemes.getInstance().getColourSchemes().iterator();
179 JalviewColourScheme[] jalviewSchemes = JalviewColourScheme.values();
181 while (schemes.hasNext() && i < jalviewSchemes.length)
183 assertTrue(schemes.next().getSchemeName()
184 .equals(jalviewSchemes[i].toString()));
189 @Test(groups = "Functional")
190 public void testGetColourScheme_forViewport()
192 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
193 ">seq1\nAGLRTWQU", DataSourceType.PASTE);
194 ColourSchemes cs = ColourSchemes.getInstance();
196 AlignViewport viewport = af.getViewport();
197 assertTrue(cs.getColourScheme(JalviewColourScheme.Blosum62.toString(),
198 viewport) instanceof Blosum62ColourScheme);
199 assertTrue(cs.getColourScheme(JalviewColourScheme.Buried.toString(),
200 viewport) instanceof BuriedColourScheme);
201 assertTrue(cs.getColourScheme(JalviewColourScheme.Clustal.toString(),
202 viewport) instanceof ClustalxColourScheme);
203 assertTrue(cs.getColourScheme(JalviewColourScheme.Helix.toString(),
204 viewport) instanceof HelixColourScheme);
205 assertTrue(cs.getColourScheme(
206 JalviewColourScheme.Hydrophobic.toString(), viewport) instanceof HydrophobicColourScheme);
207 assertTrue(cs.getColourScheme(
208 JalviewColourScheme.Nucleotide.toString(), viewport) instanceof NucleotideColourScheme);
209 assertTrue(cs.getColourScheme(JalviewColourScheme.PID.toString(),
210 viewport) instanceof PIDColourScheme);
211 assertTrue(cs.getColourScheme(
212 JalviewColourScheme.PurinePyrimidine.toString(), viewport) instanceof PurinePyrimidineColourScheme);
213 assertTrue(cs.getColourScheme(
214 JalviewColourScheme.RNAHelices.toString(), viewport) instanceof RNAHelicesColour);
215 assertTrue(cs.getColourScheme(JalviewColourScheme.Strand.toString(),
216 viewport) instanceof StrandColourScheme);
217 assertTrue(cs.getColourScheme(JalviewColourScheme.Taylor.toString(),
218 viewport) instanceof TaylorColourScheme);
219 assertTrue(cs.getColourScheme(JalviewColourScheme.TCoffee.toString(),
220 viewport) instanceof TCoffeeColourScheme);
221 assertTrue(cs.getColourScheme(JalviewColourScheme.Turn.toString(),
222 viewport) instanceof TurnColourScheme);
223 assertTrue(cs.getColourScheme(JalviewColourScheme.Zappo.toString(),
224 viewport) instanceof ZappoColourScheme);
225 af.closeMenuItem_actionPerformed(true);
228 @Test(groups = "Functional")
229 public void testGetColourScheme_forAnnotatedCollection()
231 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
232 ">seq1\nAGLRTWQU", DataSourceType.PASTE);
233 ColourSchemes cs = ColourSchemes.getInstance();
235 AnnotatedCollectionI al = af.getViewport().getAlignment();
236 assertTrue(cs.getColourScheme(JalviewColourScheme.Blosum62.toString(),
237 al) instanceof Blosum62ColourScheme);
239 .getColourScheme(JalviewColourScheme.Buried.toString(), al) instanceof BuriedColourScheme);
240 assertTrue(cs.getColourScheme(JalviewColourScheme.Clustal.toString(),
241 al) instanceof ClustalxColourScheme);
242 assertTrue(cs.getColourScheme(JalviewColourScheme.Helix.toString(), al) instanceof HelixColourScheme);
243 assertTrue(cs.getColourScheme(
244 JalviewColourScheme.Hydrophobic.toString(), al) instanceof HydrophobicColourScheme);
245 assertTrue(cs.getColourScheme(
246 JalviewColourScheme.Nucleotide.toString(), al) instanceof NucleotideColourScheme);
247 assertTrue(cs.getColourScheme(JalviewColourScheme.PID.toString(), al) instanceof PIDColourScheme);
248 assertTrue(cs.getColourScheme(
249 JalviewColourScheme.PurinePyrimidine.toString(), al) instanceof PurinePyrimidineColourScheme);
250 assertTrue(cs.getColourScheme(
251 JalviewColourScheme.RNAHelices.toString(), al) instanceof RNAHelicesColour);
253 .getColourScheme(JalviewColourScheme.Strand.toString(), al) instanceof StrandColourScheme);
255 .getColourScheme(JalviewColourScheme.Taylor.toString(), al) instanceof TaylorColourScheme);
256 assertTrue(cs.getColourScheme(JalviewColourScheme.TCoffee.toString(),
257 al) instanceof TCoffeeColourScheme);
258 assertTrue(cs.getColourScheme(JalviewColourScheme.Turn.toString(), al) instanceof TurnColourScheme);
259 assertTrue(cs.getColourScheme(JalviewColourScheme.Zappo.toString(), al) instanceof ZappoColourScheme);
260 af.closeMenuItem_actionPerformed(true);
263 @Test(groups = "Functional")
264 public void testRegisterColourScheme()
266 ColourSchemes.getInstance().registerColourScheme(new Stripy());
267 ColourSchemes.getInstance().registerColourScheme(new MyClustal());
268 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
269 "examples/uniref50.fa", DataSourceType.FILE);
271 * set a breakpoint here to see and play with the newly registered
272 * colour schemes in the AlignFrame colour menu
274 SequenceRenderer sr = new SequenceRenderer(af.getViewport());
275 SequenceI seq = af.getViewport().getAlignment().findName("FER_CAPAA");
278 * set and check Taylor colours
280 af.changeColour_actionPerformed(JalviewColourScheme.Taylor.toString());
281 Color taylor1 = sr.getResidueBoxColour(seq, 88); // E 255,0,102
282 Color taylor2 = sr.getResidueBoxColour(seq, 89); // A 204,255,0
283 Color taylor3 = sr.getResidueBoxColour(seq, 90); // G 255,153,0
284 assertEquals(taylor1, new Color(255, 0, 102));
285 assertEquals(taylor2, new Color(204, 255, 0));
286 assertEquals(taylor3, new Color(255, 153, 0));
289 * set and check Zappo colours
291 af.changeColour_actionPerformed(JalviewColourScheme.Zappo.toString());
292 Color zappo1 = sr.getResidueBoxColour(seq, 88); // E red
293 Color zappo2 = sr.getResidueBoxColour(seq, 89); // A pink
294 Color zappo3 = sr.getResidueBoxColour(seq, 90); // G magenta
295 assertEquals(zappo1, Color.red);
296 assertEquals(zappo2, Color.pink);
297 assertEquals(zappo3, Color.magenta);
300 * set 'stripy' colours - odd columns are Taylor and even are Zappo
302 af.changeColour_actionPerformed("stripy");
303 Color stripy1 = sr.getResidueBoxColour(seq, 88);
304 Color stripy2 = sr.getResidueBoxColour(seq, 89);
305 Color stripy3 = sr.getResidueBoxColour(seq, 90);
306 assertEquals(stripy1, zappo1);
307 assertEquals(stripy2, taylor2);
308 assertEquals(stripy3, zappo3);
311 * set and check Clustal colours
313 af.changeColour_actionPerformed(JalviewColourScheme.Clustal.toString());
314 Color clustal1 = sr.getResidueBoxColour(seq, 88);
315 Color clustal2 = sr.getResidueBoxColour(seq, 89);
316 Color clustal3 = sr.getResidueBoxColour(seq, 90);
317 assertEquals(clustal1, ClustalColour.MAGENTA.colour);
318 assertEquals(clustal2, ClustalColour.BLUE.colour);
319 assertEquals(clustal3, ClustalColour.ORANGE.colour);
322 * set 'MyClustal' colours - uses AWT colour equivalents
324 af.changeColour_actionPerformed("MyClustal");
325 Color myclustal1 = sr.getResidueBoxColour(seq, 88);
326 Color myclustal2 = sr.getResidueBoxColour(seq, 89);
327 Color myclustal3 = sr.getResidueBoxColour(seq, 90);
328 assertEquals(myclustal1, Color.MAGENTA);
329 assertEquals(myclustal2, Color.BLUE);
330 assertEquals(myclustal3, Color.ORANGE);