X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fproject%2FJalview2xmlTests.java;h=f0fbfc4be423995c23b4f7031af445d35176cc20;hb=7d602d0e4b439e56af3e4551ed71f181a8025534;hp=95af77a237230cedb93d54a17e1a4cb5266db683;hpb=76d3768510fea49f5b2498877d23a311be9c5220;p=jalview.git diff --git a/test/jalview/project/Jalview2xmlTests.java b/test/jalview/project/Jalview2xmlTests.java index 95af77a..f0fbfc4 100644 --- a/test/jalview/project/Jalview2xmlTests.java +++ b/test/jalview/project/Jalview2xmlTests.java @@ -52,6 +52,7 @@ import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; import jalview.datamodel.GeneLocus; +import jalview.datamodel.HiddenMarkovModel; import jalview.datamodel.HiddenSequences; import jalview.datamodel.Mapping; import jalview.datamodel.PDBEntry; @@ -65,7 +66,6 @@ import jalview.datamodel.features.FeatureMatcher; import jalview.datamodel.features.FeatureMatcherSet; import jalview.datamodel.features.FeatureMatcherSetI; import jalview.gui.AlignFrame; -import jalview.gui.AlignViewport; import jalview.gui.AlignmentPanel; import jalview.gui.Desktop; import jalview.gui.JvOptionPane; @@ -92,6 +92,8 @@ import jalview.util.matcher.Condition; import jalview.viewmodel.AlignmentViewport; import jalview.viewmodel.seqfeatures.FeatureRendererModel; +import junit.extensions.PA; + @Test(singleThreaded = true) public class Jalview2xmlTests extends Jalview2xmlBase { @@ -159,7 +161,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase DataSourceType.FILE); assertNotNull(af, "Didn't read input file " + inFile); af.loadJalviewDataFile(inAnnot, DataSourceType.FILE, null, null); - AlignViewport viewport = af.getViewport(); + AlignViewportI viewport = af.getViewport(); assertSame(viewport.getGlobalColourScheme().getClass(), TCoffeeColourScheme.class, "Didn't set T-coffee colourscheme"); assertNotNull( @@ -827,7 +829,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( "examples/uniref50.fa", DataSourceType.FILE); - AlignViewport av = af.getViewport(); + AlignViewportI av = af.getViewport(); AlignmentI al = av.getAlignment(); /* @@ -1073,6 +1075,59 @@ public class Jalview2xmlTests extends Jalview2xmlBase } /** + * Load an HMM profile to an alignment, and confirm it is correctly restored + * when reloaded from project + * + * @throws IOException + */ + @Test(groups = { "Functional" }) + public void testStoreAndRecoverHmmProfile() throws IOException + { + Desktop.getInstance().closeAll_actionPerformed(null); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + "examples/uniref50.fa", DataSourceType.FILE); + + AlignViewportI av = af.getViewport(); + AlignmentI al = av.getAlignment(); + + /* + * mimic drag and drop of hmm file on to alignment + */ + AlignFrame af2 = new FileLoader().LoadFileWaitTillLoaded( + "examples/uniref50.hmm", DataSourceType.FILE); + al.insertSequenceAt(0, + af2.getViewport().getAlignment().getSequenceAt(0)); + + /* + * check it loaded in + */ + SequenceI hmmSeq = al.getSequenceAt(0); + assertTrue(hmmSeq.hasHMMProfile()); + HiddenMarkovModel hmm = hmmSeq.getHMM(); + assertSame(hmm.getConsensusSequence(), hmmSeq); + + /* + * save project, close windows, reload project, verify + */ + File tfile = File.createTempFile("testStoreAndRecoverHmmProfile", + ".jvp"); + tfile.deleteOnExit(); + new Jalview2XML(false).saveState(tfile); + Desktop.getInstance().closeAll_actionPerformed(null); + af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), + DataSourceType.FILE); + Assert.assertNotNull(af, "Failed to reload project"); + + hmmSeq = al.getSequenceAt(0); + assertTrue(hmmSeq.hasHMMProfile()); + assertSame(hmm.getConsensusSequence(), hmmSeq); + Mapping mapToHmmConsensus = (Mapping) PA.getValue(hmm, + "mapToHmmConsensus"); + assertNotNull(mapToHmmConsensus); + assertSame(mapToHmmConsensus.getTo(), hmmSeq.getDatasetSequence()); + } + + /** * pre 2.11 - jalview 2.10 erroneously created new dataset entries for each * view (JAL-3171) this test ensures we can import and merge those views */