X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fproject%2FJalview2xmlTests.java;h=c9532cc058fdf4d88290e30dcc8214ef4b0ed3ef;hb=8a2a0cda7067530f8481c2aec203e18d555f2dfd;hp=84af3e41982fd5077c94be1be3ff1f6dd5804309;hpb=97725e865411eec548a4b400ed9277b591f3fb6e;p=jalview.git diff --git a/test/jalview/project/Jalview2xmlTests.java b/test/jalview/project/Jalview2xmlTests.java index 84af3e4..c9532cc 100644 --- a/test/jalview/project/Jalview2xmlTests.java +++ b/test/jalview/project/Jalview2xmlTests.java @@ -32,7 +32,9 @@ import java.awt.Color; import java.awt.Rectangle; import java.io.File; import java.io.IOException; +import java.math.BigInteger; import java.util.ArrayList; +import java.util.BitSet; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -55,9 +57,11 @@ import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; import jalview.datamodel.ContactListI; +import jalview.datamodel.ContactMatrix; import jalview.datamodel.ContactMatrixI; import jalview.datamodel.DBRefEntry; import jalview.datamodel.GeneLocus; +import jalview.datamodel.GroupSet; import jalview.datamodel.HiddenSequences; import jalview.datamodel.Mapping; import jalview.datamodel.PDBEntry; @@ -99,6 +103,7 @@ import jalview.util.MapList; import jalview.util.matcher.Condition; import jalview.viewmodel.AlignmentViewport; import jalview.viewmodel.seqfeatures.FeatureRendererModel; +import jalview.ws.datamodel.MappableContactMatrixI; import jalview.ws.datamodel.alphafold.PAEContactMatrix; @Test(singleThreaded = true) @@ -109,6 +114,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); } @@ -242,9 +249,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase 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)) @@ -263,9 +269,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase 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, @@ -600,9 +605,11 @@ public class Jalview2xmlTests extends Jalview2xmlBase * test for patch release versions */ assertFalse(Jalview2XML.isVersionStringLaterThan("2.11.3.0", "2.11.2")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.11.3.0","2.11.4")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.12.2.0b1","2.12.2.0")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.12.2.3","2.12.2.2")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.11.3.0", "2.11.4")); + assertFalse( + Jalview2XML.isVersionStringLaterThan("2.12.2.0b1", "2.12.2.0")); + assertFalse( + Jalview2XML.isVersionStringLaterThan("2.12.2.3", "2.12.2.2")); } @@ -870,8 +877,11 @@ public class Jalview2xmlTests extends Jalview2xmlBase 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); + 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 @@ -880,7 +890,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase "testStoreAndRecoverAnnotRowElemColors", ".jvp"); tfile.deleteOnExit(); new Jalview2XML(false).saveState(tfile); - //Desktop.instance.closeAll_actionPerformed(null); + // Desktop.instance.closeAll_actionPerformed(null); af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), DataSourceType.FILE); Assert.assertNotNull(af, "Failed to reload project"); @@ -888,9 +898,10 @@ public class Jalview2xmlTests extends Jalview2xmlBase * verify alignment annotation has colors */ av = af.getViewport(); - + ColourSchemeI loadedCscheme = av.getGlobalColourScheme(); - Assert.assertTrue(loadedCscheme instanceof AnnotationColourGradient,"Didn't apply Annotation colour gradient"); + Assert.assertTrue(loadedCscheme instanceof AnnotationColourGradient, + "Didn't apply Annotation colour gradient"); acg = (AnnotationColourGradient) loadedCscheme; assertTrue(acg.isSeqAssociated()); assertTrue(acg.isPredefinedColours()); @@ -903,13 +914,16 @@ public class Jalview2xmlTests extends Jalview2xmlBase 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 != 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"); + Color newseqcol = af.alignPanel.getSeqPanel().seqCanvas + .getSequenceRenderer() + .getResidueColour(fsq, iStart + i, null); + Assert.assertTrue(seqcol[i].equals(newseqcol), + "Sequence shading is different"); } - + } /** @@ -1490,7 +1504,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase } /** - * Test that a view from an older version of Jalview is restored with Overview automatically shown when the preference is set + * Test that a view from an older version of Jalview is restored with Overview + * automatically shown when the preference is set * * @throws Exception */ @@ -1515,7 +1530,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase * * @throws Exception */ - @Test(groups = {"Functional"}, enabled=false) + @Test(groups = { "Functional" }, enabled = false) public void testReloadActuallyReloads() throws Exception { Desktop.instance.closeAll_actionPerformed(null); @@ -1537,7 +1552,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( ">seq1\nMATRSQFLVNF\n", DataSourceType.PASTE); AlignmentI al = af.getViewport().getAlignment(); - SequenceI sq = al.getSequenceAt(0); + // PAE matrices are added as reference annotation to the dataset sequence + // at least for now. + SequenceI sq = al.getSequenceAt(0).getDatasetSequence(); int i = sq.getLength(); float[][] paevals = new float[i][i]; for (i = i - 1; i >= 0; i--) @@ -1546,12 +1563,48 @@ public class Jalview2xmlTests extends Jalview2xmlBase { paevals[i][j] = ((i - j < 2) || ((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); + 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]); + dummyMat.setGroupSet(GroupSet.makeGroups(dummyMat, false,0.5f, false)); + Assert.assertNotSame(dummyMat.getNewick(), ""); AlignmentAnnotation paeCm = sq.addContactList(dummyMat); al.addAnnotation(paeCm); + // verify store/restore of group bitsets + for (BitSet gp : dummyMat.getGroups()) + { + StringBuilder sb = new StringBuilder(); + for (long val : gp.toLongArray()) + { + if (sb.length() > 0) + { + sb.append(","); + } + sb.append(val); + } + String[] longvals = sb.toString().split(","); + long[] newlongvals = new long[longvals.length]; + for (int lv = 0; lv < longvals.length; lv++) + { + try + { + newlongvals[lv] = Long.valueOf(longvals[lv]); + } catch (Exception x) + { + Assert.fail("failed to deserialise bitset element "); + } + } + BitSet newGp = BitSet.valueOf(newlongvals); + assertTrue(gp.equals(newGp)); + } File tfile = File.createTempFile("testStoreAndRecoverPAEmatrix", ".jvp"); new Jalview2XML(false).saveState(tfile); @@ -1560,26 +1613,39 @@ public class Jalview2xmlTests extends Jalview2xmlBase af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), DataSourceType.FILE); AlignmentI newAl = af.getViewport().getAlignment(); - SequenceI newSeq = newAl.getSequenceAt(0); + SequenceI newSeq = newAl.getSequenceAt(0).getDatasetSequence(); // 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 + // and can be found for the annotation on the sequence + ContactMatrixI restoredMat = newSeq .getContactMatrixFor(newSeq.getAnnotation()[0]); Assert.assertNotNull(restoredMat); + MapList oldMap = ((MappableContactMatrixI) dummyMat).getMapFor(sq); + MapList newMap = ((MappableContactMatrixI) restoredMat) + .getMapFor(newSeq); + Assert.assertEquals(oldMap.getFromRanges(), newMap.getFromRanges()); + 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), newCM = restoredMat.getContactList(i); for (int j = oldCM.getContactHeight(); j >= 0; j--) { - Assert.assertEquals(oldCM.getContactAt(j), newCM.getContactAt(j)); + double old_j = oldCM.getContactAt(j); + double new_j = newCM.getContactAt(j); + Assert.assertEquals(old_j, new_j); } } + Assert.assertEquals(restoredMat.hasGroups(), dummyMat.hasGroups()); + Assert.assertEquals(restoredMat.getGroups(), dummyMat.getGroups()); + Assert.assertEquals(restoredMat.hasTree(), dummyMat.hasTree()); + Assert.assertEquals(restoredMat.getNewick(), dummyMat.getNewick()); } }