X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblMap.java;h=f2ab1956a49712df9c162b4c3651c18b7d7f2e74;hb=2bb9cad4fa36d64cebbe09bc63732e8dbb4dcb32;hp=56657e0578c517e8c02717e1d57060a77a557f70;hpb=353109c11d706b29ae5bc9606f0e12223aa45a98;p=jalview.git
diff --git a/src/jalview/ext/ensembl/EnsemblMap.java b/src/jalview/ext/ensembl/EnsemblMap.java
index 56657e0..f2ab195 100644
--- a/src/jalview/ext/ensembl/EnsemblMap.java
+++ b/src/jalview/ext/ensembl/EnsemblMap.java
@@ -1,11 +1,32 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.GeneLociI;
+import jalview.datamodel.GeneLocus;
+import jalview.datamodel.Mapping;
import jalview.util.MapList;
-import java.io.BufferedReader;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
@@ -13,12 +34,22 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+/**
+ * A client for the Ensembl REST service /map endpoint, to convert from
+ * coordinates of one genome assembly to another.
+ *
+ * Note that species and assembly identifiers passed to this class must be valid
+ * in Ensembl. They are not case sensitive.
+ *
+ * @author gmcarstairs
+ * @see https://rest.ensembl.org/documentation/info/assembly_map
+ * @see https://rest.ensembl.org/info/assembly/human?content-type=text/xml
+ * @see https://rest.ensembl.org/info/species?content-type=text/xml
+ */
public class EnsemblMap extends EnsemblRestClient
{
private static final String MAPPED = "mapped";
@@ -73,8 +104,8 @@ public class EnsemblMap extends EnsemblRestClient
* @return
* @throws MalformedURLException
*/
- protected URL getAssemblyMapUrl(String species, String chromosome, String fromRef,
- String toRef, int startPos, int endPos)
+ protected URL getAssemblyMapUrl(String species, String chromosome,
+ String fromRef, String toRef, int startPos, int endPos)
throws MalformedURLException
{
/*
@@ -98,18 +129,6 @@ public class EnsemblMap extends EnsemblRestClient
}
@Override
- protected String getRequestMimeType(boolean multipleIds)
- {
- return "application/json";
- }
-
- @Override
- protected String getResponseMimeType()
- {
- return "application/json";
- }
-
- @Override
protected URL getUrl(List ids) throws MalformedURLException
{
return null; // not used
@@ -131,30 +150,15 @@ public class EnsemblMap extends EnsemblRestClient
String fromRef, String toRef, int[] queryRange)
{
URL url = null;
- BufferedReader br = null;
-
try
{
- url = getAssemblyMapUrl(species, chromosome, fromRef, toRef, queryRange[0],
- queryRange[1]);
- br = getHttpResponse(url, null);
- return (parseAssemblyMappingResponse(br));
+ url = getAssemblyMapUrl(species, chromosome, fromRef, toRef,
+ queryRange[0], queryRange[1]);
+ return (parseAssemblyMappingResponse(url));
} catch (Throwable t)
{
System.out.println("Error calling " + url + ": " + t.getMessage());
return null;
- } finally
- {
- if (br != null)
- {
- try
- {
- br.close();
- } catch (IOException e)
- {
- // ignore
- }
- }
}
}
@@ -173,22 +177,24 @@ public class EnsemblMap extends EnsemblRestClient
* @param br
* @return
*/
- protected int[] parseAssemblyMappingResponse(BufferedReader br)
+ @SuppressWarnings("unchecked")
+ protected int[] parseAssemblyMappingResponse(URL url)
{
int[] result = null;
- JSONParser jp = new JSONParser();
try
{
- JSONObject parsed = (JSONObject) jp.parse(br);
- JSONArray mappings = (JSONArray) parsed.get(MAPPINGS);
-
- Iterator rvals = mappings.iterator();
+ Iterator