fix crossRef retrieval so either protein OR nucleotide
authorjprocter <Jim Procter>
Wed, 25 Jul 2007 17:17:56 +0000 (17:17 +0000)
committerjprocter <Jim Procter>
Wed, 25 Jul 2007 17:17:56 +0000 (17:17 +0000)
src/jalview/analysis/CrossRef.java

index 9e69ca4..9e99c7c 100644 (file)
@@ -196,7 +196,7 @@ public class CrossRef
   {\r
     Vector rseqs = new Vector();\r
     Alignment ral = null;\r
-    AlignedCodonFrame cf=new AlignedCodonFrame(dataset.getWidth()); // nominal width\r
+    AlignedCodonFrame cf=new AlignedCodonFrame(0); // nominal width\r
     for (int s = 0; s < seqs.length; s++)\r
     {\r
       SequenceI dss = seqs[s];\r
@@ -210,6 +210,7 @@ public class CrossRef
       {\r
         System.out.println("Attempting to find ds Xrefs refs.");\r
         DBRefEntry[] lrfs = CrossRef.findXDbRefs(!dna, seqs[s].getDBRef()); // less ambiguous would be a 'find primary dbRefEntry' method.\r
+        // filter for desired source xref here\r
         found = CrossRef.searchDatasetXrefs(dss, !dna, lrfs, dataset, rseqs, cf);\r
       }\r
       for (int r = 0; xrfs!=null && r < xrfs.length; r++)\r
@@ -244,6 +245,8 @@ public class CrossRef
           if (dataset != null)\r
           {\r
             found = searchDataset(dss, xrfs[r], dataset, rseqs, cf);\r
+            if (found)\r
+              xrfs[r] = null; // we've recovered seqs for this one.\r
           }\r
         }\r
       }\r
@@ -262,8 +265,8 @@ public class CrossRef
           for (int r = 0; r < xrfs.length; r++)\r
           {\r
             // filter out any irrelevant or irretrievable references\r
-            if ((source != null && !source.equals(xrfs[r].getSource()))\r
-                    || !sftch.isFetchable(xrfs[r].getSource()))\r
+            if (xrfs[r]==null || ((source != null && !source.equals(xrfs[r].getSource()))\r
+                    || !sftch.isFetchable(xrfs[r].getSource())))\r
             {\r
               l--;\r
               xrfs[r] = null;\r
@@ -347,10 +350,9 @@ public class CrossRef
    * \r
    * @param sequenceI\r
    * @param xrf\r
-   * @param dna\r
    * @param dataset\r
    * @param rseqs\r
-   * @param cf \r
+   * @param cf\r
    * @return true if sequences were found and added\r
    */\r
   public static boolean searchDataset(SequenceI sequenceI, DBRefEntry xrf,\r
@@ -422,10 +424,10 @@ public class CrossRef
                 }\r
               }\r
             }\r
+            // TODO: add mapping between sequences if necessary\r
+            found = true;\r
           }\r
           \r
-          // TODO: add mapping between sequences if necessary\r
-          found = true;\r
         }\r
       }\r
     }\r