import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
-
/**
* Provides the behaviors for the Structure chooser Panel
*
public void run()
{
long startTime = System.currentTimeMillis();
- String msg = MessageManager.getString("status.fetching_db_refs");
- updateProgressIndicator(msg, startTime);
+ updateProgressIndicator(MessageManager
+ .getString("status.loading_cached_pdb_entries"), startTime);
loadLocalCachedPDBEntries();
+ updateProgressIndicator(null, startTime);
+ updateProgressIndicator(MessageManager
+ .getString("status.searching_for_pdb_structures"),
+ startTime);
fetchStructuresMetaData();
populateFilterComboBox();
updateProgressIndicator(null, startTime);
pdbRequest.setFieldToSearchBy("(text:");
pdbRequest.setWantedFields(wantedFields);
pdbRequest.setSearchTerm(buildQuery(seq) + ")");
- pdbRequest.setAssociatedSequence(seq.getName());
+ pdbRequest.setAssociatedSequence(seq);
pdbRestCleint = new PDBRestClient();
PDBRestResponse resultList;
try
resultList = pdbRestCleint.executeRequest(pdbRequest);
} catch (Exception e)
{
+ e.printStackTrace();
errors.add(e.getMessage());
continue;
}
}
else
{
- mainFrame
-.setTitle("Structure Chooser - Manual association");
+ mainFrame.setTitle("Structure Chooser - Manual association");
if (errors.size() > 0)
{
- StringBuilder errorMsg = new StringBuilder(
- "Operation was unsucessful due to the following: \n");
+ StringBuilder errorMsg = new StringBuilder();
+ // "Operation was unsuccessful due to the following: \n");
for (String error : errors)
{
errorMsg.append(error).append("\n");
public void loadLocalCachedPDBEntries()
{
- DefaultTableModel tableModel = new DefaultTableModel();
- tableModel.addColumn("Sequence");
+ DefaultTableModel tableModel = new DefaultTableModel()
+ {
+ @Override
+ public boolean isCellEditable(int row, int column)
+ {
+ return false;
+ }
+ };
+ tableModel.addColumn("Ref Sequence");
tableModel.addColumn("PDB Id");
tableModel.addColumn("Chain");
tableModel.addColumn("Type");
String chain = pdbEntry.getChainCode() == null ? "_" : pdbEntry
.getChainCode();
- String[] pdbEntryRowData = new String[]
- { seq.getDisplayId(false), pdbEntry.getId(),
- chain,
- pdbEntry.getType(),
+ Object[] pdbEntryRowData = new Object[]
+ { seq, pdbEntry.getId(), chain, pdbEntry.getType(),
pdbEntry.getFile() };
if (pdbEntry.getFile() != null)
{
tableModel.addRow(pdbEntryRowData);
}
- cachedEntryMap.put(pdbEntry.getId().toLowerCase(),
- pdbEntry);
+ cachedEntryMap.put(pdbEntry.getId().toLowerCase(), pdbEntry);
}
}
}
{
for (PDBEntry entry : seq.getPDBId())
{
- seqRefs.add(entry.getId());
+ if (isValidSeqName(entry.getId()))
+ {
+ seqRefs.add(entry.getId());
+ }
}
}
int count = 0;
for (DBRefEntry dbRef : seq.getDBRef())
{
- seqRefs.add(getDBRefId(dbRef));
+ if (isValidSeqName(getDBRefId(dbRef)))
+ {
+ seqRefs.add(getDBRefId(dbRef));
+ }
++count;
if (count > 10)
{
*/
public static boolean isValidSeqName(String seqName)
{
- String ignoreList = "pdb,uniprot";
+ // System.out.println("seqName : " + seqName);
+ String ignoreList = "pdb,uniprot,swiss-prot";
if (seqName.length() < 3)
{
return false;
}
+ if (seqName.contains(":"))
+ {
+ return false;
+ }
+ seqName = seqName.toLowerCase();
for (String ignoredEntry : ignoreList.split(","))
{
- if (seqName.equalsIgnoreCase(ignoredEntry))
+ if (seqName.contains(ignoredEntry))
{
return false;
}
!chk_invertFilter.isSelected());
pdbRequest.setSearchTerm(buildQuery(seq) + ")");
pdbRequest.setWantedFields(wantedFields);
- pdbRequest.setAssociatedSequence(seq.getName());
+ pdbRequest.setAssociatedSequence(seq);
pdbRestCleint = new PDBRestClient();
PDBRestResponse resultList;
try
resultList = pdbRestCleint.executeRequest(pdbRequest);
} catch (Exception e)
{
+ e.printStackTrace();
errors.add(e.getMessage());
continue;
}
+ totalTime + ")");
if (errors.size() > 0)
{
- StringBuilder errorMsg = new StringBuilder(
- "Operation unsucessful due to the following: \n");
+ StringBuilder errorMsg = new StringBuilder();
for (String error : errors)
{
errorMsg.append(error).append("\n");
filterThread.start();
}
-
/**
* Handles action event for btn_pdbFromFile
*/
AssociateSeqOptions assSeqOpt = (AssociateSeqOptions) idInputAssSeqPanel
.getCmb_assSeq().getSelectedItem();
lbl_pdbManualFetchStatus.setIcon(errorImage);
+ lbl_pdbManualFetchStatus.setToolTipText("");
+ if (txt_search.getText().length() > 0)
+ {
+ lbl_pdbManualFetchStatus.setToolTipText(JvSwingUtils.wrapTooltip(
+ true, "No PDB entry found for \'" + txt_search.getText()
+ + "\'"));
+ }
+
+ if (errorWarning.length() > 0)
+ {
+ lbl_pdbManualFetchStatus.setIcon(warningImage);
+ lbl_pdbManualFetchStatus.setToolTipText(JvSwingUtils.wrapTooltip(
+ true, errorWarning.toString()));
+ }
+
if (selectedSequences.length == 1
|| !assSeqOpt.getName().equalsIgnoreCase(
"-Select Associated Seq-"))
if (isValidPBDEntry)
{
btn_view.setEnabled(true);
+ lbl_pdbManualFetchStatus.setToolTipText("");
lbl_pdbManualFetchStatus.setIcon(goodImage);
}
}
.getCmb_assSeq().getSelectedItem();
lbl_fromFileStatus.setIcon(errorImage);
if (selectedSequences.length == 1
- || (assSeqOpt != null
- && !assSeqOpt.getName().equalsIgnoreCase(
+ || (assSeqOpt != null && !assSeqOpt.getName().equalsIgnoreCase(
"-Select Associated Seq-")))
{
btn_pdbFromFile.setEnabled(true);
String currentView = selectedFilterOpt.getView();
if (currentView == VIEWS_FILTER)
{
- int pdbIdCol = PDBRestClient.getPDBIdColumIndex(
- lastPdbRequest.getWantedFields(), true);
+ int pdbIdColIndex = tbl_summary.getColumn(
+ PDBRestClient.PDBDocField.PDB_ID.getName()).getModelIndex();
+ int refSeqColIndex = tbl_summary.getColumn("Ref Sequence")
+ .getModelIndex();
int[] selectedRows = tbl_summary.getSelectedRows();
PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
int count = 0;
+ ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
for (int summaryRow : selectedRows)
{
- String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
+ String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdColIndex)
.toString();
-
+ SequenceI selectedSeq = (SequenceI) tbl_summary.getValueAt(
+ summaryRow, refSeqColIndex);
+ selectedSeqsToView.add(selectedSeq);
PDBEntry pdbEntry = cachedEntryMap.get(pdbIdStr.toLowerCase());
if (pdbEntry == null)
{
}
pdbEntriesToView[count++] = pdbEntry;
}
+ SequenceI[] selectedSeqs = selectedSeqsToView
+ .toArray(new SequenceI[selectedSeqsToView.size()]);
launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, selectedSequences);
+ pdbEntriesToView, ap, selectedSeqs);
}
- else if(currentView == VIEWS_LOCAL_PDB){
+ else if (currentView == VIEWS_LOCAL_PDB)
+ {
int[] selectedRows = tbl_local_pdb.getSelectedRows();
PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
int count = 0;
+ int pdbIdColIndex = tbl_local_pdb.getColumn(
+ PDBRestClient.PDBDocField.PDB_ID.getName()).getModelIndex();
+ int refSeqColIndex = tbl_local_pdb.getColumn("Ref Sequence")
+ .getModelIndex();
+ ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
for (int row : selectedRows)
{
- String entryKey = tbl_local_pdb.getValueAt(row, 1).toString()
- .toLowerCase();
+ String entryKey = tbl_local_pdb.getValueAt(row, pdbIdColIndex)
+ .toString().toLowerCase();
pdbEntriesToView[count++] = cachedEntryMap.get(entryKey);
+ SequenceI selectedSeq = (SequenceI) tbl_local_pdb.getValueAt(row,
+ refSeqColIndex);
+ selectedSeqsToView.add(selectedSeq);
+
}
+ SequenceI[] selectedSeqs = selectedSeqsToView
+ .toArray(new SequenceI[selectedSeqsToView.size()]);
launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, selectedSequences);
+ pdbEntriesToView, ap, selectedSeqs);
}
else if (currentView == VIEWS_ENTER_ID)
{
selectedSequence = userSelectedSeq;
}
PDBEntry fileEntry = new AssociatePdbFileWithSeq()
- .associatePdbWithSeq(
- selectedPdbFileName, jalview.io.AppletFormatAdapter.FILE,
- selectedSequence, true, Desktop.instance);
+ .associatePdbWithSeq(selectedPdbFileName,
+ jalview.io.AppletFormatAdapter.FILE,
+ selectedSequence, true, Desktop.instance);
launchStructureViewer(ap.getStructureSelectionManager(),
new PDBEntry[]
mainFrame.dispose();
}
- private void launchStructureViewer(StructureSelectionManager ssm,
- PDBEntry[] pdbEntriesToView, AlignmentPanel alignPanel,
- SequenceI[] selectedSequences)
+ private void launchStructureViewer(final StructureSelectionManager ssm,
+ final PDBEntry[] pdbEntriesToView,
+ final AlignmentPanel alignPanel, final SequenceI[] sequences)
{
- StructureViewer sViewer = new StructureViewer(ssm);
- if (pdbEntriesToView.length > 1)
+ final StructureViewer sViewer = new StructureViewer(ssm);
+ new Thread(new Runnable()
{
- sViewer.viewStructures(alignPanel, pdbEntriesToView,
- alignPanel.av.collateForPDB(pdbEntriesToView));
- }
- else
- {
- sViewer.viewStructures(pdbEntriesToView[0], selectedSequences, null,
- alignPanel);
- }
+ public void run()
+ {
+ if (pdbEntriesToView.length > 1)
+ {
+ ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
+ for (SequenceI seq : sequences)
+ {
+ seqsMap.add(new SequenceI[]
+ { seq });
+ }
+ SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
+ sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
+ // sViewer.viewStructures(pdbEntriesToView,
+ // alignPanel.av.collateForPDB(pdbEntriesToView),
+ // alignPanel);
+ }
+ else
+ {
+ sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
+ }
+ }
+ }).start();
}
/**
@Override
protected void txt_search_ActionPerformed()
{
+ errorWarning.setLength(0);
isValidPBDEntry = false;
if (txt_search.getText().length() > 0)
{
pdbRequest.setFieldToSearchBy("(pdb_id:");
pdbRequest.setWantedFields(wantedFields);
pdbRequest.setSearchTerm(txt_search.getText() + ")");
- pdbRequest.setAssociatedSequence(selectedSequence.getName());
+ pdbRequest.setAssociatedSequence(selectedSequence);
pdbRestCleint = new PDBRestClient();
PDBRestResponse resultList;
try
resultList = pdbRestCleint.executeRequest(pdbRequest);
} catch (Exception e)
{
- JOptionPane.showMessageDialog(this, e.getMessage(),
- "PDB Web-service Error", JOptionPane.ERROR_MESSAGE);
+ errorWarning.append(e.getMessage());
return;
} finally
{
- System.out.println(">>>>> executing finally block");
validateSelections();
}
if (resultList.getSearchSummary() != null
}
}
-
}