X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Ffts%2Fservice%2Fthreedbeacons%2FTDBeaconsFTSPanel.java;h=253de4263bbe6b2981aecd9df84603484236f69d;hb=4469e6d2c6a0c05c6278b10b0a157522aaa98091;hp=c368e7b96cb087a00c182ad125ecee698e81d4ee;hpb=2f6c709622e1bdabe5eb3b2420b41f2aa6ff4658;p=jalview.git
diff --git a/src/jalview/fts/service/threedbeacons/TDBeaconsFTSPanel.java b/src/jalview/fts/service/threedbeacons/TDBeaconsFTSPanel.java
index c368e7b..253de42 100644
--- a/src/jalview/fts/service/threedbeacons/TDBeaconsFTSPanel.java
+++ b/src/jalview/fts/service/threedbeacons/TDBeaconsFTSPanel.java
@@ -1,30 +1,48 @@
+/*
+ * 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.fts.service.threedbeacons;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
-import org.json.JSONArray;
-import org.json.JSONObject;
+import javax.swing.SwingUtilities;
+import jalview.bin.Console;
+import jalview.datamodel.AlignmentI;
import jalview.fts.api.FTSDataColumnI;
import jalview.fts.api.FTSRestClientI;
import jalview.fts.core.FTSRestRequest;
import jalview.fts.core.FTSRestResponse;
import jalview.fts.core.GFTSPanel;
-import jalview.fts.service.pdb.PDBFTSRestClient;
import jalview.gui.SequenceFetcher;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FormatAdapter;
import jalview.util.MessageManager;
@SuppressWarnings("serial")
public class TDBeaconsFTSPanel extends GFTSPanel
-{
+{
private static String defaultFTSFrameTitle = MessageManager
.getString("label.pdb_sequence_fetcher");
@@ -33,81 +51,19 @@ public class TDBeaconsFTSPanel extends GFTSPanel
private static final String THREEDB_FTS_CACHE_KEY = "CACHE.THREEDB_FTS";
private static final String THREEDB_AUTOSEARCH = "FTS.THREEDB.AUTOSEARCH";
-
+
private static HttpURLConnection connection;
-
+
public TDBeaconsFTSPanel(SequenceFetcher fetcher)
{
- super(fetcher);
- pageLimit = TDBeaconsFTSRestClient.getInstance().getDefaultResponsePageSize();
+ // no ID retrieval option for TD Beacons just now
+ super(null);
+ pageLimit = TDBeaconsFTSRestClient.getInstance()
+ .getDefaultResponsePageSize();
this.seqFetcher = fetcher;
this.progressIndicator = (fetcher == null) ? null
: fetcher.getProgressIndicator();
}
-
-// public int TDBeaconsFTSPanel2(String result)
-// {
-// int seqlength = executeParse(result);
-// return seqlength;
-// }
-
- public static int executeParse(String query) {
- BufferedReader reader;
- String line;
- StringBuffer responseContent = new StringBuffer();
- try {
- URL url = new URL("https://wwwdev.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons-hub-api/uniprot/summary/" + query + ".json");
- connection = (HttpURLConnection) url.openConnection();
- connection.setRequestMethod("GET");
- connection.setConnectTimeout(5000); // <=>5seconds
- connection.setReadTimeout(5000);
- // Status check up, 200 = connection succesful
- int status = connection.getResponseCode();
- // System.out.println(status);
-
- if (status > 299) {
- reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
- while ((line = reader.readLine()) != null) {
- responseContent.append(line);
- }
- reader.close();
- } else {
- reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
- while ((line = reader.readLine()) != null) {
- responseContent.append(line);
- }
- reader.close();
- }
- //System.out.println(responseContent.toString());
- int seq = parse(responseContent.toString());
- return seq;
-
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- connection.disconnect();
- }
- return (Integer) null;
-
- }
-
- public static int parse(String jsonString) {
- JSONObject entry = new JSONObject(jsonString);
- System.out.println(entry);
- int length = entry.getJSONObject("uniprot_entry").getInt("sequence_length");
- String ac = entry.getJSONObject("uniprot_entry").getString("ac");
-
- JSONArray structures = entry.getJSONArray("structures");
- for (int i=0 ; i < structures.length() ; i++) {
- String id = structures.getJSONObject(i).getString("model_identifier");
- //System.out.println("identifier num " + i + " : " + id);
- }
- System.out.println("length : " + length + "; access name : " + ac);
- return length;
-
-}
@Override
public void searchAction(boolean isFreshSearch)
@@ -138,11 +94,12 @@ public class TDBeaconsFTSPanel extends GFTSPanel
FTSRestRequest request = new FTSRestRequest();
request.setAllowEmptySeq(allowEmptySequence);
request.setResponseSize(100);
- request.setFieldToSearchBy("(" + searchTarget + ":");
- request.setSearchTerm(searchTerm + ")");
+ // expect it to be uniprot accesssion
+ request.setSearchTerm(searchTerm + ".json");
request.setOffSet(offSet);
request.setWantedFields(wantedFields);
- FTSRestClientI tdbRestClient = TDBeaconsFTSRestClient.getInstance();
+ FTSRestClientI tdbRestClient = TDBeaconsFTSRestClient
+ .getInstance();
FTSRestResponse resultList;
try
{
@@ -175,7 +132,8 @@ public class TDBeaconsFTSPanel extends GFTSPanel
if (isPaginationEnabled() && resultSetCount > 0)
{
- String f1 = totalNumberformatter.format(Integer.valueOf(offSet + 1));
+ String f1 = totalNumberformatter
+ .format(Integer.valueOf(offSet + 1));
String f2 = totalNumberformatter
.format(Integer.valueOf(offSet + resultSetCount));
String f3 = totalNumberformatter
@@ -199,14 +157,14 @@ public class TDBeaconsFTSPanel extends GFTSPanel
}
}.start();
}
-
+
@Override
public void okAction()
{
// mainFrame.dispose();
disableActionButtons();
StringBuilder selectedIds = new StringBuilder();
- HashSet selectedIdsSet = new HashSet<>();
+ final HashSet selectedIdsSet = new HashSet<>();
int primaryKeyColIndex = 0;
try
{
@@ -222,12 +180,12 @@ public class TDBeaconsFTSPanel extends GFTSPanel
{
String idStr = getResultTable()
.getValueAt(summaryRow, primaryKeyColIndex).toString();
- selectedIdsSet.add(searchTerm);
+ selectedIdsSet.add(idStr);
}
for (String idStr : paginatorCart)
{
- selectedIdsSet.add(searchTerm);
+ selectedIdsSet.add(idStr);
}
for (String selectedId : selectedIdsSet)
@@ -235,19 +193,57 @@ public class TDBeaconsFTSPanel extends GFTSPanel
selectedIds.append(selectedId).append(";");
}
- String ids = selectedIds.toString();
- seqFetcher.setQuery(ids);
- Thread worker = new Thread(seqFetcher);
- worker.start();
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ AlignmentI allSeqs = null;
+ FormatAdapter fl = new jalview.io.FormatAdapter();
+ for (String tdbURL : selectedIdsSet)
+ {
+ try
+ {
+ // retrieve the structure via its URL
+ AlignmentI tdbAl = fl.readFile(tdbURL, DataSourceType.URL,
+ FileFormat.MMCif);
+
+ // TODO: pad structure according to its Uniprot Start so all line up
+ // w.r.t. the Uniprot reference sequence
+ // TODO: give the structure a sensible name (not the giant URL *:o)
+ // )
+ if (tdbAl != null)
+ {
+ if (allSeqs != null)
+ {
+ allSeqs.append(tdbAl);
+ }
+ else
+ {
+ allSeqs = tdbAl;
+ }
+ }
+ } catch (Exception x)
+ {
+ Console.warn("Couldn't retrieve 3d-beacons model for uniprot id"
+ + searchTerm + " : " + tdbURL, x);
+ }
+ }
+ seqFetcher.parseResult(allSeqs,
+ "3D-Beacons models for " + searchTerm, FileFormat.MMCif,
+ null);
+
+ }
+ });
delayAndEnableActionButtons();
}
-
+
@Override
public FTSRestClientI getFTSRestClient()
{
return TDBeaconsFTSRestClient.getInstance();
}
-
+
@Override
public String getFTSFrameTitle()
{
@@ -282,11 +278,17 @@ public class TDBeaconsFTSPanel extends GFTSPanel
protected void showHelp()
{
System.out.println("No help implemented yet.");
-
+
}
-
- public static String decodeSearchTerm(String enteredText) {
+
+ public static String decodeSearchTerm(String enteredText)
+ {
// no multiple query support yet
return enteredText;
}
+
+ public String getDbName()
+ {
+ return "3D-Beacons";
+ }
}