X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Fws%2Fseqfetcher%2FDbRefFetcherTest.java;h=f58ead5ad9c73852801eab3324c332882896a441;hb=9ad1e437d5d6366f0b06fbfbdb446a720ca57104;hp=2f826b3f3bea09ab319a4abcc14ea8582ca989a1;hpb=35229a3e24b054cc6f3a0a0903a61fc6f6462b6e;p=jalview.git diff --git a/test/jalview/ws/seqfetcher/DbRefFetcherTest.java b/test/jalview/ws/seqfetcher/DbRefFetcherTest.java index 2f826b3..f58ead5 100644 --- a/test/jalview/ws/seqfetcher/DbRefFetcherTest.java +++ b/test/jalview/ws/seqfetcher/DbRefFetcherTest.java @@ -1,25 +1,45 @@ -/** +/* + * 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.ws.seqfetcher; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import jalview.analysis.CrossRef; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.DBRefEntry; +import jalview.datamodel.DBRefSource; +import jalview.util.DBRefUtils; +import jalview.ws.SequenceFetcher; import java.util.ArrayList; import java.util.List; -import jalview.datamodel.DBRefSource; -import jalview.ws.DBRefFetcher; -import jalview.ws.SequenceFetcher; -import jalview.ws.dbsources.das.api.jalviewSourceI; - import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * @author jimp - * + * */ public class DbRefFetcherTest { @@ -30,6 +50,7 @@ public class DbRefFetcherTest @BeforeClass public static void setUpBeforeClass() throws Exception { + jalview.bin.Cache.initLogger(); } /** @@ -44,35 +65,76 @@ public class DbRefFetcherTest public void testStandardProtDbs() { String[] defdb = DBRefSource.PROTEINDBS; - List srces = new ArrayList(); - for (String ddb : defdb) - { - SequenceFetcher sfetcher= new SequenceFetcher(); - List srcesfordb = sfetcher.getSourceProxy(ddb); - - if (srcesfordb != null) - { - srces.addAll(srcesfordb); - } - } - DbSourceProxy uniprot=null; - int i=0; - // append the selected sequence sources to the default dbs - for (DbSourceProxy s:srces) - { - if (s.getDbSource().equalsIgnoreCase(DBRefSource.UNIPROT)) + List srces = new ArrayList(); + for (String ddb : defdb) { - i++; + SequenceFetcher sfetcher = new SequenceFetcher(); + List srcesfordb = sfetcher.getSourceProxy(ddb); + + if (srcesfordb != null) + { + srces.addAll(srcesfordb); + } } - - if (s instanceof jalview.ws.dbsources.Uniprot) + DbSourceProxy uniprot = null; + int i = 0; + // append the selected sequence sources to the default dbs + for (DbSourceProxy s : srces) { - uniprot = s; - break; + if (s.getDbSource().equalsIgnoreCase(DBRefSource.UNIPROT)) + { + i++; + } + + if (s instanceof jalview.ws.dbsources.Uniprot) + { + uniprot = s; + break; + } } + + assertTrue("Failed to find Uniprot source as first source amongst " + + srces.size() + " sources (source was at position " + i + ")", + uniprot != null && i < 2); } - - assertTrue("Failed to find Uniprot source as first source amongst "+srces.size()+" sources (source was at position "+i+")", uniprot!=null && i<2); + + @Test + public void testEmblUniprotProductRecovery() throws Exception + { + String retrievalId = "CAA23748"; // "V00488"; + DbSourceProxy embl = new SequenceFetcher().getSourceProxy(DBRefSource.EMBL).get(0); + assertNotNull("Couldn't find the EMBL retrieval client", embl); + verifyProteinNucleotideXref(retrievalId, embl); } + @Test + public void testEmblCDSUniprotProductRecovery() throws Exception + { + String retrievalId = "AAH29712"; + DbSourceProxy embl = new SequenceFetcher().getSourceProxy( + DBRefSource.EMBLCDS).get(0); + assertNotNull("Couldn't find the EMBL retrieval client", embl); + verifyProteinNucleotideXref(retrievalId, embl); + } + + private void verifyProteinNucleotideXref(String retrievalId, + DbSourceProxy embl) throws Exception + { + AlignmentI alsq = embl.getSequenceRecords(retrievalId); + assertNotNull("Couldn't find the EMBL record " + retrievalId, alsq); + assertEquals("Didn't retrieve right number of records", 1, alsq.getHeight()); + DBRefEntry[] dr = DBRefUtils.selectRefs(alsq.getSequenceAt(0).getDBRef(), DBRefSource.PROTEINSEQ); + assertNotNull(dr); + assertEquals("Expected a single Uniprot cross reference", 1, dr.length); + assertEquals("Expected cross refernce map to be one amino acid", dr[0] + .getMap().getMappedWidth(), 1); + assertEquals("Expected local refernce map to be 3 nucleotides", dr[0] + .getMap().getWidth(), 3); + AlignmentI sprods = CrossRef.findXrefSequences(alsq.getSequencesArray(), true, dr[0].getSource(), alsq.getDataset()); + assertNotNull( + "Couldn't recover cross reference sequence from dataset. Was it ever added ?", + sprods); + + + } }