git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'features/JAL-2885UniprotHttps' into releases/Release_2_10_4_Branch
[jalview.git]
/
src
/
jalview
/
ext
/
ensembl
/
EnsemblLookup.java
diff --git
a/src/jalview/ext/ensembl/EnsemblLookup.java
b/src/jalview/ext/ensembl/EnsemblLookup.java
index
f31a3f0
..
0ddef2b
100644
(file)
--- a/
src/jalview/ext/ensembl/EnsemblLookup.java
+++ b/
src/jalview/ext/ensembl/EnsemblLookup.java
@@
-34,11
+34,10
@@
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
/**
import org.json.simple.parser.ParseException;
/**
- * A client for the Ensembl lookup REST endpoint; used to find the Parent gene
- * identifier given a transcript identifier.
+ * A client for the Ensembl lookup REST endpoint, used to find the gene
+ * identifier given a gene, transcript or protein identifier.
*
* @author gmcarstairs
*
* @author gmcarstairs
- *
*/
public class EnsemblLookup extends EnsemblRestClient
{
*/
public class EnsemblLookup extends EnsemblRestClient
{
@@
-50,6
+49,9
@@
public class EnsemblLookup extends EnsemblRestClient
private static final String OBJECT_TYPE_GENE = "Gene";
private static final String OBJECT_TYPE = "object_type";
private static final String OBJECT_TYPE_GENE = "Gene";
private static final String OBJECT_TYPE = "object_type";
+ /**
+ * keep track of last identifier retrieved to break loops
+ */
private String lastId;
/**
private String lastId;
/**
@@
-86,17
+88,26
@@
public class EnsemblLookup extends EnsemblRestClient
protected URL getUrl(List<String> ids) throws MalformedURLException
{
String identifier = ids.get(0);
protected URL getUrl(List<String> ids) throws MalformedURLException
{
String identifier = ids.get(0);
- return getUrl(identifier);
+ return getUrl(identifier, null);
}
/**
}
/**
+ * Gets the url for lookup of the given identifier, optionally with objectType
+ * also specified in the request
+ *
* @param identifier
* @param identifier
+ * @param objectType
* @return
*/
* @return
*/
- protected URL getUrl(String identifier)
+ protected URL getUrl(String identifier, String objectType)
{
String url = getDomain() + "/lookup/id/" + identifier
+ CONTENT_TYPE_JSON;
{
String url = getDomain() + "/lookup/id/" + identifier
+ CONTENT_TYPE_JSON;
+ if (objectType != null)
+ {
+ url += "&" + OBJECT_TYPE + "=" + objectType;
+ }
+
try
{
return new URL(url);
try
{
return new URL(url);
@@
-125,27
+136,45
@@
public class EnsemblLookup extends EnsemblRestClient
}
/**
}
/**
+ * Returns the gene id related to the given identifier, which may be for a
+ * gene, transcript or protein
+ *
+ * @param identifier
+ * @return
+ */
+ public String getGeneId(String identifier)
+ {
+ return getGeneId(identifier, null);
+ }
+
+ /**
* Calls the Ensembl lookup REST endpoint and retrieves the 'Parent' for the
* given identifier, or null if not found
*
* @param identifier
* Calls the Ensembl lookup REST endpoint and retrieves the 'Parent' for the
* given identifier, or null if not found
*
* @param identifier
+ * @param objectType
+ * (optional)
* @return
*/
* @return
*/
- public String getGeneId(String identifier)
+ public String getGeneId(String identifier, String objectType)
{
List<String> ids = Arrays.asList(new String[] { identifier });
BufferedReader br = null;
try
{
{
List<String> ids = Arrays.asList(new String[] { identifier });
BufferedReader br = null;
try
{
- URL url = getUrl(identifier);
+
+ URL url = getUrl(identifier, objectType);
+
if (identifier.equals(lastId))
{
System.err.println("** Ensembl lookup " + url.toString()
+ " looping on Parent!");
return null;
}
if (identifier.equals(lastId))
{
System.err.println("** Ensembl lookup " + url.toString()
+ " looping on Parent!");
return null;
}
+
lastId = identifier;
lastId = identifier;
+
if (url != null)
{
br = getHttpResponse(url, ids);
if (url != null)
{
br = getHttpResponse(url, ids);
@@
-190,28
+219,19
@@
public class EnsemblLookup extends EnsemblRestClient
String type = val.get(OBJECT_TYPE).toString();
if (OBJECT_TYPE_GENE.equalsIgnoreCase(type))
{
String type = val.get(OBJECT_TYPE).toString();
if (OBJECT_TYPE_GENE.equalsIgnoreCase(type))
{
+ // got the gene - just returns its id
geneId = val.get(ID).toString();
}
else if (OBJECT_TYPE_TRANSCRIPT.equalsIgnoreCase(type))
{
geneId = val.get(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))
{
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();
String transcriptId = val.get(PARENT).toString();
- try
- {
- geneId = getGeneId(transcriptId);
- } catch (StackOverflowError e)
- {
- /*
- * unlikely data condition error!
- */
- System.err
- .println("** Ensembl lookup "
- + getUrl(transcriptId).toString()
- + " looping on Parent!");
- }
+ geneId = getGeneId(transcriptId, OBJECT_TYPE_TRANSCRIPT);
}
} catch (ParseException e)
{
}
} catch (ParseException e)
{