X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fws%2Fseqfetcher%2FDbRefFetcherTest.java;fp=test%2Fjalview%2Fws%2Fseqfetcher%2FDbRefFetcherTest.java;h=1171bfd0c28f5b4b23ed622cd91a402c4a03bbd1;hb=f06554784411ddbf871d642e66c8dcb7f147d4a8;hp=d9b1d90122c2248caa7266eb34eaef57276216ff;hpb=cf06ee5d732af6cc874115aece1138adafca8ad7;p=jalview.git diff --git a/test/jalview/ws/seqfetcher/DbRefFetcherTest.java b/test/jalview/ws/seqfetcher/DbRefFetcherTest.java index d9b1d90..1171bfd 100644 --- a/test/jalview/ws/seqfetcher/DbRefFetcherTest.java +++ b/test/jalview/ws/seqfetcher/DbRefFetcherTest.java @@ -28,6 +28,9 @@ import jalview.analysis.CrossRef; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; import jalview.datamodel.DBRefSource; +import jalview.datamodel.FeatureProperties; +import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceI; import jalview.util.DBRefUtils; import jalview.ws.SequenceFetcher; @@ -62,6 +65,11 @@ public class DbRefFetcherTest { } + /** + * Tests that standard protein database sources include Uniprot (as the first) + * and also PDB. (Additional sources are dependent on available of DAS + * services.) + */ @Test(groups ={ "Functional" }) public void testStandardProtDbs() { @@ -77,38 +85,53 @@ public class DbRefFetcherTest srces.addAll(srcesfordb); } } - DbSourceProxy uniprot = null; + int i = 0; + int uniprotPos = -1; + int pdbPos = -1; // append the selected sequence sources to the default dbs for (DbSourceProxy s : srces) { - if (s.getDbSource().equalsIgnoreCase(DBRefSource.UNIPROT)) + if (s instanceof jalview.ws.dbsources.Uniprot) { - i++; + uniprotPos = i; } - - if (s instanceof jalview.ws.dbsources.Uniprot) + if (s instanceof jalview.ws.dbsources.Pdb) { - uniprot = s; - break; + pdbPos = i; } + i++; } assertTrue("Failed to find Uniprot source as first source amongst " - + srces.size() + " sources (source was at position " + i + ")", - uniprot != null && i < 2); + + srces.size() + " sources (source was at position " + + uniprotPos + ")", uniprotPos == 0); + assertTrue("Failed to find PDB source amongst " + srces.size() + + " sources", pdbPos >= 0); } + /** + * Tests retrieval of one entry from EMBL. Test is dependent on availability + * of network and the EMBL service. + * + * @throws Exception + */ @Test(groups = { "External" }) public void testEmblUniprotProductRecovery() throws Exception { - String retrievalId = "CAA23748"; // "V00488"; + String retrievalId = "V00488"; DbSourceProxy embl = new SequenceFetcher().getSourceProxy(DBRefSource.EMBL).get(0); assertNotNull("Couldn't find the EMBL retrieval client", embl); verifyProteinNucleotideXref(retrievalId, embl); } + /** + * Tests retrieval of one entry from EMBLCDS. Test is dependent on + * availability of network and the EMBLCDS service. + * + * @throws Exception + */ @Test(groups = { "External" }) public void testEmblCDSUniprotProductRecovery() throws Exception @@ -120,24 +143,46 @@ public class DbRefFetcherTest verifyProteinNucleotideXref(retrievalId, embl); } + /** + * Helper method to perform database retrieval and verification of results. + * + * @param retrievalId + * @param embl + * @throws Exception + */ 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); + SequenceI seq = alsq.getSequenceAt(0); + assertEquals("Wrong sequence name", embl.getDbSource() + "|" + + retrievalId, seq.getName()); + SequenceFeature[] sfs = seq.getSequenceFeatures(); + assertNotNull("Sequence features missing", sfs); + assertTrue( + "Feature not CDS", + FeatureProperties.isCodingFeature(embl.getDbSource(), + sfs[0].getType())); + assertEquals(embl.getDbSource(), sfs[0].getFeatureGroup()); + DBRefEntry[] dr = DBRefUtils.selectRefs(seq.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] + assertEquals("Expected cross reference map to be one amino acid", dr[0] .getMap().getMappedWidth(), 1); - assertEquals("Expected local refernce map to be 3 nucleotides", dr[0] + assertEquals("Expected local reference 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); - - + assertEquals("Didn't xref right number of records", 1, + sprods.getHeight()); + SequenceI proteinSeq = sprods.getSequenceAt(0); + assertEquals(proteinSeq.getSequenceAsString(), dr[0].getMap().getTo() + .getSequenceAsString()); + assertEquals(dr[0].getSource() + "|" + dr[0].getAccessionId(), + proteinSeq.getName()); } }