import jalview.api.ViewStyleI;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.GeneLocus;
import jalview.datamodel.HiddenSequences;
boolean diffseqcols = false, diffgseqcols = false;
SequenceI[] sqs = af.getViewport().getAlignment().getSequencesArray();
- for (int p = 0, pSize = af.getViewport().getAlignment()
- .getWidth(); p < pSize && (!diffseqcols || !diffgseqcols); p++)
+ for (int p = 0,
+ pSize = af.getViewport().getAlignment().getWidth(); p < pSize
+ && (!diffseqcols || !diffgseqcols); p++)
{
if (_rcs.findColour(sqs[0].getCharAt(p), p, sqs[0], null, 0f) != _rcs
.findColour(sqs[5].getCharAt(p), p, sqs[5], null, 0f))
assertTrue(__rcs.isSeqAssociated(),
"Group Annotation colourscheme wasn't sequence associated");
- for (int p = 0, pSize = af.getViewport().getAlignment()
- .getWidth(); p < pSize && (!diffseqcols || !diffgseqcols); p++)
+ for (int p = 0,
+ pSize = af.getViewport().getAlignment().getWidth(); p < pSize
+ && (!diffseqcols || !diffgseqcols); p++)
{
if (_rgcs.findColour(sqs[1].getCharAt(p), p, sqs[1], null,
0f) != _rgcs.findColour(sqs[2].getCharAt(p), p, sqs[2], null,
* @throws IOException
*/
@Test(groups = { "Functional" })
+ public void testStoreAndRecoverAnnotationRowElementColours()
+ throws IOException
+ {
+ Desktop.instance.closeAll_actionPerformed(null);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded("SEQ\tMNQ",
+ DataSourceType.PASTE);
+
+ AlignViewport av = af.getViewport();
+ AlignmentI al = av.getAlignment();
+ SequenceI fsq;
+ fsq = al.getSequenceAt(0);
+ Annotation annots[] = new Annotation[fsq.getLength()];
+ AlignmentAnnotation ala = new AlignmentAnnotation("Colour", "Annots",
+ annots);
+ annots[0] = new Annotation(1.0f);
+ annots[1] = new Annotation(2.0f);
+ annots[2] = new Annotation(3.0f);
+ annots[0].colour = Color.RED;
+ annots[1].colour = Color.GREEN;
+ annots[2].colour = Color.BLUE;
+ ala.validateRangeAndDisplay();
+ al.getSequenceAt(0).addAlignmentAnnotation(ala);
+ al.addAnnotation(ala);
+ /*
+ * and colour by annotation
+ */
+ AnnotationColourGradient acg = new AnnotationColourGradient(ala,
+ af.alignPanel.av.getGlobalColourScheme(), 0);
+ acg.setSeqAssociated(true);
+ acg.setPredefinedColours(true);
+ af.changeColour(acg);
+ Color seqcol[] = new Color[3];
+ for (int iStart=fsq.findIndex(fsq.getStart()),i=0;i<3;i++) {
+ seqcol[i] = af.alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer().getResidueColour(fsq, iStart+i, null);
+ }
+ /*
+ * save project, close windows, reload project, verify
+ */
+ File tfile = File.createTempFile(
+ "testStoreAndRecoverAnnotRowElemColors", ".jvp");
+ tfile.deleteOnExit();
+ new Jalview2XML(false).saveState(tfile);
+ Desktop.instance.closeAll_actionPerformed(null);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+ DataSourceType.FILE);
+ Assert.assertNotNull(af, "Failed to reload project");
+ /*
+ * verify alignment annotation has colors
+ */
+ av = af.getViewport();
+
+ ColourSchemeI loadedCscheme = av.getGlobalColourScheme();
+ Assert.assertTrue(loadedCscheme instanceof AnnotationColourGradient,"Didn't apply Annotation colour gradient");
+ acg = (AnnotationColourGradient) loadedCscheme;
+ assertTrue(acg.isSeqAssociated());
+ assertTrue(acg.isPredefinedColours());
+
+ al = av.getAlignment();
+ fsq = al.getSequenceAt(0);
+ ala = fsq.getAnnotation()[0];
+ Assert.assertNotNull(ala, "No annotation row recovered");
+ Assert.assertNotNull(ala.annotations);
+ for (int iStart = al.getSequenceAt(0)
+ .findIndex(al.getSequenceAt(0).getStart()), i = 0; i < 3; i++)
+ {
+ Assert.assertTrue(ala.annotations[i].colour!=null);
+ Assert.assertTrue(ala.annotations[i].colour.equals(annots[i].colour));
+ Color newseqcol = af.alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer().getResidueColour(fsq, iStart+i, null);
+ Assert.assertTrue(seqcol[i].equals(newseqcol),"Sequence shading is different");
+
+ }
+
+ }
+
+ /**
+ * Configure an alignment and a sub-group each with distinct colour schemes,
+ * Conservation and PID thresholds, and confirm these are restored from the
+ * saved project.
+ *
+ * @throws IOException
+ */
+ @Test(groups = { "Functional" })
public void testStoreAndRecoverColourThresholds() throws IOException
{
Desktop.instance.closeAll_actionPerformed(null);