import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import jalview.analysis.AlignmentUtils;
import jalview.analysis.scoremodels.SimilarityParams;
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.datamodel.Mapping;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
+import jalview.datamodel.Sequence;
import jalview.datamodel.Sequence.DBModList;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceFeature;
@Test(groups = { "Functional" })
public void gatherViewsHere() throws Exception
{
- int origCount = Desktop.getAlignFrames() == null ? 0
- : Desktop.getAlignFrames().length;
+ int origCount = Desktop.getDesktopAlignFrames() == null ? 0
+ : Desktop.getDesktopAlignFrames().length;
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/exampleFile_2_7.jar", DataSourceType.FILE);
assertNotNull(af, "Didn't read in the example file correctly.");
- assertTrue(Desktop.getAlignFrames().length == 1 + origCount,
+ assertTrue(Desktop.getDesktopAlignFrames().length == 1 + origCount,
"Didn't gather the views in the example file.");
}
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/exampleFile_2_7.jar", DataSourceType.FILE);
- Assert.assertEquals(Desktop.getAlignFrames().length, 1);
+ Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 1);
String afid = af.getViewport().getSequenceSetId();
// check FileLoader returned a reference to the one alignFrame that is
Desktop.explodeViews(af);
- int oldviews = Desktop.getAlignFrames().length;
- Assert.assertEquals(Desktop.getAlignFrames().length,
+ int oldviews = Desktop.getDesktopAlignFrames().length;
+ Assert.assertEquals(Desktop.getDesktopAlignFrames().length,
Desktop.getAlignmentPanels(afid).length);
File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp");
try
Assert.fail("Didn't save the expanded view state", e);
}
Desktop.instance.closeAll_actionPerformed(null);
- if (Desktop.getAlignFrames() != null)
+ if (Desktop.getDesktopAlignFrames() != null)
{
- Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+ Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
}
af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
DataSourceType.FILE);
Assert.assertNotNull(af);
- Assert.assertEquals(Desktop.getAlignFrames().length,
+ Assert.assertEquals(Desktop.getDesktopAlignFrames().length,
Desktop.getAlignmentPanels(
af.getViewport().getSequenceSetId()).length);
Assert.assertEquals(Desktop
Assert.fail("Didn't save the expanded view state", e);
}
Desktop.instance.closeAll_actionPerformed(null);
- if (Desktop.getAlignFrames() != null)
+ if (Desktop.getDesktopAlignFrames() != null)
{
- Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+ Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
}
af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
Assert.fail("Didn't save the expanded view state", e);
}
Desktop.instance.closeAll_actionPerformed(null);
- if (Desktop.getAlignFrames() != null)
+ if (Desktop.getDesktopAlignFrames() != null)
{
- Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+ Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
}
af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
Assert.fail("Didn't save the state", e);
}
Desktop.instance.closeAll_actionPerformed(null);
- if (Desktop.getAlignFrames() != null)
+ if (Desktop.getDesktopAlignFrames() != null)
{
- Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+ Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
}
AlignFrame restoredFrame = new FileLoader().LoadFileWaitTillLoaded(
assertNotNull(af);
AlignmentI ds = null;
- for (AlignFrame alignFrame : Desktop.getAlignFrames())
+ for (AlignFrame alignFrame : Desktop.getDesktopAlignFrames())
{
if (ds == null)
{
}
@Test(groups = { "Functional" })
+ public void testMatrixToFloatsAndBack()
+ {
+ int imax=2000;
+ int i=imax;
+ SequenceI sq = new Sequence("dummy","SEQ");
+ while (sq.getLength()<i)
+ {
+ sq.setSequence(sq.getSequenceAsString()+'Q');
+ }
+ float[][] paevals = new float[i][i];
+ for (i = imax - 1; i >= 0; i--)
+ {
+ for (int j = 0; j <= i; j++)
+ {
+ paevals[i][j] = ((i - j < 2)
+ || ((i > 1 && i < 5) && (j > 1 && i < 5))) ? 1 : 0f;
+ paevals[j][i] = -paevals[i][j];
+ }
+ }
+ PAEContactMatrix dummyMat = new PAEContactMatrix(sq, paevals);
+ String content = ContactMatrix.contactToFloatString(dummyMat);
+ Assert.assertTrue(content.contains("\t1.")); // at least one element must be
+ // 1
+ float[][] vals = ContactMatrix.fromFloatStringToContacts(content,
+ sq.getLength(), sq.getLength());
+ assertEquals(vals[3][4], paevals[3][4]);
+ assertEquals(vals[4][3], paevals[4][3]);
+
+ // test recovery
+ for (i=0;i<imax;i++)
+ {
+ for (int j=0;j<imax;j++)
+ {
+ assertEquals(vals[i][j],paevals[i][j]);
+ }
+ }
+ }
+ @Test(groups = { "Functional" })
public void testPAEsaveRestore() throws Exception
{
Desktop.instance.closeAll_actionPerformed(null);
Assert.assertEquals(restoredMat.getGroups(), dummyMat.getGroups());
Assert.assertEquals(restoredMat.hasTree(), dummyMat.hasTree());
Assert.assertEquals(restoredMat.getNewick(), dummyMat.getNewick());
+
+ // verify no duplicate PAE matrix data when new view created and saved
+
+ // add reference annotations to view first, then copy
+ AlignmentUtils.addReferenceAnnotationTo(newAl, newAl.getSequenceAt(0), newSeq.getAnnotation()[0],null);
+
+ AlignmentViewPanel newview = af.newView("copy of PAE", true);
+
+ // redundant asserts here check all is good with the new view firest...
+ AlignmentI newviewAl = newview.getAlignment();
+ SequenceI newviewSeq = newviewAl.getSequenceAt(0);
+ // check annotation of the expected type exists
+ Assert.assertEquals(newviewSeq.getAnnotation().length, 1);
+ Assert.assertEquals(newviewSeq.getAnnotation()[0].graph, paeCm.graph);
+ // check we have just one contact matrix mapping
+ Assert.assertEquals(newviewSeq.getContactMaps().size(), 1);
+
+ // and can be found for the annotation on the sequence
+ ContactMatrixI newviewMat = newviewSeq
+ .getContactMatrixFor(newviewSeq.getAnnotation()[0]);
+ Assert.assertNotNull(newviewMat);
+
+ Assert.assertTrue(newviewMat == restoredMat);
+
+ // save the two views and restore. Now look at visible annotation to check all views have shared refs.
+
+ tfile = File.createTempFile("testStoreAndRecoverPAEmatrixTwoViews",
+ ".jvp");
+ new Jalview2XML(false).saveState(tfile);
+ Desktop.instance.closeAll_actionPerformed(null);
+
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+ DataSourceType.FILE);
+ newAl = af.getAlignPanels().get(0).getAlignment();
+ AlignmentAnnotation view1aa = newAl.getSequenceAt(0).getAnnotation()[0];
+
+ newviewAl = af.getAlignPanels().get(1).getAlignment();
+ AlignmentAnnotation view2aa = newviewAl.getSequenceAt(0).getAnnotation()[0];
+
+ // annotations are shared across alignment views - so should still have an identical pair of annotations.
+ Assert.assertTrue(view1aa==view2aa);
+ // identical annotations means identical contact matrix mappings
+ Assert.assertEquals(newAl.getDataset().getSequenceAt(0).getContactMaps().size(), 1);
+
+ // TODO Verify when distinct mappable PAEs are created, only one PAE dataset is actually held.
+ // Assert.assertTrue(view1aa!=view2aa);
+ // restoredMat = newAl.getContactMatrixFor(view1aa);
+ // newviewMat = newviewAl.getContactMatrixFor(view2aa);
+ // Assert.assertTrue(restoredMat!=newviewMat);
+
}
@Test(groups = "Functional")