JAL-1821 updated the reference sequence column of structure chooser summary table...
[jalview.git] / src / jalview / gui / StructureChooser.java
index 2cc5079..3db26f3 100644 (file)
@@ -153,7 +153,7 @@ public class StructureChooser extends GStructureChooser
       pdbRequest.setFieldToSearchBy("(text:");
       pdbRequest.setWantedFields(wantedFields);
       pdbRequest.setSearchTerm(buildQuery(seq) + ")");
-      pdbRequest.setAssociatedSequence(seq.getName());
+      pdbRequest.setAssociatedSequence(seq);
       pdbRestCleint = new PDBRestClient();
       PDBRestResponse resultList;
       try
@@ -161,6 +161,7 @@ public class StructureChooser extends GStructureChooser
         resultList = pdbRestCleint.executeRequest(pdbRequest);
       } catch (Exception e)
       {
+        e.printStackTrace();
         errors.add(e.getMessage());
         continue;
       }
@@ -193,7 +194,7 @@ public class StructureChooser extends GStructureChooser
       if (errors.size() > 0)
       {
         StringBuilder errorMsg = new StringBuilder();
-        // "Operation was unsucessful due to the following: \n");
+        // "Operation was unsuccessful due to the following: \n");
         for (String error : errors)
         {
           errorMsg.append(error).append("\n");
@@ -293,7 +294,10 @@ public class StructureChooser extends GStructureChooser
     {
       for (PDBEntry entry : seq.getPDBId())
       {
-        seqRefs.add(entry.getId());
+        if (isValidSeqName(entry.getId()))
+        {
+          seqRefs.add(entry.getId());
+        }
       }
     }
 
@@ -302,7 +306,10 @@ public class StructureChooser extends GStructureChooser
       int count = 0;
       for (DBRefEntry dbRef : seq.getDBRef())
       {
-        seqRefs.add(getDBRefId(dbRef));
+        if (isValidSeqName(getDBRefId(dbRef)))
+        {
+          seqRefs.add(getDBRefId(dbRef));
+        }
         ++count;
         if (count > 10)
         {
@@ -330,14 +337,20 @@ public class StructureChooser extends GStructureChooser
    */
   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;
       }
@@ -380,7 +393,7 @@ public class StructureChooser extends GStructureChooser
                   !chk_invertFilter.isSelected());
           pdbRequest.setSearchTerm(buildQuery(seq) + ")");
           pdbRequest.setWantedFields(wantedFields);
-          pdbRequest.setAssociatedSequence(seq.getName());
+          pdbRequest.setAssociatedSequence(seq);
           pdbRestCleint = new PDBRestClient();
           PDBRestResponse resultList;
           try
@@ -388,6 +401,7 @@ public class StructureChooser extends GStructureChooser
             resultList = pdbRestCleint.executeRequest(pdbRequest);
           } catch (Exception e)
           {
+            e.printStackTrace();
             errors.add(e.getMessage());
             continue;
           }
@@ -663,16 +677,21 @@ public class StructureChooser extends GStructureChooser
     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)
         {
@@ -682,8 +701,10 @@ public class StructureChooser extends GStructureChooser
         }
         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){
       int[] selectedRows = tbl_local_pdb.getSelectedRows();
@@ -746,17 +767,17 @@ public class StructureChooser extends GStructureChooser
 
   private void launchStructureViewer(StructureSelectionManager ssm,
           PDBEntry[] pdbEntriesToView, AlignmentPanel alignPanel,
-          SequenceI[] selectedSequences)
+          SequenceI[] sequences)
   {
     StructureViewer sViewer = new StructureViewer(ssm);
     if (pdbEntriesToView.length > 1)
     {
-      sViewer.viewStructures(alignPanel, pdbEntriesToView,
-              alignPanel.av.collateForPDB(pdbEntriesToView));
+      sViewer.viewStructures(pdbEntriesToView, alignPanel.av.collateForPDB(pdbEntriesToView),
+              alignPanel);
     }
     else
     {
-      sViewer.viewStructures(pdbEntriesToView[0], selectedSequences, null,
+      sViewer.viewStructures(pdbEntriesToView[0], sequences,
               alignPanel);
     }
   }
@@ -820,7 +841,7 @@ public class StructureChooser extends GStructureChooser
       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