X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureChooser.java;h=3581cf93c085c2abbd0f002a859b57f4a6695716;hb=02e38bb826828ab2991584cf4b737c0138cb6c44;hp=2d9028a4620f695bd8ee0225d446aa77e519e79d;hpb=64dd25185d2caf389946bb7e70053183d5aa31a6;p=jalview.git diff --git a/src/jalview/gui/StructureChooser.java b/src/jalview/gui/StructureChooser.java index 2d9028a..3581cf9 100644 --- a/src/jalview/gui/StructureChooser.java +++ b/src/jalview/gui/StructureChooser.java @@ -29,13 +29,14 @@ import jalview.datamodel.SequenceI; import jalview.fts.api.FTSData; import jalview.fts.api.FTSDataColumnI; import jalview.fts.api.FTSRestClientI; -import jalview.fts.core.FTSDataColumnPreferences; import jalview.fts.core.FTSRestRequest; import jalview.fts.core.FTSRestResponse; import jalview.fts.service.pdb.PDBFTSRestClient; +import jalview.io.DataSourceType; import jalview.jbgui.GStructureChooser; import jalview.structure.StructureSelectionManager; import jalview.util.MessageManager; +import jalview.ws.DBRefFetcher; import jalview.ws.sifts.SiftsSettings; import java.awt.event.ItemEvent; @@ -45,6 +46,7 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.Vector; import javax.swing.JCheckBox; @@ -147,7 +149,8 @@ public class StructureChooser extends GStructureChooser implements public void fetchStructuresMetaData() { long startTime = System.currentTimeMillis(); - Collection wantedFields = FTSDataColumnPreferences + pdbRestCleint = PDBFTSRestClient.getInstance(); + Collection wantedFields = pdbDocFieldPrefs .getStructureSummaryFields(); discoveredStructuresSet = new LinkedHashSet(); @@ -161,7 +164,6 @@ public class StructureChooser extends GStructureChooser implements pdbRequest.setWantedFields(wantedFields); pdbRequest.setSearchTerm(buildQuery(seq) + ")"); pdbRequest.setAssociatedSequence(seq); - pdbRestCleint = PDBFTSRestClient.getInstance(); FTSRestResponse resultList; try { @@ -186,7 +188,8 @@ public class StructureChooser extends GStructureChooser implements if (discoveredStructuresSet != null && !discoveredStructuresSet.isEmpty()) { - tbl_summary.setModel(FTSRestResponse.getTableModel(lastPdbRequest, + getResultTable().setModel( + FTSRestResponse.getTableModel(lastPdbRequest, discoveredStructuresSet)); structuresDiscovered = true; noOfStructuresFound = discoveredStructuresSet.size(); @@ -248,7 +251,7 @@ public class StructureChooser extends GStructureChooser implements boolean isPDBRefsFound = false; boolean isUniProtRefsFound = false; StringBuilder queryBuilder = new StringBuilder(); - HashSet seqRefs = new LinkedHashSet(); + Set seqRefs = new LinkedHashSet(); if (seq.getAllPDBEntries() != null) { @@ -256,9 +259,8 @@ public class StructureChooser extends GStructureChooser implements { if (isValidSeqName(entry.getId())) { - queryBuilder.append("pdb_id") - .append(":") -.append(entry.getId().toLowerCase()) + queryBuilder.append("pdb_id:") + .append(entry.getId().toLowerCase()) .append(" OR "); isPDBRefsFound = true; // seqRefs.add(entry.getId()); @@ -274,21 +276,18 @@ public class StructureChooser extends GStructureChooser implements { if (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT)) { - queryBuilder -.append("uniprot_accession").append(":") + queryBuilder.append("uniprot_accession:") .append(getDBRefId(dbRef)) .append(" OR "); - queryBuilder -.append("uniprot_id") - .append(":") - .append(getDBRefId(dbRef)).append(" OR "); + queryBuilder.append("uniprot_id:").append(getDBRefId(dbRef)) + .append(" OR "); isUniProtRefsFound = true; } else if (dbRef.getSource().equalsIgnoreCase(DBRefSource.PDB)) { - queryBuilder.append("pdb_id") - .append(":").append(getDBRefId(dbRef).toLowerCase()) + queryBuilder.append("pdb_id:") + .append(getDBRefId(dbRef).toLowerCase()) .append(" OR "); isPDBRefsFound = true; } @@ -331,17 +330,17 @@ public class StructureChooser extends GStructureChooser implements } /** - * Remove the following special characters from input string +, -, &, |, !, (, - * ), {, }, [, ], ^, ", ~, *, ?, :, \ + * Remove the following special characters from input string +, -, &, !, (, ), + * {, }, [, ], ^, ", ~, *, ?, :, \ * * @param seqName * @return */ - private static String sanitizeSeqName(String seqName) + static String sanitizeSeqName(String seqName) { Objects.requireNonNull(seqName); return seqName.replaceAll("\\[\\d*\\]", "") - .replaceAll("[^\\dA-Za-z|]", "").replaceAll("\\s+", "+"); + .replaceAll("[^\\dA-Za-z|_]", "").replaceAll("\\s+", "+"); } @@ -395,8 +394,9 @@ public class StructureChooser extends GStructureChooser implements public void run() { long startTime = System.currentTimeMillis(); + pdbRestCleint = PDBFTSRestClient.getInstance(); lbl_loading.setVisible(true); - Collection wantedFields = FTSDataColumnPreferences + Collection wantedFields = pdbDocFieldPrefs .getStructureSummaryFields(); Collection filteredResponse = new HashSet(); HashSet errors = new HashSet(); @@ -406,7 +406,6 @@ public class StructureChooser extends GStructureChooser implements FTSRestRequest pdbRequest = new FTSRestRequest(); if (fieldToFilterBy.equalsIgnoreCase("uniprot_coverage")) { - System.out.println(">>>>>> Filtering with uniprot coverate"); pdbRequest.setAllowEmptySeq(false); pdbRequest.setResponseSize(1); pdbRequest.setFieldToSearchBy("("); @@ -428,7 +427,6 @@ public class StructureChooser extends GStructureChooser implements pdbRequest.setWantedFields(wantedFields); pdbRequest.setAssociatedSequence(seq); } - pdbRestCleint = PDBFTSRestClient.getInstance(); FTSRestResponse resultList; try { @@ -455,15 +453,18 @@ public class StructureChooser extends GStructureChooser implements Collection reorderedStructuresSet = new LinkedHashSet(); reorderedStructuresSet.addAll(filteredResponse); reorderedStructuresSet.addAll(discoveredStructuresSet); - tbl_summary.setModel(FTSRestResponse.getTableModel( + getResultTable().setModel( + FTSRestResponse.getTableModel( lastPdbRequest, reorderedStructuresSet)); - FTSRestResponse.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); + FTSRestResponse.configureTableColumn(getResultTable(), + wantedFields, tempUserPrefs); + getResultTable().getColumn("Ref Sequence").setPreferredWidth(120); + getResultTable().getColumn("Ref Sequence").setMinWidth(100); + getResultTable().getColumn("Ref Sequence").setMaxWidth(200); // Update table selection model here - tbl_summary.addRowSelectionInterval(0, filterResponseCount - 1); + getResultTable().addRowSelectionInterval(0, + filterResponseCount - 1); mainFrame.setTitle(MessageManager.formatMessage( "label.structure_chooser_filter_time", totalTime)); } @@ -530,8 +531,6 @@ public class StructureChooser extends GStructureChooser implements { cmb_filterOption.addItem(new FilterOption("Best Quality", "overall_quality", VIEWS_FILTER)); - cmb_filterOption.addItem(new FilterOption("Most UniProt Coverage", - "uniprot_coverage", VIEWS_FILTER)); cmb_filterOption.addItem(new FilterOption("Best Resolution", "resolution", VIEWS_FILTER)); cmb_filterOption.addItem(new FilterOption("Most Protein Chain", @@ -592,7 +591,7 @@ public class StructureChooser extends GStructureChooser implements String currentView = selectedFilterOpt.getView(); if (currentView == VIEWS_FILTER) { - if (tbl_summary.getSelectedRows().length > 0) + if (getResultTable().getSelectedRows().length > 0) { btn_view.setEnabled(true); } @@ -730,19 +729,21 @@ public class StructureChooser extends GStructureChooser implements String currentView = selectedFilterOpt.getView(); if (currentView == VIEWS_FILTER) { - int pdbIdColIndex = tbl_summary.getColumn("PDB Id") + int pdbIdColIndex = getResultTable().getColumn("PDB Id") .getModelIndex(); - int refSeqColIndex = tbl_summary.getColumn("Ref Sequence") + int refSeqColIndex = getResultTable().getColumn("Ref Sequence") .getModelIndex(); - int[] selectedRows = tbl_summary.getSelectedRows(); + int[] selectedRows = getResultTable().getSelectedRows(); PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length]; int count = 0; ArrayList selectedSeqsToView = new ArrayList(); for (int row : selectedRows) { - String pdbIdStr = tbl_summary.getValueAt(row, pdbIdColIndex) + String pdbIdStr = getResultTable().getValueAt(row, + pdbIdColIndex) .toString(); - SequenceI selectedSeq = (SequenceI) tbl_summary.getValueAt(row, + SequenceI selectedSeq = (SequenceI) getResultTable() + .getValueAt(row, refSeqColIndex); selectedSeqsToView.add(selectedSeq); PDBEntry pdbEntry = selectedSeq.getPDBEntry(pdbIdStr); @@ -801,7 +802,15 @@ public class StructureChooser extends GStructureChooser implements if (pdbEntry == null) { pdbEntry = new PDBEntry(); - pdbEntry.setId(pdbIdStr); + if (pdbIdStr.split(":").length > 1) + { + pdbEntry.setId(pdbIdStr.split(":")[0]); + pdbEntry.setChainCode(pdbIdStr.split(":")[1].toUpperCase()); + } + else + { + pdbEntry.setId(pdbIdStr); + } pdbEntry.setType(PDBEntry.Type.PDB); selectedSequence.getDatasetSequence().addPDBId(pdbEntry); } @@ -820,13 +829,13 @@ public class StructureChooser extends GStructureChooser implements } PDBEntry fileEntry = new AssociatePdbFileWithSeq() .associatePdbWithSeq(selectedPdbFileName, - jalview.io.AppletFormatAdapter.FILE, + DataSourceType.FILE, selectedSequence, true, Desktop.instance); launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap, new SequenceI[] { selectedSequence }); } - mainFrame.dispose(); + closeAction(); } }).start(); } @@ -850,42 +859,58 @@ public class StructureChooser extends GStructureChooser implements final PDBEntry[] pdbEntriesToView, final AlignmentPanel alignPanel, SequenceI[] sequences) { - ssm.setProgressBar("Launching PDB structure viewer.."); + ssm.setProgressBar(MessageManager + .getString("status.launching_3d_structure_viewer")); final StructureViewer sViewer = new StructureViewer(ssm); if (SiftsSettings.isMapWithSifts()) { + ArrayList seqsWithoutSourceDBRef = new ArrayList(); for (SequenceI seq : sequences) { - if (seq.getSourceDBRef() == null) + if (seq.getSourceDBRef() == null && seq.getDBRefs() == null) { - ssm.setProgressBar(null); - ssm.setProgressBar("Fetching Database refs.."); - new jalview.ws.DBRefFetcher(sequences, null, null, null, false) - .fetchDBRefs(true); - break; + seqsWithoutSourceDBRef.add(seq); + continue; + } + } + if (!seqsWithoutSourceDBRef.isEmpty()) + { + int y = seqsWithoutSourceDBRef.size(); + ssm.setProgressBar(null); + ssm.setProgressBar(MessageManager.formatMessage( + "status.fetching_dbrefs_for_sequences_without_valid_refs", + y)); + SequenceI[] seqWithoutSrcDBRef = new SequenceI[y]; + int x = 0; + for (SequenceI fSeq : seqsWithoutSourceDBRef) + { + seqWithoutSrcDBRef[x++] = fSeq; } + new DBRefFetcher(seqWithoutSrcDBRef).fetchDBRefs(true); } } - if (pdbEntriesToView.length > 1) - { - ArrayList seqsMap = new ArrayList(); - for (SequenceI seq : sequences) - { - seqsMap.add(new SequenceI[] { seq }); - } - SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]); + if (pdbEntriesToView.length > 1) + { + ArrayList seqsMap = new ArrayList(); + for (SequenceI seq : sequences) + { + seqsMap.add(new SequenceI[] { seq }); + } + SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]); ssm.setProgressBar(null); - ssm.setProgressBar("Fetching PDB Structures for selected entries.."); - sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel); - } - else - { + ssm.setProgressBar(MessageManager + .getString("status.fetching_3d_structures_for_selected_entries")); + sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel); + } + else + { ssm.setProgressBar(null); - ssm.setProgressBar("Fetching PDB Structure for " - + pdbEntriesToView[0].getId()); - sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel); - } + ssm.setProgressBar(MessageManager.formatMessage( + "status.fetching_3d_structures_for", + pdbEntriesToView[0].getId())); + sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel); + } } /** @@ -944,6 +969,9 @@ public class StructureChooser extends GStructureChooser implements isValidPBDEntry = false; if (txt_search.getText().length() > 0) { + String searchTerm = txt_search.getText().toLowerCase(); + searchTerm = searchTerm.split(":")[0]; + // System.out.println(">>>>> search term : " + searchTerm); List wantedFields = new ArrayList(); FTSRestRequest pdbRequest = new FTSRestRequest(); pdbRequest.setAllowEmptySeq(false); @@ -951,7 +979,7 @@ public class StructureChooser extends GStructureChooser implements pdbRequest.setFieldToSearchBy("(pdb_id:"); pdbRequest.setWantedFields(wantedFields); pdbRequest - .setSearchTerm(txt_search.getText().toLowerCase() + ")"); +.setSearchTerm(searchTerm + ")"); pdbRequest.setAssociatedSequence(selectedSequence); pdbRestCleint = PDBFTSRestClient.getInstance(); wantedFields.add(pdbRestCleint.getPrimaryKeyColumn());