/*
-
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
package jalview.gui;
import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.DBRefSource;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.jbgui.GStructureChooser;
private boolean isValidPBDEntry;
-
public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
AlignmentPanel ap)
{
PDBRestRequest pdbRequest = new PDBRestRequest();
pdbRequest.setAllowEmptySeq(false);
pdbRequest.setResponseSize(500);
- pdbRequest.setFieldToSearchBy("(text:");
+ pdbRequest.setFieldToSearchBy("(");
pdbRequest.setWantedFields(wantedFields);
pdbRequest.setSearchTerm(buildQuery(seq) + ")");
pdbRequest.setAssociatedSequence(seq);
discoveredStructuresSet));
structuresDiscovered = true;
noOfStructuresFound = discoveredStructuresSet.size();
- mainFrame.setTitle("Structure Chooser - " + noOfStructuresFound
- + " Found (" + totalTime + ")");
+ mainFrame.setTitle(MessageManager.formatMessage(
+ "label.structure_chooser_no_of_structures",
+ noOfStructuresFound, totalTime));
}
else
{
- mainFrame.setTitle("Structure Chooser - Manual association");
+ mainFrame.setTitle(MessageManager
+ .getString("label.structure_chooser_manual_association"));
if (errors.size() > 0)
{
StringBuilder errorMsg = new StringBuilder();
errorMsg.append(error).append("\n");
}
JOptionPane.showMessageDialog(this, errorMsg.toString(),
- "PDB Web-service Error", JOptionPane.ERROR_MESSAGE);
+ MessageManager.getString("label.pdb_web-service_error"),
+ JOptionPane.ERROR_MESSAGE);
}
}
}
if (seq.getDatasetSequence() != null
&& seq.getDatasetSequence().getAllPDBEntries() != null)
{
- for (PDBEntry pdbEntry : seq.getDatasetSequence().getAllPDBEntries())
+ for (PDBEntry pdbEntry : seq.getDatasetSequence()
+ .getAllPDBEntries())
{
if (pdbEntry.getFile() != null)
{
tbl_local_pdb.setModel(tableModelx);
}
-
/**
* Builds a query string for a given sequences using its DBRef entries
*
public static String buildQuery(SequenceI seq)
{
+ boolean isPDBRefsFound = false;
+ boolean isUniProtRefsFound = false;
+ StringBuilder queryBuilder = new StringBuilder();
HashSet<String> seqRefs = new LinkedHashSet<String>();
- String seqName = seq.getName();
- String[] names = seqName.toLowerCase().split("\\|");
- for (String name : names)
- {
- // System.out.println("Found name : " + name);
- name.trim();
- if (isValidSeqName(name))
- {
- seqRefs.add(name);
- }
- }
if (seq.getAllPDBEntries() != null)
{
{
if (isValidSeqName(entry.getId()))
{
- seqRefs.add(entry.getId());
+ queryBuilder.append(PDBRestClient.PDBDocField.PDB_ID.getCode())
+ .append(":")
+.append(entry.getId().toLowerCase())
+ .append(" OR ");
+ isPDBRefsFound = true;
+ // seqRefs.add(entry.getId());
}
}
}
- if (seq.getDBRef() != null && seq.getDBRef().length != 0)
+ if (seq.getDBRefs() != null && seq.getDBRefs().length != 0)
{
- int count = 0;
- for (DBRefEntry dbRef : seq.getDBRef())
+ for (DBRefEntry dbRef : seq.getDBRefs())
{
if (isValidSeqName(getDBRefId(dbRef)))
{
- seqRefs.add(getDBRefId(dbRef));
- }
- ++count;
- if (count > 10)
- {
- break;
+ if (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT))
+ {
+ queryBuilder
+ .append(PDBRestClient.PDBDocField.UNIPROT_ACCESSION
+ .getCode()).append(":")
+ .append(getDBRefId(dbRef))
+ .append(" OR ");
+ queryBuilder
+ .append(PDBRestClient.PDBDocField.UNIPROT_ID.getCode())
+ .append(":")
+ .append(getDBRefId(dbRef)).append(" OR ");
+ isUniProtRefsFound = true;
+ }
+ else if (dbRef.getSource().equalsIgnoreCase(DBRefSource.PDB))
+ {
+
+ queryBuilder.append(PDBRestClient.PDBDocField.PDB_ID.getCode())
+ .append(":").append(getDBRefId(dbRef).toLowerCase())
+ .append(" OR ");
+ isPDBRefsFound = true;
+ }
+ else
+ {
+ seqRefs.add(getDBRefId(dbRef));
+ }
}
}
}
- StringBuilder queryBuilder = new StringBuilder();
- for (String seqRef : seqRefs)
+ if (!isPDBRefsFound && !isUniProtRefsFound)
{
- queryBuilder.append("text:").append(seqRef).append(" OR ");
+ String seqName = seq.getName();
+ String[] names = seqName.toLowerCase().split("\\|");
+ for (String name : names)
+ {
+ // System.out.println("Found name : " + name);
+ name.trim();
+ if (isValidSeqName(name))
+ {
+ seqRefs.add(name);
+ }
+ }
+
+ for (String seqRef : seqRefs)
+ {
+ queryBuilder.append("text:").append(seqRef).append(" OR ");
+ }
}
- int endIndex = queryBuilder.lastIndexOf(" OR ");
+ int endIndex = queryBuilder.lastIndexOf(" OR ");
if (queryBuilder.toString().length() < 6)
{
return null;
}
- String query = queryBuilder.toString().substring(5, endIndex);
+ String query = queryBuilder.toString().substring(0, endIndex);
return query;
}
PDBRestRequest pdbRequest = new PDBRestRequest();
pdbRequest.setAllowEmptySeq(false);
pdbRequest.setResponseSize(1);
- pdbRequest.setFieldToSearchBy("(text:");
+ pdbRequest.setFieldToSearchBy("(");
pdbRequest.setFieldToSortBy(fieldToFilterBy,
!chk_invertFilter.isSelected());
pdbRequest.setSearchTerm(buildQuery(seq) + ")");
// Update table selection model here
tbl_summary.addRowSelectionInterval(0, filterResponseCount - 1);
-
- mainFrame.setTitle("Structure Chooser - Filter time ("
- + totalTime + ")");
+ mainFrame.setTitle(MessageManager.formatMessage(
+ "label.structure_chooser_filter_time", totalTime));
}
else
{
- mainFrame.setTitle("Structure Chooser - Filter time ("
- + totalTime + ")");
+ mainFrame.setTitle(MessageManager.formatMessage(
+ "label.structure_chooser_filter_time", totalTime));
if (errors.size() > 0)
{
StringBuilder errorMsg = new StringBuilder();
{
errorMsg.append(error).append("\n");
}
- JOptionPane.showMessageDialog(null, errorMsg.toString(),
- "PDB Web-service Error", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(
+ null,
+ errorMsg.toString(),
+ MessageManager.getString("label.pdb_web-service_error"),
+ JOptionPane.ERROR_MESSAGE);
}
}
/**
* Handles action event for btn_pdbFromFile
*/
+ @Override
public void pdbFromFile_actionPerformed()
{
jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
chooser.setFileView(new jalview.io.JalviewFileView());
chooser.setDialogTitle(MessageManager.formatMessage(
- "label.select_pdb_file_for", new String[]
- { selectedSequence.getDisplayId(false) }));
+ "label.select_pdb_file_for",
+ selectedSequence.getDisplayId(false)));
chooser.setToolTipText(MessageManager.formatMessage(
- "label.load_pdb_file_associate_with_sequence", new String[]
- { selectedSequence.getDisplayId(false) }));
+ "label.load_pdb_file_associate_with_sequence",
+ selectedSequence.getDisplayId(false)));
int value = chooser.showOpenDialog(null);
if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION)
* Populates the filter combo-box options dynamically depending on discovered
* structures
*/
+ @Override
protected void populateFilterComboBox()
{
if (isStructuresDiscovered())
/**
* Updates the displayed view based on the selected filter option
*/
+ @Override
protected void updateCurrentView()
{
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
else if (selectedFilterOpt.getView() == VIEWS_ENTER_ID
|| selectedFilterOpt.getView() == VIEWS_FROM_FILE)
{
- mainFrame.setTitle(filterTitle);
+ mainFrame.setTitle(MessageManager
+ .getString("label.structure_chooser_manual_association"));
idInputAssSeqPanel.loadCmbAssSeq();
fileChooserAssSeqPanel.loadCmbAssSeq();
}
* Validates user selection and activates the view button if all parameters
* are correct
*/
+ @Override
public void validateSelections()
{
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
lbl_pdbManualFetchStatus.setToolTipText("");
if (txt_search.getText().length() > 0)
{
- lbl_pdbManualFetchStatus.setToolTipText(JvSwingUtils.wrapTooltip(
- true, "No PDB entry found for \'" + txt_search.getText()
- + "\'"));
+ lbl_pdbManualFetchStatus
+ .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager
+ .formatMessage("info.no_pdb_entry_found_for",
+ txt_search.getText())));
}
if (errorWarning.length() > 0)
selectedSequence.getDatasetSequence().addPDBId(pdbEntry);
}
- PDBEntry[] pdbEntriesToView = new PDBEntry[]
- { pdbEntry };
+ PDBEntry[] pdbEntriesToView = new PDBEntry[] { pdbEntry };
launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, new SequenceI[]
- { selectedSequence });
+ pdbEntriesToView, ap, new SequenceI[] { selectedSequence });
}
else if (currentView == VIEWS_FROM_FILE)
{
selectedSequence, true, Desktop.instance);
launchStructureViewer(ap.getStructureSelectionManager(),
- new PDBEntry[]
- { fileEntry }, ap, new SequenceI[]
- { selectedSequence });
+ new PDBEntry[] { fileEntry }, ap,
+ new SequenceI[] { selectedSequence });
}
mainFrame.dispose();
}
final AlignmentPanel alignPanel, final SequenceI[] sequences)
{
final StructureViewer sViewer = new StructureViewer(ssm);
+
+ new jalview.ws.DBRefFetcher(sequences, null, null, null, false)
+ .fetchDBRefs(true);
new Thread(new Runnable()
{
+ @Override
public void run()
{
if (pdbEntriesToView.length > 1)
ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
for (SequenceI seq : sequences)
{
- seqsMap.add(new SequenceI[]
- { seq });
+ seqsMap.add(new SequenceI[] { seq });
}
SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
* Populates the combo-box used in associating manually fetched structures to
* a unique sequence when more than one sequence selection is made.
*/
+ @Override
public void populateCmbAssociateSeqOptions(
JComboBox<AssociateSeqOptions> cmb_assSeq, JLabel lbl_associateSeq)
{
@Override
protected void txt_search_ActionPerformed()
{
- errorWarning.setLength(0);
- isValidPBDEntry = false;
- if (txt_search.getText().length() > 0)
+ new Thread()
{
- List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
- wantedFields.add(PDBDocField.PDB_ID);
- PDBRestRequest pdbRequest = new PDBRestRequest();
- pdbRequest.setAllowEmptySeq(false);
- pdbRequest.setResponseSize(1);
- pdbRequest.setFieldToSearchBy("(pdb_id:");
- pdbRequest.setWantedFields(wantedFields);
- pdbRequest.setSearchTerm(txt_search.getText() + ")");
- pdbRequest.setAssociatedSequence(selectedSequence);
- pdbRestCleint = new PDBRestClient();
- PDBRestResponse resultList;
- try
- {
- resultList = pdbRestCleint.executeRequest(pdbRequest);
- } catch (Exception e)
- {
- errorWarning.append(e.getMessage());
- return;
- } finally
+ @Override
+ public void run()
{
+ errorWarning.setLength(0);
+ isValidPBDEntry = false;
+ if (txt_search.getText().length() > 0)
+ {
+ List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
+ wantedFields.add(PDBDocField.PDB_ID);
+ PDBRestRequest pdbRequest = new PDBRestRequest();
+ pdbRequest.setAllowEmptySeq(false);
+ pdbRequest.setResponseSize(1);
+ pdbRequest.setFieldToSearchBy("(pdb_id:");
+ pdbRequest.setWantedFields(wantedFields);
+ pdbRequest.setSearchTerm(txt_search.getText() + ")");
+ pdbRequest.setAssociatedSequence(selectedSequence);
+ pdbRestCleint = new PDBRestClient();
+ PDBRestResponse resultList;
+ try
+ {
+ resultList = pdbRestCleint.executeRequest(pdbRequest);
+ } catch (Exception e)
+ {
+ errorWarning.append(e.getMessage());
+ return;
+ } finally
+ {
+ validateSelections();
+ }
+ if (resultList.getSearchSummary() != null
+ && resultList.getSearchSummary().size() > 0)
+ {
+ isValidPBDEntry = true;
+ }
+ }
validateSelections();
}
- if (resultList.getSearchSummary() != null
- && resultList.getSearchSummary().size() > 0)
- {
- isValidPBDEntry = true;
- }
- }
- validateSelections();
+ }.start();
}
@Override
public class PDBEntryTableModel extends AbstractTableModel
{
- String[] columns =
- { "Ref Sequence", "PDB Id", "Chain", "Type", "File" };
+ String[] columns = { "Ref Sequence", "PDB Id", "Chain", "Type", "File" };
private List<CachedPDB> pdbEntries;