import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Objects;
+import java.util.Vector;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
if (!isPDBRefsFound && !isUniProtRefsFound)
{
String seqName = seq.getName();
+ seqName = sanitizeSeqName(seqName);
String[] names = seqName.toLowerCase().split("\\|");
for (String name : names)
{
}
/**
+ * Remove the following special characters from input string +, -, &, |, !, (,
+ * ), {, }, [, ], ^, ", ~, *, ?, :, \
+ *
+ * @param seqName
+ * @return
+ */
+ private static String sanitizeSeqName(String seqName)
+ {
+ Objects.requireNonNull(seqName);
+ return seqName.replaceAll("\\[\\d*\\]", "")
+ .replaceAll("[^\\dA-Za-z ]", "").replaceAll("\\s+", "+");
+ }
+
+
+ /**
* Ensures sequence ref names are not less than 3 characters and does not
* contain a database name
*
.getStructureSummaryFields();
Collection<PDBResponseSummary> filteredResponse = new HashSet<PDBResponseSummary>();
HashSet<String> errors = new HashSet<String>();
+
for (SequenceI seq : selectedSequences)
{
PDBRestRequest pdbRequest = new PDBRestRequest();
tbl_summary.setModel(PDBRestResponse.getTableModel(
lastPdbRequest, reorderedStructuresSet));
+ PDBRestResponse.configureTableColumn(tbl_summary, wantedFields);
+ tbl_summary.getColumn("Ref Sequence").setPreferredWidth(120);
+ tbl_summary.getColumn("Ref Sequence").setMinWidth(100);
+ tbl_summary.getColumn("Ref Sequence").setMaxWidth(200);
// Update table selection model here
tbl_summary.addRowSelectionInterval(0, filterResponseCount - 1);
mainFrame.setTitle(MessageManager.formatMessage(
{
cmb_filterOption.addItem(new FilterOption("Best Quality",
PDBDocField.OVERALL_QUALITY.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Best UniProt Coverage",
+ cmb_filterOption.addItem(new FilterOption("Most UniProt Coverage",
PDBDocField.UNIPROT_COVERAGE.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Resolution",
+ cmb_filterOption.addItem(new FilterOption("Best Resolution",
PDBDocField.RESOLUTION.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Protein Chain",
+ cmb_filterOption.addItem(new FilterOption("Most Protein Chain",
PDBDocField.PROTEIN_CHAIN_COUNT.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Bound Molecules",
+ cmb_filterOption.addItem(new FilterOption("Most Bound Molecules",
PDBDocField.BOUND_MOLECULE_COUNT.getCode(), VIEWS_FILTER));
- cmb_filterOption.addItem(new FilterOption("Highest Polymer Residues",
+ cmb_filterOption.addItem(new FilterOption("Most Polymer Residues",
PDBDocField.POLYMER_RESIDUE_COUNT.getCode(), VIEWS_FILTER));
}
cmb_filterOption.addItem(new FilterOption("Enter PDB Id", "-",
SequenceI selectedSeq = (SequenceI) tbl_summary.getValueAt(row,
refSeqColIndex);
selectedSeqsToView.add(selectedSeq);
- PDBEntry pdbEntry = selectedSeq.getPDBEntry(pdbIdStr);
+ PDBEntry pdbEntry = selectedSeq.getPDBEntry(pdbIdStr);
+ if (pdbEntry == null)
+ {
+ pdbEntry = getFindEntry(pdbIdStr,
+ selectedSeq.getAllPDBEntries());
+ }
if (pdbEntry == null)
{
pdbEntry = new PDBEntry();
}).start();
}
+ private PDBEntry getFindEntry(String id, Vector<PDBEntry> pdbEntries)
+ {
+ Objects.requireNonNull(id);
+ Objects.requireNonNull(pdbEntries);
+ PDBEntry foundEntry = null;
+ for (PDBEntry entry : pdbEntries)
+ {
+ if (entry.getId().equalsIgnoreCase(id))
+ {
+ return entry;
+ }
+ }
+ return foundEntry;
+ }
+
private void launchStructureViewer(StructureSelectionManager ssm,
final PDBEntry[] pdbEntriesToView,
final AlignmentPanel alignPanel, SequenceI[] sequences)
pdbRequest.setResponseSize(1);
pdbRequest.setFieldToSearchBy("(pdb_id:");
pdbRequest.setWantedFields(wantedFields);
- pdbRequest.setSearchTerm(txt_search.getText() + ")");
+ pdbRequest
+ .setSearchTerm(txt_search.getText().toLowerCase() + ")");
pdbRequest.setAssociatedSequence(selectedSequence);
pdbRestCleint = new PDBRestClient();
PDBRestResponse resultList;