* specified, all available cross-references are retrieved.
*
* @param identifier
+ * an Ensembl stable identifier
* @param databases
+ * optional list of Ensembl cross-referenced databases of interest
* @return
*/
public List<DBRefEntry> getCrossReferences(String identifier,
try
{
URL url = getUrl(identifier);
- if (url != null)
- {
- br = getHttpResponse(url, ids);
- }
+ if (url != null)
+ {
+ br = getHttpResponse(url, ids);
+ }
return (parseResponse(br, databases));
} catch (IOException e)
{
/**
* Parses "primary_id" and "dbname" values from the JSON response and
* constructs a DBRefEntry if the dbname is in the list supplied. Returns a
- * list of DBRefEntry created.
+ * list of the DBRefEntry created. Note we don't parse "synonyms" as they
+ * appear to be either redirected or obsolete in Uniprot.
*
* @param br
* @param databases
--- /dev/null
+package jalview.ext.ensembl;
+
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.DBRefEntry;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+public class EnsemblXrefTest
+{
+ //@formatter:off
+ private static final String JSON =
+ "[{\"primary_id\":\"CCDS5863\",\"dbname\":\"CCDS\"}," +
+ "{\"primary_id\":\"P15056\",\"dbname\":\"Uniprot/SWISSPROT\"}]";
+ //@formatter:on
+
+ @Test(groups = "functional")
+ public void testGetCrossReferences()
+ {
+ System.out.println(JSON);
+ EnsemblXref testee = new EnsemblXref("http://rest.ensembl.org")
+ {
+ @Override
+ protected BufferedReader getHttpResponse(URL url, List<String> ids)
+ throws IOException
+ {
+ return new BufferedReader(new StringReader(JSON));
+ }
+ };
+
+ /*
+ * with no filter
+ */
+ List<DBRefEntry> dbrefs = testee.getCrossReferences("ABCDE", null);
+ assertEquals(2, dbrefs.size());
+ assertEquals("CCDS", dbrefs.get(0).getSource());
+ assertEquals("CCDS5863", dbrefs.get(0).getAccessionId());
+ // Uniprot name should get converted to Jalview canonical form
+ assertEquals("UNIPROT", dbrefs.get(1).getSource());
+ assertEquals("P15056", dbrefs.get(1).getAccessionId());
+
+ /*
+ * filter for Uniprot only
+ */
+ dbrefs = testee.getCrossReferences(
+ "ABCDE",
+ Arrays.asList(new String[] { "Uniprot/SWISSPROT",
+ "Uniprot/SPTREMBL" }));
+ assertEquals(1, dbrefs.size());
+ assertEquals("UNIPROT", dbrefs.get(0).getSource());
+ assertEquals("P15056", dbrefs.get(0).getAccessionId());
+
+ /*
+ * filter for PDB only
+ */
+ dbrefs = testee.getCrossReferences("ABCDE",
+ Arrays.asList(new String[] { "PDB" }));
+ assertTrue(dbrefs.isEmpty());
+ }
+}