X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureChooser.java;h=64717958d08a3d1edf90dc0fd3413be7ef8b7a4c;hb=f4c55ce8e067fc6ae84a6ae614cebed6c88a81f0;hp=2d9028a4620f695bd8ee0225d446aa77e519e79d;hpb=64dd25185d2caf389946bb7e70053183d5aa31a6;p=jalview.git diff --git a/src/jalview/gui/StructureChooser.java b/src/jalview/gui/StructureChooser.java index 2d9028a..6471795 100644 --- a/src/jalview/gui/StructureChooser.java +++ b/src/jalview/gui/StructureChooser.java @@ -29,13 +29,13 @@ 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.jbgui.GStructureChooser; import jalview.structure.StructureSelectionManager; import jalview.util.MessageManager; +import jalview.ws.DBRefFetcher; import jalview.ws.sifts.SiftsSettings; import java.awt.event.ItemEvent; @@ -147,8 +147,9 @@ public class StructureChooser extends GStructureChooser implements public void fetchStructuresMetaData() { long startTime = System.currentTimeMillis(); - Collection wantedFields = FTSDataColumnPreferences - .getStructureSummaryFields(); + pdbRestCleint = PDBFTSRestClient.getInstance(); + Collection wantedFields = pdbRestCleint + .getAllDefaulDisplayedDataColumns(); discoveredStructuresSet = new LinkedHashSet(); HashSet errors = new HashSet(); @@ -161,7 +162,6 @@ public class StructureChooser extends GStructureChooser implements pdbRequest.setWantedFields(wantedFields); pdbRequest.setSearchTerm(buildQuery(seq) + ")"); pdbRequest.setAssociatedSequence(seq); - pdbRestCleint = PDBFTSRestClient.getInstance(); FTSRestResponse resultList; try { @@ -331,8 +331,8 @@ 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 @@ -341,7 +341,7 @@ public class StructureChooser extends GStructureChooser implements { Objects.requireNonNull(seqName); return seqName.replaceAll("\\[\\d*\\]", "") - .replaceAll("[^\\dA-Za-z|]", "").replaceAll("\\s+", "+"); + .replaceAll("[^\\dA-Za-z|_]", "").replaceAll("\\s+", "+"); } @@ -395,9 +395,10 @@ public class StructureChooser extends GStructureChooser implements public void run() { long startTime = System.currentTimeMillis(); + pdbRestCleint = PDBFTSRestClient.getInstance(); lbl_loading.setVisible(true); - Collection wantedFields = FTSDataColumnPreferences - .getStructureSummaryFields(); + Collection wantedFields = pdbRestCleint + .getAllDefaulDisplayedDataColumns(); Collection filteredResponse = new HashSet(); HashSet errors = new HashSet(); @@ -428,7 +429,6 @@ public class StructureChooser extends GStructureChooser implements pdbRequest.setWantedFields(wantedFields); pdbRequest.setAssociatedSequence(seq); } - pdbRestCleint = PDBFTSRestClient.getInstance(); FTSRestResponse resultList; try { @@ -732,17 +732,17 @@ public class StructureChooser extends GStructureChooser implements { int pdbIdColIndex = tbl_summary.getColumn("PDB Id") .getModelIndex(); - int refSeqColIndex = tbl_summary.getColumn("Ref Sequence") + int refSeqColIndex = tbl_summary.getColumn("Ref Sequence") .getModelIndex(); - int[] selectedRows = tbl_summary.getSelectedRows(); + int[] selectedRows = tbl_summary.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 = tbl_summary.getValueAt(row, pdbIdColIndex) .toString(); - SequenceI selectedSeq = (SequenceI) tbl_summary.getValueAt(row, + SequenceI selectedSeq = (SequenceI) tbl_summary.getValueAt(row, refSeqColIndex); selectedSeqsToView.add(selectedSeq); PDBEntry pdbEntry = selectedSeq.getPDBEntry(pdbIdStr); @@ -801,6 +801,10 @@ public class StructureChooser extends GStructureChooser implements if (pdbEntry == null) { pdbEntry = new PDBEntry(); + if (pdbIdStr.split(":").length > 1) + { + pdbEntry.setChainCode(pdbIdStr.split(":")[1]); + } pdbEntry.setId(pdbIdStr); pdbEntry.setType(PDBEntry.Type.PDB); selectedSequence.getDatasetSequence().addPDBId(pdbEntry); @@ -855,37 +859,76 @@ public class StructureChooser extends GStructureChooser implements if (SiftsSettings.isMapWithSifts()) { + ArrayList seqsWithoutSourceDBRef = new ArrayList(); for (SequenceI seq : sequences) { if (seq.getSourceDBRef() == null) { - ssm.setProgressBar(null); - ssm.setProgressBar("Fetching Database refs.."); - new jalview.ws.DBRefFetcher(sequences, null, null, null, false) - .fetchDBRefs(true); - break; + if (seq.getDBRefs() == null) + { + seqsWithoutSourceDBRef.add(seq); + continue; + } + for (DBRefEntry dbRef : seq.getDBRefs()) + { + if (dbRef.getSource().equalsIgnoreCase("uniprot")) + { + seq.setSourceDBRef(dbRef); + break; + } + } + for (DBRefEntry dbRef : seq.getDBRefs()) + { + if (dbRef.getSource().equalsIgnoreCase("pdb")) + { + seq.setSourceDBRef(dbRef); + break; + } + } + if (seq.getSourceDBRef() == null) + { + seqsWithoutSourceDBRef.add(seq); + } } } - } - if (pdbEntriesToView.length > 1) + if (!seqsWithoutSourceDBRef.isEmpty()) + { + int y = seqsWithoutSourceDBRef.size(); + ssm.setProgressBar(null); + ssm.setProgressBar(">>>>> Fetching Database refs for " + y + + " sequence" + (y > 1 ? "s" : "") + + " with no valid uniprot or pdb ref for SIFTS mapping"); + System.out.println(">>>>> Fetching Database refs for " + y + + " sequence" + (y > 1 ? "s" : "") + + " with no valid uniprot or pdb ref for SIFTS mapping"); + SequenceI[] seqWithoutSrcDBRef = new SequenceI[y]; + int x = 0; + for (SequenceI fSeq : seqsWithoutSourceDBRef) { - ArrayList seqsMap = new ArrayList(); - for (SequenceI seq : sequences) - { - seqsMap.add(new SequenceI[] { seq }); - } - SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]); + 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]); ssm.setProgressBar(null); ssm.setProgressBar("Fetching PDB Structures for selected entries.."); - sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel); - } - else - { + sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel); + } + else + { ssm.setProgressBar(null); ssm.setProgressBar("Fetching PDB Structure for " + pdbEntriesToView[0].getId()); - sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel); - } + sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel); + } } /** @@ -944,6 +987,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 +997,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());