basic implementation of profile display and todos
[jalview.git] / src / jalview / analysis / CrossRef.java
index 8bc844b..d7a3175 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)\r
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)\r
+ * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
  * \r
  * This program is free software; you can redistribute it and/or\r
  * modify it under the terms of the GNU General Public License\r
@@ -104,36 +104,41 @@ public class CrossRef
     Vector refs = new Vector();\r
     for (int s = 0; s < seqs.length; s++)\r
     {\r
-      SequenceI dss = seqs[s];\r
-      while (dss.getDatasetSequence() != null)\r
+      if (seqs[s] != null)\r
       {\r
-        dss = dss.getDatasetSequence();\r
-      }\r
-      DBRefEntry[] rfs = findXDbRefs(dna, dss.getDBRef());\r
-      for (int r = 0; rfs != null && r < rfs.length; r++)\r
-      {\r
-        if (!refs.contains(rfs[r].getSource()))\r
+\r
+        SequenceI dss = seqs[s];\r
+        while (dss.getDatasetSequence() != null)\r
         {\r
-          refs.addElement(rfs[r].getSource());\r
+          dss = dss.getDatasetSequence();\r
         }\r
-      }\r
-      if (dataset != null)\r
-      {\r
-        // search for references to this sequence's direct references.\r
-        DBRefEntry[] lrfs = CrossRef.findXDbRefs(!dna, seqs[s].getDBRef());\r
-        Vector rseqs = new Vector();\r
-        CrossRef.searchDatasetXrefs(seqs[s], !dna, lrfs, dataset, rseqs,\r
-                null); // don't need to specify codon frame for mapping here\r
-        Enumeration lr = rseqs.elements();\r
-        while (lr.hasMoreElements())\r
+        DBRefEntry[] rfs = findXDbRefs(dna, dss.getDBRef());\r
+        for (int r = 0; rfs != null && r < rfs.length; r++)\r
         {\r
-          SequenceI rs = (SequenceI) lr.nextElement();\r
-          DBRefEntry[] xrs = findXDbRefs(dna, rs.getDBRef());\r
-          for (int r = 0; rfs != null && r < rfs.length; r++)\r
+          if (!refs.contains(rfs[r].getSource()))\r
           {\r
-            if (!refs.contains(rfs[r].getSource()))\r
+            refs.addElement(rfs[r].getSource());\r
+          }\r
+        }\r
+        if (dataset != null)\r
+        {\r
+          // search for references to this sequence's direct references.\r
+          DBRefEntry[] lrfs = CrossRef\r
+                  .findXDbRefs(!dna, seqs[s].getDBRef());\r
+          Vector rseqs = new Vector();\r
+          CrossRef.searchDatasetXrefs(seqs[s], !dna, lrfs, dataset, rseqs,\r
+                  null); // don't need to specify codon frame for mapping here\r
+          Enumeration lr = rseqs.elements();\r
+          while (lr.hasMoreElements())\r
+          {\r
+            SequenceI rs = (SequenceI) lr.nextElement();\r
+            DBRefEntry[] xrs = findXDbRefs(dna, rs.getDBRef());\r
+            for (int r = 0; rfs != null && r < rfs.length; r++)\r
             {\r
-              refs.addElement(rfs[r].getSource());\r
+              if (!refs.contains(rfs[r].getSource()))\r
+              {\r
+                refs.addElement(rfs[r].getSource());\r
+              }\r
             }\r
           }\r
         }\r
@@ -281,7 +286,7 @@ public class CrossRef
           // xrefs on this sequence.\r
           if (dataset != null)\r
           {\r
-            found |= searchDataset(dss, xrfs[r], dataset, rseqs, cf);\r
+            found |= searchDataset(dss, xrfs[r], dataset, rseqs, cf); // ,false,!dna);\r
             if (found)\r
               xrfs[r] = null; // we've recovered seqs for this one.\r
           }\r
@@ -326,9 +331,9 @@ public class CrossRef
             try\r
             {\r
               retrieved = sftch.getSequences(xrfs); // problem here is we don't\r
-                                                    // know which of xrfs\r
-                                                    // resulted in which\r
-                                                    // retrieved element\r
+              // know which of xrfs\r
+              // resulted in which\r
+              // retrieved element\r
             } catch (Exception e)\r
             {\r
               System.err\r
@@ -507,16 +512,16 @@ public class CrossRef
           }\r
 \r
           // look for direct or indirect references in common\r
-          DBRefEntry[] poss = null, cands = null;\r
+          DBRefEntry[] poss = nxt.getDBRef(), cands = null;\r
           if (direct)\r
           {\r
-            cands = jalview.util.DBRefUtils.searchRefs(poss = nxt\r
-                    .getDBRef(), xrf);\r
+            cands = jalview.util.DBRefUtils.searchRefs(poss , xrf);\r
           }\r
           else\r
           {\r
-            cands = jalview.util.DBRefUtils.searchRefs(poss = CrossRef\r
-                    .findXDbRefs(dna, nxt.getDBRef()), xrf);\r
+            poss = CrossRef\r
+            .findXDbRefs(dna, poss); // \r
+            cands = jalview.util.DBRefUtils.searchRefs(poss, xrf);\r
           }\r
           if (cands != null)\r
           {\r