X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FCrossRef2xmlTests.java;h=dd6aac6ef8aba7ce2a0f62b77023afd7a4cb0031;hb=c4baa6ec459f004be9c3b3d50cfbb29212b13312;hp=36ea69e223988975619a82671fddafac0b1da0ad;hpb=ef3475e9a95da7e3af80ae155b1b14069311645c;p=jalview.git diff --git a/test/jalview/io/CrossRef2xmlTests.java b/test/jalview/io/CrossRef2xmlTests.java index 36ea69e..dd6aac6 100644 --- a/test/jalview/io/CrossRef2xmlTests.java +++ b/test/jalview/io/CrossRef2xmlTests.java @@ -20,615 +20,114 @@ */ package jalview.io; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertFalse; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; -import jalview.api.AlignViewportI; +import jalview.analysis.CrossRef; import jalview.api.AlignmentViewPanel; -import jalview.api.ViewStyleI; -import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; -import jalview.datamodel.HiddenSequences; -import jalview.datamodel.SequenceCollectionI; -import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; +import jalview.gui.CrossRefAction; import jalview.gui.Desktop; -import jalview.gui.Jalview2XML; -import jalview.schemes.AnnotationColourGradient; -import jalview.schemes.ColourSchemeI; -import jalview.structure.StructureImportSettings; -import jalview.viewmodel.AlignmentViewport; -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; +import java.util.IdentityHashMap; import java.util.List; -import java.util.Map; import org.testng.Assert; -import org.testng.AssertJUnit; import org.testng.annotations.Test; @Test(singleThreaded = true) public class CrossRef2xmlTests extends Jalview2xmlBase { - @Test(groups = { "Functional" }) - public void testRNAStructureRecovery() throws Exception - { - String inFile = "examples/RF00031_folded.stk"; - String tfile = File.createTempFile("JalviewTest", ".jvp") - .getAbsolutePath(); - AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - inFile, FormatAdapter.FILE); - assertTrue("Didn't read input file " + inFile, af != null); - int olddsann = countDsAnn(af.getViewport()); - assertTrue("Didn't find any dataset annotations", olddsann > 0); - af.rnahelicesColour_actionPerformed(null); - assertTrue( - "Couldn't apply RNA helices colourscheme", - af.getViewport().getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); - assertTrue("Failed to store as a project.", - af.saveAlignment(tfile, "Jalview")); - af.closeMenuItem_actionPerformed(true); - af = null; - af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile, - FormatAdapter.FILE); - assertTrue("Failed to import new project", af != null); - int newdsann = countDsAnn(af.getViewport()); - assertTrue( - "Differing numbers of dataset sequence annotation\nOriginally " - + olddsann + " and now " + newdsann, - olddsann == newdsann); - System.out - .println("Read in same number of annotations as originally present (" - + olddsann + ")"); - assertTrue( - "RNA helices colourscheme was not applied on import.", - af.getViewport().getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); - } - - @Test(groups = { "Functional" }) - public void testTCoffeeScores() throws Exception - { - String inFile = "examples/uniref50.fa", inAnnot = "examples/uniref50.score_ascii"; - String tfile = File.createTempFile("JalviewTest", ".jvp") - .getAbsolutePath(); - AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - inFile, FormatAdapter.FILE); - assertTrue("Didn't read input file " + inFile, af != null); - af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null, null); - assertTrue( - "Didn't set T-coffee colourscheme", - af.getViewport().getGlobalColourScheme().getClass() - .equals(jalview.schemes.TCoffeeColourScheme.class)); - assertTrue( - "Recognise T-Coffee score from string", - jalview.schemes.ColourSchemeProperty.getColour(af.getViewport() - .getAlignment(), - jalview.schemes.ColourSchemeProperty.getColourName(af - .getViewport().getGlobalColourScheme())) != null); - - assertTrue("Failed to store as a project.", - af.saveAlignment(tfile, "Jalview")); - af.closeMenuItem_actionPerformed(true); - af = null; - af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile, - FormatAdapter.FILE); - assertTrue("Failed to import new project", af != null); - assertTrue( - "Didn't set T-coffee colourscheme for imported project.", - af.getViewport().getGlobalColourScheme().getClass() - .equals(jalview.schemes.TCoffeeColourScheme.class)); - 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 tfile = File.createTempFile("JalviewTest", ".jvp") - .getAbsolutePath(); - AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - inFile, FormatAdapter.FILE); - assertTrue("Didn't read input file " + inFile, af != null); - af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null, null); - AlignmentAnnotation[] aa = af.getViewport().getAlignment() - .getSequenceAt(0).getAnnotation("IUPredWS (Short)"); - assertTrue( - "Didn't find any IUPred annotation to use to shade alignment.", - aa != null && aa.length > 0); - AnnotationColourGradient cs = new jalview.schemes.AnnotationColourGradient( - aa[0], null, AnnotationColourGradient.ABOVE_THRESHOLD); - AnnotationColourGradient gcs = new jalview.schemes.AnnotationColourGradient( - aa[0], null, AnnotationColourGradient.BELOW_THRESHOLD); - cs.setSeqAssociated(true); - gcs.setSeqAssociated(true); - af.changeColour(cs); - SequenceGroup sg = new SequenceGroup(); - sg.setStartRes(57); - sg.setEndRes(92); - sg.cs = gcs; - af.getViewport().getAlignment().addGroup(sg); - sg.addSequence(af.getViewport().getAlignment().getSequenceAt(1), false); - sg.addSequence(af.getViewport().getAlignment().getSequenceAt(2), true); - af.alignPanel.alignmentChanged(); - assertTrue("Failed to store as a project.", - af.saveAlignment(tfile, "Jalview")); - af.closeMenuItem_actionPerformed(true); - af = null; - af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile, - FormatAdapter.FILE); - assertTrue("Failed to import new project", af != null); - - // check for group and alignment colourschemes - - ColourSchemeI _rcs = af.getViewport().getGlobalColourScheme(); - ColourSchemeI _rgcs = af.getViewport().getAlignment().getGroups() - .get(0).cs; - assertTrue("Didn't recover global colourscheme", _rcs != null); - assertTrue("Didn't recover annotation colour global scheme", - _rcs instanceof AnnotationColourGradient); - AnnotationColourGradient __rcs = (AnnotationColourGradient) _rcs; - assertTrue("Annotation colourscheme wasn't sequence associated", - __rcs.isSeqAssociated()); - - 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++) - { - if (_rcs.findColour(sqs[0].getCharAt(p), p, sqs[0]) != _rcs - .findColour(sqs[5].getCharAt(p), p, sqs[5])) - { - diffseqcols = true; - } - } - assertTrue("Got Different sequence colours", diffseqcols); - System.out - .println("Per sequence colourscheme (Background) successfully applied and recovered."); - - assertTrue("Didn't recover group colourscheme", _rgcs != null); - assertTrue("Didn't recover annotation colour group colourscheme", - _rgcs instanceof AnnotationColourGradient); - __rcs = (AnnotationColourGradient) _rgcs; - assertTrue("Group Annotation colourscheme wasn't sequence associated", - __rcs.isSeqAssociated()); - - for (int p = 0, pSize = af.getViewport().getAlignment().getWidth(); p < pSize - && (!diffseqcols || !diffgseqcols); p++) - { - if (_rgcs.findColour(sqs[1].getCharAt(p), p, sqs[1]) != _rgcs - .findColour(sqs[2].getCharAt(p), p, sqs[2])) - { - diffgseqcols = true; - } - } - assertTrue("Got Different group sequence colours", diffgseqcols); - 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; - AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", FormatAdapter.FILE); - assertTrue("Didn't read in the example file correctly.", af != null); - assertTrue("Didn't gather the views in the example file.", - Desktop.getAlignFrames().length == 1 + origCount); - - } - - @Test(groups = { "Functional" }) - public void viewRefPdbAnnotation() throws Exception - { - // TODO: Make this pass without setting StructureParser.JALVIEW_PARSER - // StructureImportSettings - // .setDefaultPDBFileParser(StructureParser.JALVIEW_PARSER); - StructureImportSettings.setProcessSecondaryStructure(true); - StructureImportSettings.setVisibleChainAnnotation(true); - AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", FormatAdapter.FILE); - assertTrue("Didn't read in the example file correctly.", af != null); - AlignmentViewPanel sps = null; - for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels()) - { - if ("Spinach Feredoxin Structure".equals(ap.getViewName())) - { - sps = ap; - break; - } - } - assertTrue("Couldn't find the structure view", sps != null); - SequenceI sq = sps.getAlignment().findName("1A70|"); - AlignmentAnnotation refan = null; - for (AlignmentAnnotation ra : sps.getAlignment() - .getAlignmentAnnotation()) - { - if (ra.graph != 0) - { - refan = ra; - break; - } - } - assertTrue("Annotation secondary structure not found.", refan != null); - assertTrue("Couldn't find 1a70 null chain", sq != null); - // compare the manually added temperature factor annotation - // to the track automatically transferred from the pdb structure on load - for (AlignmentAnnotation ala : sq.getDatasetSequence().getAnnotation()) - { - AlignmentAnnotation alaa; - sq.addAlignmentAnnotation(alaa = new AlignmentAnnotation(ala)); - alaa.adjustForAlignment(); - if (ala.graph == refan.graph) - { - for (int p = 0; p < ala.annotations.length; p++) - { - sq.findPosition(p); - try - { - assertTrue( - "Mismatch at alignment position " + p, - (alaa.annotations[p] == null && refan.annotations[p] == null) - || alaa.annotations[p].value == refan.annotations[p].value); - } catch (NullPointerException q) - { - Assert.fail("Mismatch of alignment annotations at position " - + p + " Ref seq ann: " + refan.annotations[p] - + " alignment " + alaa.annotations[p]); - } - } - } - } - - } - - @Test(groups = { "Functional" }) - public void testCopyViewSettings() throws Exception - { - AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", FormatAdapter.FILE); - assertTrue("Didn't read in the example file correctly.", af != null); - AlignmentViewPanel sps = null, groups = null; - for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels()) - { - if ("Spinach Feredoxin Structure".equals(ap.getViewName())) - { - sps = ap; - } - if (ap.getViewName().contains("MAFFT")) - { - groups = ap; - } - } - assertTrue("Couldn't find the structure view", sps != null); - assertTrue("Couldn't find the MAFFT view", groups != null); - - ViewStyleI structureStyle = sps.getAlignViewport().getViewStyle(); - ViewStyleI groupStyle = groups.getAlignViewport().getViewStyle(); - AssertJUnit.assertFalse(structureStyle.sameStyle(groupStyle)); - - groups.getAlignViewport().setViewStyle(structureStyle); - AssertJUnit.assertFalse(groupStyle.sameStyle(groups.getAlignViewport() - .getViewStyle())); - Assert.assertTrue(structureStyle.sameStyle(groups.getAlignViewport() - .getViewStyle())); - - } - /** * test store and recovery of expanded views * * @throws Exception */ - @Test(groups = { "Functional" }, enabled = true) - public void testStoreAndRecoverExpandedviews() throws Exception - { - Desktop.instance.closeAll_actionPerformed(null); - - AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", FormatAdapter.FILE); - assertTrue("Didn't read in the example file correctly.", af != null); - Assert.assertEquals(Desktop.getAlignFrames().length, 1); - String afid = af.getViewport().getSequenceSetId(); - - // check FileLoader returned a reference to the one alignFrame that is - // actually on the Desktop - assertTrue( - "Jalview2XML.loadAlignFrame() didn't return correct AlignFrame reference for multiple view window", - af == Desktop.getAlignFrameFor(af.getViewport())); - - Desktop.explodeViews(af); - - int oldviews = Desktop.getAlignFrames().length; - Assert.assertEquals(Desktop.getAlignFrames().length, - Desktop.getAlignmentPanels(afid).length); - File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp"); - try - { - new Jalview2XML(false).saveState(tfile); - } catch (Error e) - { - Assert.fail("Didn't save the expanded view state", e); - } catch (Exception e) - { - Assert.fail("Didn't save the expanded view state", e); - } - Desktop.instance.closeAll_actionPerformed(null); - if (Desktop.getAlignFrames() != null) - { - Assert.assertEquals(Desktop.getAlignFrames().length, 0); - } - af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( - tfile.getAbsolutePath(), FormatAdapter.FILE); - Assert.assertNotNull(af); - Assert.assertEquals( - Desktop.getAlignFrames().length, - Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length); - Assert.assertEquals( - oldviews, - Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length); - } - - /** - * Test save and reload of a project with a different representative sequence - * in each view. - * - * @throws Exception - */ - @Test(groups = { "Functional" }) - public void testStoreAndRecoverReferenceSeqSettings() throws Exception - { - Desktop.instance.closeAll_actionPerformed(null); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/exampleFile_2_7.jar", FormatAdapter.FILE); - assertTrue("Didn't read in the example file correctly.", af != null); - String afid = af.getViewport().getSequenceSetId(); - - // remember reference sequence for each panel - Map refseqs = new HashMap(); - - /* - * mark sequence 2, 3, 4.. in panels 1, 2, 3... - * as reference sequence for itself and the preceding sequence - */ - int n = 1; - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - AlignViewportI av = ap.getAlignViewport(); - AlignmentI alignment = ap.getAlignment(); - int repIndex = n % alignment.getHeight(); - SequenceI rep = alignment.getSequenceAt(repIndex); - refseqs.put(ap.getViewName(), rep); - - // code from mark/unmark sequence as reference in jalview.gui.PopupMenu - // todo refactor this to an alignment view controller - av.setDisplayReferenceSeq(true); - av.setColourByReferenceSeq(true); - av.getAlignment().setSeqrep(rep); - - n++; - } - File tfile = File.createTempFile("testStoreAndRecoverReferenceSeq", - ".jvp"); - try - { - new Jalview2XML(false).saveState(tfile); - } catch (Throwable e) - { - Assert.fail("Didn't save the expanded view state", e); - } - Desktop.instance.closeAll_actionPerformed(null); - if (Desktop.getAlignFrames() != null) - { - Assert.assertEquals(Desktop.getAlignFrames().length, 0); - } - - af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), - FormatAdapter.FILE); - afid = af.getViewport().getSequenceSetId(); - - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - // check representative - AlignmentI alignment = ap.getAlignment(); - SequenceI rep = alignment.getSeqrep(); - Assert.assertNotNull(rep, - "Couldn't restore sequence representative from project"); - // can't use a strong equals here, because by definition, the sequence IDs - // will be different. - // could set vamsas session save/restore flag to preserve IDs across - // load/saves. - Assert.assertEquals(refseqs.get(ap.getViewName()).toString(), - rep.toString(), - "Representative wasn't the same when recovered."); - Assert.assertTrue(ap.getAlignViewport().isDisplayReferenceSeq(), - "Display reference sequence view setting not set."); - Assert.assertTrue(ap.getAlignViewport().isColourByReferenceSeq(), - "Colour By Reference Seq view setting not set."); - } - } - - @Test(groups = { "Functional" }) - public void testIsVersionStringLaterThan() - { - /* - * No version / development / test / autobuild is leniently assumed to be - * compatible - */ - assertTrue(Jalview2XML.isVersionStringLaterThan(null, null)); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", null)); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, "2.8.3")); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, - "Development Build")); - assertTrue(Jalview2XML.isVersionStringLaterThan(null, - "DEVELOPMENT BUILD")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", - "Development Build")); - 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("2.8.3", - "Automated Build")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", - "AUTOMATED BUILD")); - - /* - * same version returns true i.e. compatible - */ - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8", "2.8")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.3")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3b1")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3B1", "2.8.3b1")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3B1")); - - /* - * later version returns true - */ - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.4")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.9")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.9.2")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8", "2.8.3")); - assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.3b1")); - - /* - * earlier version returns false - */ - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.4", "2.8.3")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.2b1")); - assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.0b2", "2.8.0b1")); - } - - /** - * Test save and reload of a project with a different sequence group (and - * representative sequence) in each view. - * - * @throws Exception - */ - @Test(groups = { "Functional" }) - public void testStoreAndRecoverGroupRepSeqs() throws Exception + @Test(groups = { "Operational" }, enabled = true) + public void testRetrieveAndShowCrossref() throws Exception { - Desktop.instance.closeAll_actionPerformed(null); - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/uniref50.fa", FormatAdapter.FILE); - assertTrue("Didn't read in the example file correctly.", af != null); - String afid = af.getViewport().getSequenceSetId(); - // make a second view of the alignment - af.newView_actionPerformed(null); - - /* - * remember representative and hidden sequences marked - * on each panel - */ - Map repSeqs = new HashMap(); - Map> hiddenSeqNames = new HashMap>(); - - /* - * mark sequence 2, 3, 4.. in panels 1, 2, 3... - * as reference sequence for itself and the preceding sequence - */ - int n = 1; - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - AlignViewportI av = ap.getAlignViewport(); - AlignmentI alignment = ap.getAlignment(); - int repIndex = n % alignment.getHeight(); - // ensure at least one preceding sequence i.e. index >= 1 - repIndex = Math.max(repIndex, 1); - SequenceI repSeq = alignment.getSequenceAt(repIndex); - repSeqs.put(ap.getViewName(), repSeq); - List hiddenNames = new ArrayList(); - hiddenSeqNames.put(ap.getViewName(), hiddenNames); - + // for every set of db queries + // retrieve db query + // verify presence of expected xrefs + // show xrefs - verify expected type of frame is shown for each xref + // show xrefs again + // - verify original -> xref -> xref(original) recovers frame containing at + // least the first retrieved sequence + // store + // 1. whole project + // 2. individual frames + // 3. load each one back and verify + // . aligned sequences (.toString() ) + // . xrefs (.toString() ) + // . codonframes + // + // + for (String[] did : new String[][] { { "UNIPROT", "P01731" } }) + { + AlignFrame af = jalview.gui.SequenceFetcher.fetchAndShow(did[0], + did[1]).get(0); + assertTrue("Didn't read in the example file correctly.", af != null); + boolean dna = af.getViewport().getAlignment().isNucleotide(); + AlignmentI retral = af.getViewport().getAlignment(); + AlignmentI dataset = retral.getDataset(); + SequenceI[] seqs = retral.getSequencesArray(); + List ptypes = (seqs == null || seqs.length == 0) ? null + : new CrossRef(seqs, dataset) + .findXrefSourcesForSequences(dna); /* - * have rep sequence represent itself and the one before it - * this hides the group (except for the rep seq) + * map between a view, and views generated after retrieving xrefs */ - SequenceGroup sg = new SequenceGroup(); - sg.addSequence(repSeq, false); - SequenceI precedingSeq = alignment.getSequenceAt(repIndex - 1); - sg.addSequence(precedingSeq, false); - sg.setSeqrep(repSeq); - assertTrue(sg.getSequences().contains(repSeq)); - assertTrue(sg.getSequences().contains(precedingSeq)); - av.setSelectionGroup(sg); - assertSame(repSeq, sg.getSeqrep()); - + IdentityHashMap> viewxrefview = new IdentityHashMap>(); /* - * represent group with sequence adds to a map of hidden rep sequences - * (it does not create a group on the alignment) + * map between a particular view and it's originating dbref path */ - ((AlignmentViewport) av).hideSequences(repSeq, true); - assertSame(repSeq, sg.getSeqrep()); - assertTrue(sg.getSequences().contains(repSeq)); - assertTrue(sg.getSequences().contains(precedingSeq)); - assertTrue("alignment has groups", alignment.getGroups().isEmpty()); - Map hiddenRepSeqsMap = av - .getHiddenRepSequences(); - assertNotNull(hiddenRepSeqsMap); - assertEquals(1, hiddenRepSeqsMap.size()); - assertSame(sg, hiddenRepSeqsMap.get(repSeq)); - assertTrue(alignment.getHiddenSequences().isHidden(precedingSeq)); - assertFalse(alignment.getHiddenSequences().isHidden(repSeq)); - hiddenNames.add(precedingSeq.getName()); - - n++; - } - File tfile = File - .createTempFile("testStoreAndRecoverGroupReps", ".jvp"); - try - { - new Jalview2XML(false).saveState(tfile); - } catch (Throwable e) - { - Assert.fail("Didn't save the expanded view state", e); - } - Desktop.instance.closeAll_actionPerformed(null); - if (Desktop.getAlignFrames() != null) - { - Assert.assertEquals(Desktop.getAlignFrames().length, 0); - } - - af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), - FormatAdapter.FILE); - afid = af.getViewport().getSequenceSetId(); + IdentityHashMap viewsourcedb = new IdentityHashMap(); - for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) - { - String viewName = ap.getViewName(); - AlignViewportI av = ap.getAlignViewport(); - AlignmentI alignment = ap.getAlignment(); - List groups = alignment.getGroups(); - assertNotNull(groups); - assertTrue("Alignment has groups", groups.isEmpty()); - Map hiddenRepSeqsMap = av - .getHiddenRepSequences(); - assertNotNull("No hidden represented sequences", hiddenRepSeqsMap); - assertEquals(1, hiddenRepSeqsMap.size()); - assertEquals(repSeqs.get(viewName).getDisplayId(true), - hiddenRepSeqsMap.keySet().iterator().next() - .getDisplayId(true)); + String first = did[0] + " " + did[1]; + viewsourcedb.put(af.alignPanel, first); + for (String db : ptypes) + { + // retrieve and show cross-refs in this thread + CrossRefAction cra = new CrossRefAction(af, seqs, dna, db); + cra.run(); + Assert.assertTrue(cra.getXrefViews().size() > 0, + "No crossrefs retrieved for " + db); + viewxrefview.put(af.alignPanel, cra.getXrefViews()); + + for (AlignmentViewPanel avp : cra.getXrefViews()) + { - /* - * verify hidden sequences in restored panel - */ - List hidden = hiddenSeqNames.get(ap.getViewName()); - HiddenSequences hs = alignment.getHiddenSequences(); - assertEquals( - "wrong number of restored hidden sequences in " - + ap.getViewName(), hidden.size(), hs.getSize()); + SequenceI[] xrseqs = avp.getAlignment().getSequencesArray(); + String nextxref = first + " -> " + db; + viewsourcedb.put(avp, nextxref); + List xrptypes = (seqs == null || seqs.length == 0) ? null + : new CrossRef(xrseqs, dataset) + .findXrefSourcesForSequences(avp + .getAlignViewport().isNucleotide()); + for (String xrefdb : xrptypes) + { + AlignFrame nextaf = Desktop.getAlignFrameFor(avp + .getAlignViewport()); + cra = new CrossRefAction(nextaf, xrseqs, avp.getAlignViewport() + .isNucleotide(), xrefdb); + cra.run(); + Assert.assertTrue(cra.getXrefViews().size() > 0, + "No crossrefs found for '" + nextxref + "' to " + + xrefdb + " via '" + nextaf.getTitle() + "'"); + // save views for analysis + viewxrefview.put(avp, cra.getXrefViews()); + for (AlignmentViewPanel nextavp : cra.getXrefViews()) + { + + viewsourcedb.put(nextavp, nextxref + " -> " + xrefdb); + } + } + } + } } + Thread.sleep(50000); } + }