_group.id
_group.name
_group.sort_order
-g1;Miscellaneous;2
-g2;Name;1
-g3;Quality;3
+g1;ModelInfo;1
+g2;Quality;2
+g3;Miscellaneous;3
+
#
-_data_column.primary_key;model_identifier
+_data_column.primary_key;model_url
_data_column.default_response_page_size;100
#
_data_column.name
_data_column.preferred_col_width
_data_column.is_shown_by_default
_data_column.is_searchable
-Model id;model_identifier;String;g2;80;150;85;true;false
-Sequence;aligned_sequence;String;g1;80;150;85;false;false
+Model id;model_identifier;String;g3;80;150;85;true;false
+Sequence;aligned_sequence;String;g3;80;150;85;false;false
Provider;provider;String;g1;80;150;85;true;false
-Uniprot Id;id;String;g2;80;150;85;false;false
-UniProt Accession;uniprot_accession;String;g2;50;400;95;false;true
-Entry Name;entry_name;String;g2;100;150;105;true;false
-Url;model_url;String;g1;100;150;105;false;false
+Model Category;model_category;String;g1;80;150;85;true;false
+Uniprot Id;id;String;g1;80;150;85;false;false
+Uniprot Start;uniprot_start;Integer;g1;80;150;85;true;false
+Uniprot End;uniprot_end;Integer;g1;80;150;85;true;false
+Resolution;resolution;double;g2;80;150;85;true;false
Qmean;qmean_avg_local_score;double;g2;100;150;105;true;false
-Uniprot Start;uniprot_start;Integer;g3;3;8;3;true;false
-Uniprot End;uniprot_end;Integer;g3;3;8;3;true;false
-Resolution;resolution;double;g3;3;8;3;true;false
-Coverage;coverage;double;g3;3;8;3;true;false
-Sequence Identity;sequence_identity;Float;g3;3;8;3;false;false
-Model Category;model_category;String;g3;3;8;3;true;false
-Created Date;created;string;g3;3;8;3;true;false
\ No newline at end of file
+Coverage;coverage;double;g2;80;150;85;true;false
+Sequence Identity;sequence_identity;Float;g2;80;150;85;false;false
+Created Date;created;string;g3;80;150;85;true;false
+UniProt Accession;uniprot_accession;String;g1;50;400;95;false;true
+Entry Name;entry_name;String;g3;100;150;105;true;false
+Url;model_url;String;g3;100;150;105;true;false
import java.util.HashSet;
import java.util.Map;
+import javax.swing.SwingUtilities;
+
import org.json.JSONArray;
import org.json.JSONObject;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentI;
import jalview.fts.api.FTSDataColumnI;
import jalview.fts.api.FTSRestClientI;
import jalview.fts.core.FTSRestRequest;
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.FileFormatI;
+import jalview.io.FileLoader;
+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");
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)
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
{
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
}
}.start();
}
-
+
@Override
public void okAction()
{
// mainFrame.dispose();
disableActionButtons();
StringBuilder selectedIds = new StringBuilder();
- HashSet<String> selectedIdsSet = new HashSet<>();
+ final HashSet<String> selectedIdsSet = new HashSet<>();
int primaryKeyColIndex = 0;
try
{
{
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)
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)
+ {
+ Cache.log.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()
{
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;
}