X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblSymbol.java;h=ac9d1cecc7557f55da455abc312722a18d8cce83;hb=326d48e4a0a0f8e2cc8fcd722d2f720b07784976;hp=0d7986466334b6c96e067713d8a7f1983e02eed5;hpb=21be5363b2f7b61aade8a4b4caf54da28d8cd82a;p=jalview.git diff --git a/src/jalview/ext/ensembl/EnsemblSymbol.java b/src/jalview/ext/ensembl/EnsemblSymbol.java index 0d79864..ac9d1ce 100644 --- a/src/jalview/ext/ensembl/EnsemblSymbol.java +++ b/src/jalview/ext/ensembl/EnsemblSymbol.java @@ -75,7 +75,8 @@ public class EnsemblSymbol extends EnsemblXref { JSONObject val = (JSONObject) rvals.next(); String id = val.get("id").toString(); - if (id != null && isGeneIdentifier(id)) + String type = val.get("type").toString(); + if (id != null && "gene".equals(type)) { result = id; break; @@ -88,12 +89,31 @@ public class EnsemblSymbol extends EnsemblXref return result; } - protected URL getUrl(String id, Species species) + /** + * Constructs the URL for the REST symbol endpoint + * + * @param id + * the accession id (Ensembl or external) + * @param species + * a species name recognisable by Ensembl + * @param type + * an optional type to filter the response (gene, transcript, + * translation) + * @return + */ + protected URL getUrl(String id, Species species, String... type) { - String url = getDomain() + "/xrefs/symbol/" + species.toString() + "/" - + id + "?content-type=application/json"; + StringBuilder sb = new StringBuilder(); + sb.append(getDomain()).append("/xrefs/symbol/") + .append(species.toString()).append("/").append(id) + .append("?content-type=application/json"); + for (String t : type) + { + sb.append("&object_type=").append(t); + } try { + String url = sb.toString(); return new URL(url); } catch (MalformedURLException e) { @@ -108,7 +128,7 @@ public class EnsemblSymbol extends EnsemblXref * @param identifier * @return */ - public List getIds(String identifier) + public List getGeneIds(String identifier) { List result = new ArrayList(); List ids = new ArrayList(); @@ -124,15 +144,18 @@ public class EnsemblSymbol extends EnsemblXref { if (taxon.isModelOrganism()) { - URL url = getUrl(query, taxon); + URL url = getUrl(query, taxon, "gene"); if (url != null) { br = getHttpResponse(url, ids); - } - String geneId = parseSymbolResponse(br); - if (geneId != null) - { - result.add(geneId); + if (br != null) + { + String geneId = parseSymbolResponse(br); + if (geneId != null && !result.contains(geneId)) + { + result.add(geneId); + } + } } } }