import static org.testng.Assert.assertSame;
import static org.testng.Assert.assertTrue;
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.swing.JInternalFrame;
+
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
import jalview.analysis.scoremodels.SimilarityParams;
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
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;
import jalview.datamodel.Mapping;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
+import jalview.datamodel.Sequence.DBModList;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
import jalview.viewmodel.AlignmentViewport;
import jalview.viewmodel.seqfeatures.FeatureRendererModel;
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.JInternalFrame;
-
-import org.testng.Assert;
-import org.testng.AssertJUnit;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
@Test(singleThreaded = true)
public class Jalview2xmlTests extends Jalview2xmlBase
{
assertNotNull(
ColourSchemeProperty.getColourScheme(viewport,
viewport.getAlignment(),
- viewport.getGlobalColourScheme()
- .getSchemeName()),
+ viewport.getGlobalColourScheme().getSchemeName()),
"Recognise T-Coffee score from string");
af.saveAlignment(tfile, FileFormat.Jalview);
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,
Assert.assertEquals(Desktop.getAlignFrames().length,
Desktop.getAlignmentPanels(
af.getViewport().getSequenceSetId()).length);
- Assert.assertEquals(
- Desktop.getAlignmentPanels(
- af.getViewport().getSequenceSetId()).length,
+ Assert.assertEquals(Desktop
+ .getAlignmentPanels(af.getViewport().getSequenceSetId()).length,
oldviews);
}
"Mismatch PDBEntry 'Type'");
Assert.assertNotNull(recov.getFile(),
"Recovered PDBEntry should have a non-null file entry");
+ Assert.assertEquals(
+ recov.getFile().toLowerCase(Locale.ENGLISH)
+ .lastIndexOf("pdb"),
+ recov.getFile().length() - 3,
+ "Recovered PDBEntry file should have PDB suffix");
}
}
* @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);
assertEquals(fr.getFeatureFilter("type2").toStableString(),
"(Score LE 2.4) AND (Score GT 1.1)");
assertEquals(fr.getFeatureFilter("type3").toStableString(),
- "(AF Contains X) OR (CSQ:PolyPhen NE 0.0)");
+ "(AF Contains X) OR (CSQ:PolyPhen NE 0)");
}
private void addFeature(SequenceI seq, String featureType, int score)
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(seqData,
DataSourceType.PASTE);
assertNotNull(af, "Didn't read in the example file correctly.");
-
+
AlignmentViewPanel ap = Desktop.getAlignmentPanels(null)[0];
SequenceI pep = ap.getAlignment().getSequenceAt(0);
SequenceI cds = ap.getAlignment().getSequenceAt(1);
Assert.fail("Didn't save the state", e);
}
Desktop.instance.closeAll_actionPerformed(null);
-
+
new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
DataSourceType.FILE);
AlignmentViewPanel rap = Desktop.getAlignmentPanels(null)[0];
SequenceI rpep = rap.getAlignment().getSequenceAt(0);
+ DBModList<DBRefEntry> dbrefs = rpep.getDBRefs();
assertEquals(rpep.getName(), "P30419");
- DBRefEntry[] dbrefs = (DBRefEntry[]) rpep.getDBRefs().toArray();
- assertEquals(dbrefs.length, 3);
- DBRefEntry dbRef = dbrefs[0];
+ assertEquals(dbrefs.size(), 3);
+ DBRefEntry dbRef = dbrefs.get(0);
assertFalse(dbRef instanceof GeneLocus);
assertNull(dbRef.getMap());
assertEquals(dbRef, dbref1);
* restored dbrefs with mapping have a different 'map to'
* sequence but otherwise match the original dbrefs
*/
- dbRef = dbrefs[1];
+ dbRef = dbrefs.get(1);
assertFalse(dbRef instanceof GeneLocus);
assertTrue(dbRef.equalRef(dbref2));
assertNotNull(dbRef.getMap());
/*
* GeneLocus map.to is null so can compare Mapping objects
*/
- dbRef = dbrefs[2];
+ dbRef = dbrefs.get(2);
assertTrue(dbRef instanceof GeneLocus);
assertEquals(dbRef, dbref3);
}