+
+ @Test(groups = { "Functional" })
+ public void testPAEsaveRestore() throws Exception
+ {
+ Desktop.instance.closeAll_actionPerformed(null);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+ ">seq1\nMATRSQFLVNF\n", DataSourceType.PASTE);
+ AlignmentI al = af.getViewport().getAlignment();
+ SequenceI sq = al.getSequenceAt(0);
+ int i = sq.getLength();
+ float[][] paevals = new float[i][i];
+ for (i = i - 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);
+ AlignmentAnnotation paeCm = sq.addContactList(dummyMat);
+ al.addAnnotation(paeCm);
+ File tfile = File.createTempFile("testStoreAndRecoverPAEmatrix",
+ ".jvp");
+ new Jalview2XML(false).saveState(tfile);
+ Desktop.instance.closeAll_actionPerformed(null);
+
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+ DataSourceType.FILE);
+ AlignmentI newAl = af.getViewport().getAlignment();
+ SequenceI newSeq = newAl.getSequenceAt(0);
+ // check annotation of the expected type exists
+ Assert.assertEquals(newSeq.getAnnotation().length, 1);
+ Assert.assertEquals(newSeq.getAnnotation()[0].graph, paeCm.graph);
+
+ // check a contact matrix was recovered
+ Assert.assertEquals(newSeq.getContactMaps().size(), 1);
+ // and can be found for the annotation
+ ContactMatrixI restoredMat = al
+ .getContactMatrixFor(newSeq.getAnnotation()[0]);
+ Assert.assertNotNull(restoredMat);
+ for (i = sq.getLength() - 1; i >= 0; i--)
+ {
+ ContactListI oldCM = dummyMat.getContactList(i),
+ newCM = restoredMat.getContactList(i);
+ for (int j = oldCM.getContactHeight(); j >= 0; j--)
+ {
+ Assert.assertEquals(oldCM.getContactAt(j), newCM.getContactAt(j));
+ }
+ }
+ }
+