/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.io; import static org.testng.AssertJUnit.assertTrue; import jalview.analysis.CrossRef; import jalview.api.AlignmentViewPanel; import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.CrossRefAction; import jalview.gui.Desktop; import java.util.IdentityHashMap; import java.util.List; import org.testng.Assert; import org.testng.annotations.Test; @Test(singleThreaded = true) public class CrossRef2xmlTests extends Jalview2xmlBase { /** * test store and recovery of expanded views * * @throws Exception */ @Test(groups = { "Operational" }, enabled = true) public void testRetrieveAndShowCrossref() throws Exception { // 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); /* * map between a view, and views generated after retrieving xrefs */ IdentityHashMap> viewxrefview = new IdentityHashMap>(); /* * map between a particular view and it's originating dbref path */ IdentityHashMap viewsourcedb = new IdentityHashMap(); 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()) { 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); } }