X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fproject%2FJalview2xmlTests.java;h=afc445e5108b4929e877bfaa381fbc6f395afdbf;hb=3c8a25936a2d805e7e3d7ab82f83b13135406d18;hp=6739cabe26f41341f84e75d6d2f4711969077fc5;hpb=8488bc9805734461d015552f1447a607412fc550;p=jalview.git diff --git a/test/jalview/project/Jalview2xmlTests.java b/test/jalview/project/Jalview2xmlTests.java index 6739cab..afc445e 100644 --- a/test/jalview/project/Jalview2xmlTests.java +++ b/test/jalview/project/Jalview2xmlTests.java @@ -27,6 +27,7 @@ import static org.testng.Assert.assertNull; import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; +import jalview.analysis.scoremodels.SimilarityParams; import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.api.FeatureColourI; @@ -49,6 +50,7 @@ import jalview.gui.AlignmentPanel; import jalview.gui.Desktop; import jalview.gui.FeatureRenderer; import jalview.gui.JvOptionPane; +import jalview.gui.PCAPanel; import jalview.gui.PopupMenu; import jalview.gui.SliderPanel; import jalview.io.DataSourceType; @@ -77,6 +79,8 @@ 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; @@ -105,35 +109,38 @@ public class Jalview2xmlTests extends Jalview2xmlBase assertNotNull(af, "Didn't read input file " + inFile); int olddsann = countDsAnn(af.getViewport()); assertTrue(olddsann > 0, "Didn't find any dataset annotations"); - af.changeColour_actionPerformed(JalviewColourScheme.RNAHelices - .toString()); + af.changeColour_actionPerformed( + JalviewColourScheme.RNAHelices.toString()); assertTrue( - af.getViewport().getGlobalColourScheme() instanceof RNAHelicesColour, + af.getViewport() + .getGlobalColourScheme() instanceof RNAHelicesColour, "Couldn't apply RNA helices colourscheme"); assertTrue(af.saveAlignment(tfile, FileFormat.Jalview), "Failed to store as a project."); af.closeMenuItem_actionPerformed(true); af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(tfile, DataSourceType.FILE); + af = new FileLoader().LoadFileWaitTillLoaded(tfile, + DataSourceType.FILE); assertNotNull(af, "Failed to import new project"); int newdsann = countDsAnn(af.getViewport()); assertEquals(olddsann, newdsann, "Differing numbers of dataset sequence annotation\nOriginally " + olddsann + " and now " + newdsann); - System.out - .println("Read in same number of annotations as originally present (" + System.out.println( + "Read in same number of annotations as originally present (" + olddsann + ")"); assertTrue( - af.getViewport().getGlobalColourScheme() instanceof RNAHelicesColour, + af.getViewport() + .getGlobalColourScheme() instanceof RNAHelicesColour, "RNA helices colourscheme was not applied on import."); } @Test(groups = { "Functional" }) public void testTCoffeeScores() throws Exception { - String inFile = "examples/uniref50.fa", inAnnot = "examples/uniref50.score_ascii"; + String inFile = "examples/uniref50.fa", + inAnnot = "examples/uniref50.score_ascii"; String tfile = File.createTempFile("JalviewTest", ".jvp") .getAbsolutePath(); AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile, @@ -142,28 +149,32 @@ public class Jalview2xmlTests extends Jalview2xmlBase af.loadJalviewDataFile(inAnnot, DataSourceType.FILE, null, null); assertSame(af.getViewport().getGlobalColourScheme().getClass(), TCoffeeColourScheme.class, "Didn't set T-coffee colourscheme"); - assertNotNull(ColourSchemeProperty.getColourScheme(af.getViewport() - .getAlignment(), af.getViewport().getGlobalColourScheme() - .getSchemeName()), "Recognise T-Coffee score from string"); + assertNotNull( + ColourSchemeProperty.getColourScheme( + af.getViewport().getAlignment(), + af.getViewport().getGlobalColourScheme() + .getSchemeName()), + "Recognise T-Coffee score from string"); assertTrue(af.saveAlignment(tfile, FileFormat.Jalview), "Failed to store as a project."); af.closeMenuItem_actionPerformed(true); af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(tfile, DataSourceType.FILE); + af = new FileLoader().LoadFileWaitTillLoaded(tfile, + DataSourceType.FILE); assertNotNull(af, "Failed to import new project"); assertSame(af.getViewport().getGlobalColourScheme().getClass(), TCoffeeColourScheme.class, "Didn't set T-coffee colourscheme for imported project."); - System.out - .println("T-Coffee score shading successfully recovered from project."); + System.out.println( + "T-Coffee score shading successfully recovered from project."); } @Test(groups = { "Functional" }) public void testColourByAnnotScores() throws Exception { - String inFile = "examples/uniref50.fa", inAnnot = "examples/testdata/uniref50_iupred.jva"; + String inFile = "examples/uniref50.fa", + inAnnot = "examples/testdata/uniref50_iupred.jva"; String tfile = File.createTempFile("JalviewTest", ".jvp") .getAbsolutePath(); AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile, @@ -174,12 +185,12 @@ public class Jalview2xmlTests extends Jalview2xmlBase .getSequenceAt(0).getAnnotation("IUPredWS (Short)"); assertTrue( - aa != null && aa.length > 0, + aa != null && aa.length > 0, "Didn't find any IUPred annotation to use to shade alignment."); AnnotationColourGradient cs = new AnnotationColourGradient(aa[0], null, AnnotationColourGradient.ABOVE_THRESHOLD); - AnnotationColourGradient gcs = new AnnotationColourGradient(aa[0], - null, AnnotationColourGradient.BELOW_THRESHOLD); + AnnotationColourGradient gcs = new AnnotationColourGradient(aa[0], null, + AnnotationColourGradient.BELOW_THRESHOLD); cs.setSeqAssociated(true); gcs.setSeqAssociated(true); af.changeColour(cs); @@ -195,15 +206,15 @@ public class Jalview2xmlTests extends Jalview2xmlBase "Failed to store as a project."); af.closeMenuItem_actionPerformed(true); af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(tfile, DataSourceType.FILE); + af = new FileLoader().LoadFileWaitTillLoaded(tfile, + DataSourceType.FILE); assertNotNull(af, "Failed to import new project"); // check for group and alignment colourschemes ColourSchemeI _rcs = af.getViewport().getGlobalColourScheme(); - ColourSchemeI _rgcs = af.getViewport().getAlignment().getGroups() - .get(0).getColourScheme(); + ColourSchemeI _rgcs = af.getViewport().getAlignment().getGroups().get(0) + .getColourScheme(); assertNotNull(_rcs, "Didn't recover global colourscheme"); assertTrue(_rcs instanceof AnnotationColourGradient, "Didn't recover annotation colour global scheme"); @@ -213,8 +224,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)) @@ -223,8 +234,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase } } assertTrue(diffseqcols, "Got Different sequence colours"); - System.out - .println("Per sequence colourscheme (Background) successfully applied and recovered."); + System.out.println( + "Per sequence colourscheme (Background) successfully applied and recovered."); assertNotNull(_rgcs, "Didn't recover group colourscheme"); assertTrue(_rgcs instanceof AnnotationColourGradient, @@ -233,25 +244,26 @@ 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, 0f)) + if (_rgcs.findColour(sqs[1].getCharAt(p), p, sqs[1], null, + 0f) != _rgcs.findColour(sqs[2].getCharAt(p), p, sqs[2], null, + 0f)) { diffgseqcols = true; } } assertTrue(diffgseqcols, "Got Different group sequence colours"); - System.out - .println("Per sequence (Group) colourscheme successfully applied and recovered."); + System.out.println( + "Per sequence (Group) colourscheme successfully applied and recovered."); } @Test(groups = { "Functional" }) public void gatherViewsHere() throws Exception { - int origCount = Desktop.getAlignFrames() == null ? 0 : Desktop - .getAlignFrames().length; + int origCount = Desktop.getAlignFrames() == null ? 0 + : Desktop.getAlignFrames().length; AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( "examples/exampleFile_2_7.jar", DataSourceType.FILE); assertNotNull(af, "Didn't read in the example file correctly."); @@ -332,14 +344,14 @@ public class Jalview2xmlTests extends Jalview2xmlBase sq.findPosition(p); try { - assertTrue( - (alaa.annotations[p] == null && refan.annotations[p] == null) - || alaa.annotations[p].value == refan.annotations[p].value, + assertTrue((alaa.annotations[p] == null + && refan.annotations[p] == null) + || alaa.annotations[p].value == refan.annotations[p].value, "Mismatch at alignment position " + p); } catch (NullPointerException q) { - Assert.fail("Mismatch of alignment annotations at position " - + p + " Ref seq ann: " + refan.annotations[p] + Assert.fail("Mismatch of alignment annotations at position " + p + + " Ref seq ann: " + refan.annotations[p] + " alignment " + alaa.annotations[p]); } } @@ -374,10 +386,10 @@ public class Jalview2xmlTests extends Jalview2xmlBase AssertJUnit.assertFalse(structureStyle.sameStyle(groupStyle)); groups.getAlignViewport().setViewStyle(structureStyle); - AssertJUnit.assertFalse(groupStyle.sameStyle(groups.getAlignViewport() - .getViewStyle())); - Assert.assertTrue(structureStyle.sameStyle(groups.getAlignViewport() - .getViewStyle())); + AssertJUnit.assertFalse( + groupStyle.sameStyle(groups.getAlignViewport().getViewStyle())); + Assert.assertTrue(structureStyle + .sameStyle(groups.getAlignViewport().getViewStyle())); } @@ -398,9 +410,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase // check FileLoader returned a reference to the one alignFrame that is // actually on the Desktop - assertSame( - af, - Desktop.getAlignFrameFor(af.getViewport()), + assertSame(af, Desktop.getAlignFrameFor(af.getViewport()), "Jalview2XML.loadAlignFrame() didn't return correct AlignFrame reference for multiple view window"); Desktop.explodeViews(af); @@ -427,11 +437,12 @@ public class Jalview2xmlTests extends Jalview2xmlBase af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), DataSourceType.FILE); Assert.assertNotNull(af); + Assert.assertEquals(Desktop.getAlignFrames().length, + Desktop.getAlignmentPanels( + af.getViewport().getSequenceSetId()).length); Assert.assertEquals( - Desktop.getAlignFrames().length, - Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length); - Assert.assertEquals( - Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length, + Desktop.getAlignmentPanels( + af.getViewport().getSequenceSetId()).length, oldviews); } @@ -533,8 +544,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase assertTrue(Jalview2XML.isVersionStringLaterThan(null, "Test")); assertTrue(Jalview2XML.isVersionStringLaterThan(null, "TEST")); assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "Test")); - assertTrue(Jalview2XML - .isVersionStringLaterThan(null, "Automated Build")); + assertTrue( + Jalview2XML.isVersionStringLaterThan(null, "Automated Build")); assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "Automated Build")); assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", @@ -643,8 +654,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase n++; } - File tfile = File - .createTempFile("testStoreAndRecoverGroupReps", ".jvp"); + File tfile = File.createTempFile("testStoreAndRecoverGroupReps", + ".jvp"); try { new Jalview2XML(false).saveState(tfile); @@ -683,9 +694,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase */ List hidden = hiddenSeqNames.get(ap.getViewName()); HiddenSequences hs = alignment.getHiddenSequences(); - assertEquals( - hidden.size(), - hs.getSize(), + assertEquals(hidden.size(), hs.getSize(), "wrong number of restored hidden sequences in " + ap.getViewName()); } @@ -727,14 +736,18 @@ public class Jalview2xmlTests extends Jalview2xmlBase pdbEntries[1] = new PDBEntry("3W5V", "B", Type.PDB, testFile); pdbEntries[2] = new PDBEntry("3W5V", "C", Type.PDB, testFile); pdbEntries[3] = new PDBEntry("3W5V", "D", Type.PDB, testFile); - Assert.assertEquals(seqs[0].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[0]); - Assert.assertEquals(seqs[1].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[1]); - Assert.assertEquals(seqs[2].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[2]); - Assert.assertEquals(seqs[3].getDatasetSequence().getAllPDBEntries() - .get(0), pdbEntries[3]); + Assert.assertEquals( + seqs[0].getDatasetSequence().getAllPDBEntries().get(0), + pdbEntries[0]); + Assert.assertEquals( + seqs[1].getDatasetSequence().getAllPDBEntries().get(0), + pdbEntries[1]); + Assert.assertEquals( + seqs[2].getDatasetSequence().getAllPDBEntries().get(0), + pdbEntries[2]); + Assert.assertEquals( + seqs[3].getDatasetSequence().getAllPDBEntries().get(0), + pdbEntries[3]); File tfile = File.createTempFile("testStoreAndRecoverPDBEntry", ".jvp"); try @@ -830,8 +843,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase sg.setEndRes(25); av.setSelectionGroup(sg); PopupMenu popupMenu = new PopupMenu(af.alignPanel, null, null); - popupMenu.changeColour_actionPerformed(JalviewColourScheme.Strand - .toString()); + popupMenu.changeColour_actionPerformed( + JalviewColourScheme.Strand.toString()); assertTrue(sg.getColourScheme() instanceof StrandColourScheme); assertEquals(al.getGroups().size(), 1); assertSame(al.getGroups().get(0), sg); @@ -917,8 +930,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase fr.setColour("type2", byLabel); // type3: by score above threshold - FeatureColourI byScore = new FeatureColour(Color.BLACK, Color.BLUE, 1, - 10); + FeatureColourI byScore = new FeatureColour(null, Color.BLACK, + Color.BLUE, null, 1, 10); byScore.setAboveThreshold(true); byScore.setThreshold(2f); fr.setColour("type3", byScore); @@ -930,8 +943,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase fr.setColour("type4", byAF); // type5: by attribute CSQ:PolyPhen below threshold - FeatureColourI byPolyPhen = new FeatureColour(Color.BLACK, Color.BLUE, - 1, 10); + FeatureColourI byPolyPhen = new FeatureColour(null, Color.BLACK, + Color.BLUE, null, 1, 10); byPolyPhen.setBelowThreshold(true); byPolyPhen.setThreshold(3f); byPolyPhen.setAttributeName("CSQ", "PolyPhen"); @@ -974,8 +987,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase */ af.closeMenuItem_actionPerformed(true); af = null; - af = new FileLoader() - .LoadFileWaitTillLoaded(filePath, DataSourceType.FILE); + af = new FileLoader().LoadFileWaitTillLoaded(filePath, + DataSourceType.FILE); assertNotNull(af, "Failed to import new project"); /* @@ -1102,4 +1115,66 @@ public class Jalview2xmlTests extends Jalview2xmlBase } return ds; } + + @Test(groups = "Functional") + public void testPcaViewAssociation() throws IOException + { + Desktop.instance.closeAll_actionPerformed(null); + final String PCAVIEWNAME = "With PCA"; + // create a new tempfile + File tempfile = File.createTempFile("jvPCAviewAssoc", "jvp"); + + { + String exampleFile = "examples/uniref50.fa"; + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(exampleFile, + DataSourceType.FILE); + assertNotNull(af, "Didn't read in the example file correctly."); + AlignmentPanel origView = (AlignmentPanel) af.getAlignPanels().get(0); + AlignmentPanel newview = af.newView(PCAVIEWNAME, true); + // create another for good measure + af.newView("Not the PCA View", true); + PCAPanel pcaPanel = new PCAPanel(origView, "BLOSUM62", + new SimilarityParams(true, true, true, false)); + // we're in the test exec thread, so we can just run synchronously here + pcaPanel.run(); + + // now switch the linked view + pcaPanel.selectAssociatedView(newview); + + assertTrue(pcaPanel.getAlignViewport() == newview.getAlignViewport(), + "PCA should be associated with 'With PCA' view: test is broken"); + + // now save and reload project + Jalview2XML jv2xml = new jalview.project.Jalview2XML(false); + tempfile.delete(); + jv2xml.saveState(tempfile); + assertTrue(jv2xml.errorMessage == null, + "Failed to save dummy project with PCA: test broken"); + } + + // load again. + Desktop.instance.closeAll_actionPerformed(null); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + tempfile.getCanonicalPath(), DataSourceType.FILE); + JInternalFrame[] frames = Desktop.instance.getAllFrames(); + // PCA and the tabbed alignment view should be the only two windows on the + // desktop + assertEquals(frames.length, 2, + "PCA and the tabbed alignment view should be the only two windows on the desktop"); + PCAPanel pcaPanel = (PCAPanel) frames[frames[0] == af ? 1 : 0]; + + AlignmentViewPanel restoredNewView = null; + for (AlignmentViewPanel alignpanel : Desktop.getAlignmentPanels(null)) + { + if (alignpanel.getAlignViewport() == pcaPanel.getAlignViewport()) + { + restoredNewView = alignpanel; + } + } + assertEquals(restoredNewView.getViewName(), PCAVIEWNAME); + assertTrue( + restoredNewView.getAlignViewport() == pcaPanel + .getAlignViewport(), + "Didn't restore correct view association for the PCA view"); + } }