X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fproject%2FJalview2xmlTests.java;h=e39d9008ee666a84069a3402a21bd8b7d9f8cfb9;hb=1730be35c0c3fda8f9c63f1fb6dcea7b5fb2ba35;hp=37ef06927a8e79dc20192b70aa788072ed569628;hpb=80b889f0cca49103e1b20ed806755a0719789906;p=jalview.git diff --git a/test/jalview/project/Jalview2xmlTests.java b/test/jalview/project/Jalview2xmlTests.java index 37ef069..e39d900 100644 --- a/test/jalview/project/Jalview2xmlTests.java +++ b/test/jalview/project/Jalview2xmlTests.java @@ -47,6 +47,7 @@ import org.testng.AssertJUnit; 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; @@ -66,6 +67,7 @@ import jalview.datamodel.HiddenSequences; 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; @@ -114,6 +116,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { + if (Desktop.instance != null) + Desktop.instance.closeAll_actionPerformed(null); JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } @@ -1544,6 +1548,44 @@ public class Jalview2xmlTests extends Jalview2xmlBase } @Test(groups = { "Functional" }) + public void testMatrixToFloatsAndBack() + { + int imax=2000; + int i=imax; + SequenceI sq = new Sequence("dummy","SEQ"); + while (sq.getLength()= 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 1 && i < 5) && (j > 1 && i < 5))) ? 1 : 0f; - paevals[j][i] = paevals[i][j]; + paevals[j][i] = -paevals[i][j]; } } PAEContactMatrix dummyMat = new PAEContactMatrix(sq, paevals); @@ -1571,7 +1613,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase float[][] vals = ContactMatrix.fromFloatStringToContacts(content, sq.getLength(), sq.getLength()); assertEquals(vals[3][4], paevals[3][4]); - dummyMat.setGroupSet(GroupSet.makeGroups(dummyMat, 0.5f, false)); + assertEquals(vals[4][3], paevals[4][3]); + dummyMat.setGroupSet(GroupSet.makeGroups(dummyMat, false,0.5f, false)); Assert.assertNotSame(dummyMat.getNewick(), ""); AlignmentAnnotation paeCm = sq.addContactList(dummyMat); al.addAnnotation(paeCm); @@ -1602,7 +1645,6 @@ public class Jalview2xmlTests extends Jalview2xmlBase BitSet newGp = BitSet.valueOf(newlongvals); assertTrue(gp.equals(newGp)); } - File tfile = File.createTempFile("testStoreAndRecoverPAEmatrix", ".jvp"); new Jalview2XML(false).saveState(tfile); @@ -1629,7 +1671,6 @@ public class Jalview2xmlTests extends Jalview2xmlBase Assert.assertEquals(oldMap.getToRanges(), newMap.getToRanges()); Assert.assertEquals(oldMap.getFromRatio(), newMap.getFromRatio()); Assert.assertEquals(oldMap.getToRatio(), newMap.getToRatio()); - for (i = sq.getLength() - 1; i >= 0; i--) { ContactListI oldCM = dummyMat.getContactList(i), @@ -1646,6 +1687,55 @@ public class Jalview2xmlTests extends Jalview2xmlBase 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); + } }