X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblXref.java;h=313572f0639e01419292a35d3464dd232958cb55;hb=e838644df5d5a10a16cf0ad7fb23d24dd7d2729a;hp=514e44a98d86a296cee3fdff83d68a9956faa0b3;hpb=e24933a537e0f640c75d4685c468615872bc77fc;p=jalview.git diff --git a/src/jalview/ext/ensembl/EnsemblXref.java b/src/jalview/ext/ensembl/EnsemblXref.java index 514e44a..313572f 100644 --- a/src/jalview/ext/ensembl/EnsemblXref.java +++ b/src/jalview/ext/ensembl/EnsemblXref.java @@ -27,10 +27,27 @@ import org.json.simple.parser.ParseException; class EnsemblXref extends EnsemblRestClient { + private static final String GO_GENE_ONTOLOGY = "GO"; + + private String dbName = "ENSEMBL (xref)"; + + /** + * Constructor given the target domain to fetch data from + * + * @param d + */ + public EnsemblXref(String d, String dbSource, String version) + { + super(d); + dbName = dbSource; + xrefVersion = dbSource + ":" + version; + + } + @Override public String getDbName() { - return "ENSEMBL (xref)"; + return dbName; } @Override @@ -67,15 +84,14 @@ class EnsemblXref extends EnsemblRestClient * Calls the Ensembl xrefs REST endpoint and retrieves any cross-references * ("primary_id") for the given identifier (Ensembl accession id) and database * names. The "dbname" returned by Ensembl is canonicalised to Jalview's - * standard version, and a DBRefEntry constructed. If no databases are - * specified, all available cross-references are retrieved. + * standard version, and a DBRefEntry constructed. Currently takes all + * identifiers apart from GO terms and synonyms. * * @param identifier - * @param databases + * an Ensembl stable identifier * @return */ - public List getCrossReferences(String identifier, - List databases) + public List getCrossReferences(String identifier) { List result = new ArrayList(); List ids = new ArrayList(); @@ -85,11 +101,11 @@ class EnsemblXref extends EnsemblRestClient try { URL url = getUrl(identifier); - if (url != null) - { - br = getHttpResponse(url, ids); - } - return (parseResponse(br, databases)); + if (url != null) + { + br = getHttpResponse(url, ids); + } + return (parseResponse(br)); } catch (IOException e) { // ignore @@ -112,16 +128,15 @@ class EnsemblXref extends EnsemblRestClient /** * 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. + * constructs a DBRefEntry. Returns a 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 * @return * @throws IOException */ - protected List parseResponse(BufferedReader br, - List databases) + protected List parseResponse(BufferedReader br) throws IOException { JSONParser jp = new JSONParser(); @@ -134,8 +149,7 @@ class EnsemblXref extends EnsemblRestClient { JSONObject val = (JSONObject) rvals.next(); String dbName = val.get("dbname").toString(); - if (databases != null && !databases.isEmpty() - && !databases.contains(dbName)) + if (dbName.equals(GO_GENE_ONTOLOGY)) { continue; } @@ -143,7 +157,7 @@ class EnsemblXref extends EnsemblRestClient if (dbName != null && id != null) { dbName = DBRefUtils.getCanonicalName(dbName); - DBRefEntry dbref = new DBRefEntry(dbName, "0", id); + DBRefEntry dbref = new DBRefEntry(dbName, getXRefVersion(), id); result.add(dbref); } } @@ -154,6 +168,18 @@ class EnsemblXref extends EnsemblRestClient return result; } + private String xrefVersion = "ENSEMBL:0"; + + /** + * version string for Xrefs - for 2.10, hardwired for ENSEMBL:0 + * + * @return + */ + public String getXRefVersion() + { + return xrefVersion; + } + /** * Returns the URL for the REST endpoint to fetch all cross-references for an * identifier. Note this may return protein cross-references for nucleotide. @@ -164,7 +190,7 @@ class EnsemblXref extends EnsemblRestClient */ protected URL getUrl(String identifier) { - String url = ENSEMBL_REST + "/xrefs/id/" + identifier + String url = getDomain() + "/xrefs/id/" + identifier + "?content-type=application/json&all_levels=1"; try {