X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureChooser.java;h=13fa46007c49762ee27fb5b9c588251eceef5a18;hb=0d74306f282be2d15eeb5d8de53a949c0124a0a5;hp=10d3a9d74e318939359695b010962f947953f75d;hpb=f6cf71697dde4b4cdc4dcc8941e30fb5c71a5a41;p=jalview.git diff --git a/src/jalview/gui/StructureChooser.java b/src/jalview/gui/StructureChooser.java index 10d3a9d..13fa460 100644 --- a/src/jalview/gui/StructureChooser.java +++ b/src/jalview/gui/StructureChooser.java @@ -35,6 +35,7 @@ import jalview.fts.service.pdb.PDBFTSRestClient; 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; @@ -44,6 +45,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,8 +149,8 @@ public class StructureChooser extends GStructureChooser implements { long startTime = System.currentTimeMillis(); pdbRestCleint = PDBFTSRestClient.getInstance(); - Collection wantedFields = pdbRestCleint - .getAllDefaulDisplayedDataColumns(); + Collection wantedFields = pdbDocFieldPrefs + .getStructureSummaryFields(); discoveredStructuresSet = new LinkedHashSet(); HashSet errors = new HashSet(); @@ -185,7 +187,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(); @@ -247,7 +250,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) { @@ -255,9 +258,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()); @@ -273,21 +275,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; } @@ -330,17 +329,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+", "+"); } @@ -396,8 +395,8 @@ public class StructureChooser extends GStructureChooser implements long startTime = System.currentTimeMillis(); pdbRestCleint = PDBFTSRestClient.getInstance(); lbl_loading.setVisible(true); - Collection wantedFields = pdbRestCleint - .getAllDefaulDisplayedDataColumns(); + Collection wantedFields = pdbDocFieldPrefs + .getStructureSummaryFields(); Collection filteredResponse = new HashSet(); HashSet errors = new HashSet(); @@ -406,7 +405,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("("); @@ -454,15 +452,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)); } @@ -529,8 +530,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", @@ -591,7 +590,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); } @@ -729,19 +728,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); @@ -802,9 +803,13 @@ public class StructureChooser extends GStructureChooser implements pdbEntry = new PDBEntry(); if (pdbIdStr.split(":").length > 1) { - pdbEntry.setChainCode(pdbIdStr.split(":")[1]); + pdbEntry.setId(pdbIdStr.split(":")[0]); + pdbEntry.setChainCode(pdbIdStr.split(":")[1].toUpperCase()); + } + else + { + pdbEntry.setId(pdbIdStr); } - pdbEntry.setId(pdbIdStr); pdbEntry.setType(PDBEntry.Type.PDB); selectedSequence.getDatasetSequence().addPDBId(pdbEntry); } @@ -829,7 +834,7 @@ public class StructureChooser extends GStructureChooser implements launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap, new SequenceI[] { selectedSequence }); } - mainFrame.dispose(); + closeAction(); } }).start(); } @@ -853,42 +858,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) + { + 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) { - ssm.setProgressBar(null); - ssm.setProgressBar("Fetching Database refs.."); - new jalview.ws.DBRefFetcher(sequences, null, null, null, false) - .fetchDBRefs(true); - break; + 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); + } } /** @@ -949,7 +970,7 @@ public class StructureChooser extends GStructureChooser implements { String searchTerm = txt_search.getText().toLowerCase(); searchTerm = searchTerm.split(":")[0]; - System.out.println(">>>>> search term : " + searchTerm); + // System.out.println(">>>>> search term : " + searchTerm); List wantedFields = new ArrayList(); FTSRestRequest pdbRequest = new FTSRestRequest(); pdbRequest.setAllowEmptySeq(false);