reinstated blind querying of datasources. Transfer references to alignment from Map...
authorjprocter <Jim Procter>
Fri, 12 Jun 2009 15:46:22 +0000 (15:46 +0000)
committerjprocter <Jim Procter>
Fri, 12 Jun 2009 15:46:22 +0000 (15:46 +0000)
src/jalview/ws/DBRefFetcher.java

index 5400d4e..4b7c07e 100644 (file)
@@ -31,6 +31,7 @@ import jalview.gui.Desktop;
 import jalview.gui.IProgressIndicator;\r
 import jalview.gui.OOMWarning;\r
 \r
+import java.lang.reflect.Array;\r
 import java.util.Enumeration;\r
 import java.util.Hashtable;\r
 import java.util.StringTokenizer;\r
@@ -384,12 +385,14 @@ public class DBRefFetcher implements Runnable
                     // construct sequences from response if sequences are present, and do a transferReferences\r
                     // otherwise transfer non sequence x-references directly.\r
                   }\r
+                  System.out.println("Validated ID against PICR... (for what its worth):"+token);\r
                   addSeqId(sequence, token);\r
                   queries.addElement(token.toUpperCase());\r
                 } else {\r
-                  System.out.println("Not querying source with token="+token+"\n");\r
-                  //addSeqId(sequence, token);\r
-                  //queries.addElement(token.toUpperCase());\r
+                  //if ()\r
+                  //System.out.println("Not querying source with token="+token+"\n");\r
+                  addSeqId(sequence, token);\r
+                  queries.addElement(token.toUpperCase());\r
                 }\r
               }\r
             }\r
@@ -433,7 +436,7 @@ public class DBRefFetcher implements Runnable
     {\r
       return;\r
     }\r
-    SequenceI[] retrieved = retrievedAl.getSequencesArray();\r
+    SequenceI[] retrieved = recoverDbSequences(retrievedAl.getSequencesArray());\r
     SequenceI sequence = null;\r
 \r
     // Vector entries = new Uniprot().getUniprotEntries(file);\r
@@ -600,4 +603,34 @@ public class DBRefFetcher implements Runnable
       }\r
     }\r
   }\r
+\r
+  /**\r
+   * loop thru and collect additional sequences in Map.\r
+   * @param sequencesArray\r
+   * @return\r
+   */\r
+  private SequenceI[] recoverDbSequences(SequenceI[] sequencesArray)\r
+  {\r
+    Vector nseq = new Vector();\r
+    for (int i=0;sequencesArray!=null && i<sequencesArray.length;i++)\r
+    {\r
+      nseq.addElement(sequencesArray[i]);\r
+      DBRefEntry dbr[] = sequencesArray[i].getDBRef();\r
+      jalview.datamodel.Mapping map = null;\r
+      for (int r=0;(dbr!=null) && r<dbr.length; r++) {\r
+        if ((map=dbr[r].getMap())!=null)\r
+        {\r
+          if (!nseq.contains(map.getTo()))\r
+          {\r
+            nseq.addElement(map.getTo());\r
+          }\r
+        }\r
+      }\r
+    }\r
+    if (nseq.size()>0) {\r
+      sequencesArray = new SequenceI[nseq.size()];\r
+      nseq.toArray(sequencesArray);\r
+    }\r
+    return sequencesArray;\r
+  }\r
 }\r