X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblLookup.java;h=5f353f85014b792babe5e41ef8cda74e3308ccd4;hb=1903e771d3dae79e9a57fcc1147efd37e8a51421;hp=f6b3a47b6c07e73a55d474db4a9bb22b6b85d1e7;hpb=48af50e7fa4ebb62e2cd629b01ffc8142fc7164d;p=jalview.git diff --git a/src/jalview/ext/ensembl/EnsemblLookup.java b/src/jalview/ext/ensembl/EnsemblLookup.java index f6b3a47..5f353f8 100644 --- a/src/jalview/ext/ensembl/EnsemblLookup.java +++ b/src/jalview/ext/ensembl/EnsemblLookup.java @@ -138,7 +138,53 @@ public class EnsemblLookup extends EnsemblRestClient */ public String getGeneId(String identifier) { - return parseGeneId(getResult(identifier, null)); + return getGeneId(identifier, null); + } + + /** + * Returns the gene id related to the given identifier (which may be for a + * gene, transcript or protein) + * + * @param identifier + * @param objectType + * @return + */ + public String getGeneId(String identifier, String objectType) + { + return parseGeneId(getResult(identifier, objectType)); + } + + /** + * Parses the JSON response and returns the gene identifier, or null if not + * found. If the returned object_type is Gene, returns the id, if Transcript + * returns the Parent. If it is Translation (peptide identifier), then the + * Parent is the transcript identifier, so we redo the search with this value. + * + * @param br + * @return + */ + protected String parseGeneId(JSONObject val) + { + String geneId = null; + String type = val.get(OBJECT_TYPE).toString(); + if (OBJECT_TYPE_GENE.equalsIgnoreCase(type)) + { + // got the gene - just returns its id + geneId = val.get(JSON_ID).toString(); + } + else if (OBJECT_TYPE_TRANSCRIPT.equalsIgnoreCase(type)) + { + // got the transcript - return its (Gene) Parent + geneId = val.get(PARENT).toString(); + } + else if (OBJECT_TYPE_TRANSLATION.equalsIgnoreCase(type)) + { + // got the protein - get its Parent, restricted to type Transcript + String transcriptId = val.get(PARENT).toString(); + geneId = getGeneId(transcriptId, OBJECT_TYPE_TRANSCRIPT); + } + + return geneId; } /** @@ -180,6 +226,7 @@ public class EnsemblLookup extends EnsemblRestClient try { URL url = getUrl(identifier, objectType); + if (url != null) { br = getHttpResponse(url, ids); @@ -206,46 +253,6 @@ public class EnsemblLookup extends EnsemblRestClient } /** - * Parses the JSON response and returns the gene identifier, or null if not - * found. If the returned object_type is Gene, returns the id, if Transcript - * returns the Parent. If it is Translation (peptide identifier), then the - * Parent is the transcript identifier, so we redo the search with this value, - * specifying that object_type should be Transcript. - * - * @param jsonObject - * @return - */ - protected String parseGeneId(JSONObject json) - { - if (json == null) - { - // e.g. lookup failed with 404 not found - return null; - } - - String geneId = null; - String type = json.get(OBJECT_TYPE).toString(); - if (OBJECT_TYPE_GENE.equalsIgnoreCase(type)) - { - // got the gene - just returns its id - geneId = json.get(JSON_ID).toString(); - } - else if (OBJECT_TYPE_TRANSCRIPT.equalsIgnoreCase(type)) - { - // got the transcript - return its (Gene) Parent - geneId = json.get(PARENT).toString(); - } - else if (OBJECT_TYPE_TRANSLATION.equalsIgnoreCase(type)) - { - // got the protein - look up its Parent, restricted to type Transcript - String transcriptId = json.get(PARENT).toString(); - geneId = parseGeneId(getResult(transcriptId, OBJECT_TYPE_TRANSCRIPT)); - } - - return geneId; - } - - /** * Calls the /lookup/id rest service for the given id, and if successful, * parses and returns the gene's chromosomal coordinates *