/* * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1) * Copyright (C) 2014 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.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 org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * @author jimp * */ public class DbRefFetcherTest { /** * @throws java.lang.Exception */ @BeforeClass public static void setUpBeforeClass() throws Exception { } /** * @throws java.lang.Exception */ @AfterClass public static void tearDownAfterClass() throws Exception { } @Test 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)) { 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); } @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); 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); 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); } }