X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FCrossRef2xmlTests.java;fp=test%2Fjalview%2Fio%2FCrossRef2xmlTests.java;h=3ca6ed815da471d0d56e0ba1aae904338f54e68e;hb=ec8f3cedf60fb1feed6d34de6b49f6bfa78b9dd8;hp=ae5ed2598f64008929f5240f273ee7ea2da0fc8f;hpb=056dad85a910551cc95e44d451a61f6b8c4dd35d;p=jalview.git diff --git a/test/jalview/io/CrossRef2xmlTests.java b/test/jalview/io/CrossRef2xmlTests.java index ae5ed25..3ca6ed8 100644 --- a/test/jalview/io/CrossRef2xmlTests.java +++ b/test/jalview/io/CrossRef2xmlTests.java @@ -34,6 +34,7 @@ import jalview.gui.AlignFrame; import jalview.gui.CrossRefAction; import jalview.gui.Desktop; import jalview.gui.JvOptionPane; +import jalview.gui.SequenceFetcher; import jalview.project.Jalview2XML; import jalview.util.DBRefUtils; @@ -137,9 +138,10 @@ public class CrossRef2xmlTests extends Jalview2xmlBase List failedXrefMenuItems = new ArrayList<>(); List failedProjectRecoveries = new ArrayList<>(); // only search for ensembl or Uniprot crossrefs - List limit=Arrays.asList(new String[] { - DBRefUtils.getCanonicalName("ENSEMBL"), - DBRefUtils.getCanonicalName("Uniprot")}); + List limit = Arrays + .asList(new String[] + { DBRefUtils.getCanonicalName("ENSEMBL"), + DBRefUtils.getCanonicalName("Uniprot") }); // for every set of db queries // retrieve db query // verify presence of expected xrefs @@ -160,326 +162,328 @@ public class CrossRef2xmlTests extends Jalview2xmlBase List keyseq = new ArrayList<>(); Map savedProjects = new HashMap<>(); -// for (String[] did : new String[][] { { "UNIPROT", "P00338" } }) -// { - // pass counters - 0 - first pass, 1 means retrieve project rather than - // perform action - int pass1 = 0, pass2 = 0, pass3 = 0; - // each do loop performs two iterations in the first outer loop pass, but - // only performs one iteration on the second outer loop - // ie. pass 1 = 0 {pass 2= 0 { pass 3 = 0,1 }, pass 2=1 { pass 3 = 0 }}, 1 - // { pass 2 = 0 { pass 3 = 0 } } - do + // for (String[] did : new String[][] { { "UNIPROT", "P00338" } }) + // { + // pass counters - 0 - first pass, 1 means retrieve project rather than + // perform action + int pass1 = 0, pass2 = 0, pass3 = 0; + // each do loop performs two iterations in the first outer loop pass, but + // only performs one iteration on the second outer loop + // ie. pass 1 = 0 {pass 2= 0 { pass 3 = 0,1 }, pass 2=1 { pass 3 = 0 }}, 1 + // { pass 2 = 0 { pass 3 = 0 } } + do + { + String first = forSource + " " + forAccession;// did[0] + " " + did[1]; + AlignFrame af = null; + boolean dna; + AlignmentI retral; + AlignmentI dataset; + SequenceI[] seqs; + List ptypes = null; + if (pass1 == 0) { - String first = forSource + " " + forAccession;//did[0] + " " + did[1]; - AlignFrame af = null; - boolean dna; - AlignmentI retral; - AlignmentI dataset; - SequenceI[] seqs; - List ptypes = null; - if (pass1 == 0) - { - // retrieve dbref + // retrieve dbref - List afs = jalview.gui.SequenceFetcher.fetchAndShow( + SequenceFetcher sf = new SequenceFetcher(Desktop.instance, forSource, forAccession); - // did[0], did[1]); - if (afs.size() == 0) - { - failedDBRetr.add("Didn't retrieve " + first); - break; - } - keyseq.add(first); - af = afs.get(0); - - // verify references for retrieved data - AlignmentTest.assertAlignmentDatasetRefs(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Fetch " + first + ":"); - assertDatasetIsNormalisedKnownDefect(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Fetch " + first + ":"); - dna = af.getViewport().getAlignment().isNucleotide(); - retral = af.getViewport().getAlignment(); - dataset = retral.getDataset(); - seqs = retral.getSequencesArray(); - - } - else + sf.run(); + AlignFrame[] afs = Desktop.getAlignFrames(); + if (afs.length == 0) { - Desktop.instance.closeAll_actionPerformed(null); - // recover stored project - af = new FileLoader(false).LoadFileWaitTillLoaded(savedProjects - .get(first).toString(), DataSourceType.FILE); - System.out.println("Recovered view for '" + first + "' from '" - + savedProjects.get(first).toString() + "'"); - dna = af.getViewport().getAlignment().isNucleotide(); - retral = af.getViewport().getAlignment(); - dataset = retral.getDataset(); - seqs = retral.getSequencesArray(); - - // verify references for recovered data - AlignmentTest.assertAlignmentDatasetRefs(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Recover " + first + ":"); - assertDatasetIsNormalisedKnownDefect(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Recover " + first + ":"); - + failedDBRetr.add("Didn't retrieve " + first); + break; } + keyseq.add(first); + af = afs[0]; + + // verify references for retrieved data + AlignmentTest.assertAlignmentDatasetRefs( + af.getViewport().getAlignment(), "Pass (" + pass1 + "," + + pass2 + "," + pass3 + "): Fetch " + first + ":"); + assertDatasetIsNormalisedKnownDefect( + af.getViewport().getAlignment(), "Pass (" + pass1 + "," + + pass2 + "," + pass3 + "): Fetch " + first + ":"); + dna = af.getViewport().getAlignment().isNucleotide(); + retral = af.getViewport().getAlignment(); + dataset = retral.getDataset(); + seqs = retral.getSequencesArray(); - // store project on first pass, compare next pass - stringify(dbtoviewBit, savedProjects, first, af.alignPanel); + } + else + { + Desktop.instance.closeAll_actionPerformed(null); + // recover stored project + af = new FileLoader(false).LoadFileWaitTillLoaded( + savedProjects.get(first).toString(), DataSourceType.FILE); + System.out.println("Recovered view for '" + first + "' from '" + + savedProjects.get(first).toString() + "'"); + dna = af.getViewport().getAlignment().isNucleotide(); + retral = af.getViewport().getAlignment(); + dataset = retral.getDataset(); + seqs = retral.getSequencesArray(); + + // verify references for recovered data + AlignmentTest.assertAlignmentDatasetRefs( + af.getViewport().getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + "): Recover " + + first + ":"); + assertDatasetIsNormalisedKnownDefect( + af.getViewport().getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + "): Recover " + + first + ":"); - ptypes = (seqs == null || seqs.length == 0) ? null : new CrossRef( - seqs, dataset).findXrefSourcesForSequences(dna); - filterDbRefs(ptypes, limit); - - // start of pass2: retrieve each cross-ref for fetched or restored - // project. - do // first cross ref and recover crossref loop - { + } + + // store project on first pass, compare next pass + stringify(dbtoviewBit, savedProjects, first, af.alignPanel); + + ptypes = (seqs == null || seqs.length == 0) ? null + : new CrossRef(seqs, dataset) + .findXrefSourcesForSequences(dna); + filterDbRefs(ptypes, limit); - for (String db : ptypes) + // start of pass2: retrieve each cross-ref for fetched or restored + // project. + do // first cross ref and recover crossref loop + { + + for (String db : ptypes) + { + // counter for splitframe views retrieved via crossref + int firstcr_ap = 0; + // build next key so we an retrieve all views + String nextxref = first + " -> " + db + "{" + firstcr_ap + "}"; + // perform crossref action, or retrieve stored project + List cra_views = new ArrayList<>(); + CrossRefAction cra = null; + + if (pass2 == 0) + { // retrieve and show cross-refs in this thread + cra = CrossRefAction.getHandlerFor(seqs, dna, db, af); + cra.run(); + cra_views = (List) PA.getValue(cra, + "xrefViews"); + if (cra_views.size() == 0) + { + failedXrefMenuItems.add( + "No crossrefs retrieved for " + first + " -> " + db); + continue; + } + assertNucleotide(cra_views.get(0), + "Nucleotide panel included proteins for " + first + + " -> " + db); + assertProtein(cra_views.get(1), + "Protein panel included nucleotides for " + first + + " -> " + db); + } + else { - // counter for splitframe views retrieved via crossref - int firstcr_ap = 0; - // build next key so we an retrieve all views - String nextxref = first + " -> " + db + "{" + firstcr_ap + "}"; - // perform crossref action, or retrieve stored project - List cra_views = new ArrayList<>(); - CrossRefAction cra = null; - - if (pass2 == 0) - { // retrieve and show cross-refs in this thread - cra = CrossRefAction.getHandlerFor(seqs, dna, db, af); - cra.run(); - cra_views = (List) PA.getValue(cra, - "xrefViews"); - if (cra_views.size() == 0) - { - failedXrefMenuItems.add("No crossrefs retrieved for " - + first + " -> " + db); - continue; - } - assertNucleotide(cra_views.get(0), - "Nucleotide panel included proteins for " + first - + " -> " + db); - assertProtein(cra_views.get(1), - "Protein panel included nucleotides for " + first - + " -> " + db); + Desktop.instance.closeAll_actionPerformed(null); + pass3 = 0; + // recover stored project + File storedProject = savedProjects.get(nextxref); + if (storedProject == null) + { + failedProjectRecoveries + .add("Failed to store a view for '" + nextxref + "'"); + continue; } - else + + // recover stored project + AlignFrame af2 = new FileLoader(false).LoadFileWaitTillLoaded( + savedProjects.get(nextxref).toString(), + DataSourceType.FILE); + System.out + .println("Recovered view for '" + nextxref + "' from '" + + savedProjects.get(nextxref).toString() + "'"); + // gymnastics to recover the alignPanel/Complementary alignPanel + if (af2.getViewport().isNucleotide()) { - Desktop.instance.closeAll_actionPerformed(null); - pass3 = 0; - // recover stored project - File storedProject = savedProjects.get(nextxref); - if (storedProject == null) - { - failedProjectRecoveries.add("Failed to store a view for '" - + nextxref + "'"); - continue; - } - - // recover stored project - AlignFrame af2 = new FileLoader(false) - .LoadFileWaitTillLoaded(savedProjects.get(nextxref) - .toString(), DataSourceType.FILE); - System.out.println("Recovered view for '" + nextxref - + "' from '" + savedProjects.get(nextxref).toString() - + "'"); - // gymnastics to recover the alignPanel/Complementary alignPanel - if (af2.getViewport().isNucleotide()) - { - // top view, then bottom - cra_views.add(af2.getViewport().getAlignPanel()); - cra_views.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - - } - else - { - // bottom view, then top - cra_views.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - cra_views.add(af2.getViewport().getAlignPanel()); + // top view, then bottom + cra_views.add(af2.getViewport().getAlignPanel()); + cra_views.add(((jalview.gui.AlignViewport) af2.getViewport() + .getCodingComplement()).getAlignPanel()); - } } - HashMap> xrptypes = new HashMap<>(); - // first save/verify views. - for (AlignmentViewPanel avp : cra_views) + else { - nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; - // verify references for this panel - AlignmentTest.assertAlignmentDatasetRefs(avp.getAlignment(), - "Pass (" + pass1 + "," + pass2 + "," + pass3 - + "): before start of pass3: " + nextxref - + ":"); - assertDatasetIsNormalisedKnownDefect(avp.getAlignment(), - "Pass (" + pass1 + "," + pass2 + "," + pass3 - + "): before start of pass3: " + nextxref - + ":"); - - SequenceI[] xrseqs = avp.getAlignment().getSequencesArray(); - - List _xrptypes = (seqs == null || seqs.length == 0) ? null - : new CrossRef(xrseqs, dataset) - .findXrefSourcesForSequences(avp - .getAlignViewport().isNucleotide()); - - stringify(dbtoviewBit, savedProjects, nextxref, avp); - xrptypes.put(nextxref, _xrptypes); + // bottom view, then top + cra_views.add(((jalview.gui.AlignViewport) af2.getViewport() + .getCodingComplement()).getAlignPanel()); + cra_views.add(af2.getViewport().getAlignPanel()); } + } + HashMap> xrptypes = new HashMap<>(); + // first save/verify views. + for (AlignmentViewPanel avp : cra_views) + { + nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; + // verify references for this panel + AlignmentTest.assertAlignmentDatasetRefs(avp.getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + + "): before start of pass3: " + nextxref + + ":"); + assertDatasetIsNormalisedKnownDefect(avp.getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + + "): before start of pass3: " + nextxref + + ":"); + + SequenceI[] xrseqs = avp.getAlignment().getSequencesArray(); + + List _xrptypes = (seqs == null || seqs.length == 0) + ? null + : new CrossRef(xrseqs, dataset) + .findXrefSourcesForSequences( + avp.getAlignViewport().isNucleotide()); + + stringify(dbtoviewBit, savedProjects, nextxref, avp); + xrptypes.put(nextxref, _xrptypes); - // now do the second xref pass starting from either saved or just - // recovered split pane, in sequence - do // retrieve second set of cross refs or recover and verify + } + + // now do the second xref pass starting from either saved or just + // recovered split pane, in sequence + do // retrieve second set of cross refs or recover and verify + { + firstcr_ap = 0; + for (AlignmentViewPanel avp : cra_views) { - firstcr_ap = 0; - for (AlignmentViewPanel avp : cra_views) + nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; + for (String xrefdb : xrptypes.get(nextxref)) { - nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; - for (String xrefdb : xrptypes.get(nextxref)) - { - List cra_views2 = new ArrayList<>(); - int q = 0; - String nextnextxref = nextxref + " -> " + xrefdb + "{" - + q + "}"; + List cra_views2 = new ArrayList<>(); + int q = 0; + String nextnextxref = nextxref + " -> " + xrefdb + "{" + q + + "}"; - if (pass3 == 0) + if (pass3 == 0) + { + SequenceI[] xrseqs = avp.getAlignment() + .getSequencesArray(); + AlignFrame nextaf = Desktop + .getAlignFrameFor(avp.getAlignViewport()); + + cra = CrossRefAction.getHandlerFor(xrseqs, + avp.getAlignViewport().isNucleotide(), xrefdb, + nextaf); + cra.run(); + cra_views2 = (List) PA.getValue(cra, + "xrefViews"); + if (cra_views2.size() == 0) { - SequenceI[] xrseqs = avp.getAlignment() - .getSequencesArray(); - AlignFrame nextaf = Desktop.getAlignFrameFor(avp - .getAlignViewport()); - - cra = CrossRefAction.getHandlerFor(xrseqs, avp - .getAlignViewport().isNucleotide(), xrefdb, - nextaf); - cra.run(); - cra_views2 = (List) PA.getValue( - cra, "xrefViews"); - if (cra_views2.size() == 0) - { - failedXrefMenuItems - .add("No crossrefs retrieved for '" - + nextxref + "' to " + xrefdb - + " via '" + nextaf.getTitle() + "'"); - continue; - } - assertNucleotide(cra_views2.get(0), - "Nucleotide panel included proteins for '" - + nextxref + "' to " + xrefdb - + " via '" + nextaf.getTitle() + "'"); - assertProtein(cra_views2.get(1), - "Protein panel included nucleotides for '" - + nextxref + "' to " + xrefdb - + " via '" + nextaf.getTitle() + "'"); - + failedXrefMenuItems.add("No crossrefs retrieved for '" + + nextxref + "' to " + xrefdb + " via '" + + nextaf.getTitle() + "'"); + continue; } - else + assertNucleotide(cra_views2.get(0), + "Nucleotide panel included proteins for '" + + nextxref + "' to " + xrefdb + " via '" + + nextaf.getTitle() + "'"); + assertProtein(cra_views2.get(1), + "Protein panel included nucleotides for '" + + nextxref + "' to " + xrefdb + " via '" + + nextaf.getTitle() + "'"); + + } + else + { + Desktop.instance.closeAll_actionPerformed(null); + // recover stored project + File storedProject = savedProjects.get(nextnextxref); + if (storedProject == null) { - Desktop.instance.closeAll_actionPerformed(null); - // recover stored project - File storedProject = savedProjects.get(nextnextxref); - if (storedProject == null) - { - failedProjectRecoveries - .add("Failed to store a view for '" - + nextnextxref + "'"); - continue; - } - AlignFrame af2 = new FileLoader(false) - .LoadFileWaitTillLoaded( - savedProjects.get(nextnextxref) - .toString(), - DataSourceType.FILE); - System.out.println("Recovered view for '" - + nextnextxref + "' from '" - + savedProjects.get(nextnextxref).toString() - + "'"); - // gymnastics to recover the alignPanel/Complementary - // alignPanel - if (af2.getViewport().isNucleotide()) - { - // top view, then bottom - cra_views2.add(af2.getViewport().getAlignPanel()); - cra_views2.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - - } - else - { - // bottom view, then top - cra_views2.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - cra_views2.add(af2.getViewport().getAlignPanel()); - } - Assert.assertEquals(cra_views2.size(), 2); - Assert.assertNotNull(cra_views2.get(0)); - Assert.assertNotNull(cra_views2.get(1)); + failedProjectRecoveries + .add("Failed to store a view for '" + + nextnextxref + "'"); + continue; } + AlignFrame af2 = new FileLoader(false) + .LoadFileWaitTillLoaded(savedProjects + .get(nextnextxref).toString(), + DataSourceType.FILE); + System.out + .println("Recovered view for '" + nextnextxref + + "' from '" + savedProjects + .get(nextnextxref).toString() + + "'"); + // gymnastics to recover the alignPanel/Complementary + // alignPanel + if (af2.getViewport().isNucleotide()) + { + // top view, then bottom + cra_views2.add(af2.getViewport().getAlignPanel()); + cra_views2.add(((jalview.gui.AlignViewport) af2 + .getViewport().getCodingComplement()) + .getAlignPanel()); - for (AlignmentViewPanel nextavp : cra_views2) + } + else { - nextnextxref = nextxref + " -> " + xrefdb + "{" + q++ - + "}"; - - // verify references for this panel - AlignmentTest.assertAlignmentDatasetRefs( - nextavp.getAlignment(), "" + "Pass (" + pass1 - + "," + pass2 + "): For " - + nextnextxref + ":"); - assertDatasetIsNormalisedKnownDefect( - nextavp.getAlignment(), "" + "Pass (" + pass1 - + "," + pass2 + "): For " - + nextnextxref + ":"); - - stringify(dbtoviewBit, savedProjects, nextnextxref, - nextavp); - keyseq.add(nextnextxref); + // bottom view, then top + cra_views2.add(((jalview.gui.AlignViewport) af2 + .getViewport().getCodingComplement()) + .getAlignPanel()); + cra_views2.add(af2.getViewport().getAlignPanel()); } - } // end of loop around showing all xrefdb for crossrf2 - - } // end of loop around all viewpanels from crossrf1 - } while (pass2 == 2 && pass3++ < 2); - // fetchdb->crossref1->crossref-2->verify for xrefs we - // either loop twice when pass2=0, or just once when pass2=1 - // (recovered project from previous crossref) - - } // end of loop over db-xrefs for crossref-2 - - // fetchdb-->crossref1 - // for each xref we try to retrieve xref, store and verify when - // pass1=0, or just retrieve and verify when pass1=1 - } while (pass1 == 1 && pass2++ < 2); - // fetchdb - // for each ref we - // loop twice: first, do the retrieve, second recover from saved project - - // increment pass counters, so we repeat traversal starting from the - // oldest saved project first. - if (pass1 == 0) - { - // verify stored projects for first set of cross references - pass1 = 1; - // and verify cross-references retrieved from stored projects - pass2 = 0; - pass3 = 0; - } - else - { - pass1++; - } - } while (pass1 < 3); + Assert.assertEquals(cra_views2.size(), 2); + Assert.assertNotNull(cra_views2.get(0)); + Assert.assertNotNull(cra_views2.get(1)); + } + + for (AlignmentViewPanel nextavp : cra_views2) + { + nextnextxref = nextxref + " -> " + xrefdb + "{" + q++ + + "}"; + + // verify references for this panel + AlignmentTest.assertAlignmentDatasetRefs( + nextavp.getAlignment(), + "" + "Pass (" + pass1 + "," + pass2 + "): For " + + nextnextxref + ":"); + assertDatasetIsNormalisedKnownDefect( + nextavp.getAlignment(), + "" + "Pass (" + pass1 + "," + pass2 + "): For " + + nextnextxref + ":"); + + stringify(dbtoviewBit, savedProjects, nextnextxref, + nextavp); + keyseq.add(nextnextxref); + } + } // end of loop around showing all xrefdb for crossrf2 + + } // end of loop around all viewpanels from crossrf1 + } while (pass2 == 2 && pass3++ < 2); + // fetchdb->crossref1->crossref-2->verify for xrefs we + // either loop twice when pass2=0, or just once when pass2=1 + // (recovered project from previous crossref) + + } // end of loop over db-xrefs for crossref-2 + + // fetchdb-->crossref1 + // for each xref we try to retrieve xref, store and verify when + // pass1=0, or just retrieve and verify when pass1=1 + } while (pass1 == 1 && pass2++ < 2); + // fetchdb + // for each ref we + // loop twice: first, do the retrieve, second recover from saved project + + // increment pass counters, so we repeat traversal starting from the + // oldest saved project first. + if (pass1 == 0) + { + // verify stored projects for first set of cross references + pass1 = 1; + // and verify cross-references retrieved from stored projects + pass2 = 0; + pass3 = 0; + } + else + { + pass1++; + } + } while (pass1 < 3); if (failedXrefMenuItems.size() > 0) { @@ -497,8 +501,9 @@ public class CrossRef2xmlTests extends Jalview2xmlBase { System.err.println(s); } - Assert.fail("Didn't recover projects for some retrievals (did they retrieve ?) (" - + failedProjectRecoveries.size() + " counts)"); + Assert.fail( + "Didn't recover projects for some retrievals (did they retrieve ?) (" + + failedProjectRecoveries.size() + " counts)"); } if (failedDBRetr.size() > 0) { @@ -550,9 +555,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase } else { - System.out - .println("Ignored exception for known defect: JAL-2179 : " - + message); + System.out.println("Ignored exception for known defect: JAL-2179 : " + + message); } } @@ -574,8 +578,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase AlignmentViewPanel alignmentViewPanel, String message) { List nonType = new ArrayList<>(); - for (SequenceI sq : alignmentViewPanel.getAlignViewport() - .getAlignment().getSequences()) + for (SequenceI sq : alignmentViewPanel.getAlignViewport().getAlignment() + .getSequences()) { if (sq.isProtein() != expectProtein) { @@ -670,8 +674,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase } else { - Assert.assertEquals(sbr.toString(), dbt, "stringify mismatch for " - + xrefpath); + Assert.assertEquals(sbr.toString(), dbt, + "stringify mismatch for " + xrefpath); } } }