updated jalview version of dasobert 1.53e client and added Das Sequence Source discov...
[jalview.git] / src / jalview / ws / SequenceFetcher.java
index da2dab6..073d448 100644 (file)
@@ -3,6 +3,11 @@ package jalview.ws;
 import java.util.Enumeration;\r
 import java.util.Vector;\r
 \r
+import org.biojava.dasobert.das2.Das2Source;\r
+import org.biojava.dasobert.dasregistry.Das1Source;\r
+import org.biojava.dasobert.dasregistry.DasCoordinateSystem;\r
+import org.biojava.dasobert.dasregistry.DasSource;\r
+\r
 import jalview.datamodel.Alignment;\r
 import jalview.datamodel.AlignmentI;\r
 import jalview.datamodel.DBRefSource;\r
@@ -32,7 +37,8 @@ public class SequenceFetcher extends ASequenceFetcher
     addDBRefSourceImpl(jalview.ws.dbsources.UnprotName.class);\r
     addDBRefSourceImpl(jalview.ws.dbsources.Pdb.class);\r
     addDBRefSourceImpl(jalview.ws.dbsources.Pfam.class);\r
-  };\r
+    registerDasSequenceSources();\r
+  }\r
   /**\r
    * simple run method to test dbsources.\r
    * @param argv\r
@@ -84,12 +90,12 @@ public class SequenceFetcher extends ASequenceFetcher
         continue;\r
       DbSourceProxy sp = sfetcher.getSourceProxy(db);\r
       System.out\r
-              .println("" + db + ": retrieving test:" + sp.getTestQuery());\r
+              .println("Source: "+sp.getDbName()+" (" + db + "): retrieving test:" + sp.getTestQuery());\r
       AlignmentI al = null;\r
       try\r
       {\r
         al = sp.getSequenceRecords(sp.getTestQuery());\r
-        if (al != null && al.getHeight() > 0)\r
+        if (al != null && al.getHeight() > 0 && sp.getDbSourceProperties()!=null)\r
         {\r
           boolean dna = sp.getDbSourceProperties().containsKey(\r
                   DBRefSource.DNACODINGSEQDB)\r
@@ -213,4 +219,54 @@ public class SequenceFetcher extends ASequenceFetcher
 \r
     }\r
   }\r
+  /**\r
+   * query the currently defined DAS source registry for sequence sources and add a DasSequenceSource instance for each source to the SequenceFetcher source list.\r
+   */\r
+  public void registerDasSequenceSources() {\r
+    DasSource[] sources = jalview.ws.DasSequenceFeatureFetcher.getDASSources();\r
+    for (int s=0;s<sources.length; s++)\r
+    {\r
+      Das1Source d1s=null;\r
+      if (sources[s].hasCapability("sequence"))\r
+      {\r
+        if (sources[s] instanceof Das2Source)\r
+        {\r
+          if (((Das2Source)sources[s]).hasDas1Capabilities()) {\r
+            try {\r
+              d1s = org.biojava.dasobert.das2.DasSourceConverter.toDas1Source((Das2Source) sources[s]);\r
+            } catch (Exception e)\r
+            {\r
+              System.err.println("Ignoring DAS2 sequence source "+sources[s].getNickname()+" - couldn't map to Das1Source.\n");\r
+              e.printStackTrace();\r
+            }\r
+          }\r
+        } else {\r
+          if (sources[s] instanceof Das1Source)\r
+          { \r
+            d1s = (Das1Source) sources[s];\r
+          }\r
+        }\r
+      }\r
+      if (d1s!=null)\r
+      {\r
+        DasCoordinateSystem[] css = d1s.getCoordinateSystem();\r
+        for (int c=0;c<css.length;c++)\r
+        {\r
+          try {\r
+            addDbRefSourceImpl(\r
+                    new jalview.ws.dbsources.DasSequenceSource("das:"+d1s.getNickname()+" ("+css[c].getName()+")",\r
+                            css[c].getName(),d1s, css[c]));\r
+          } catch (Exception e)\r
+          {\r
+            System.err.println("Ignoring sequence coord system "+c+" ("+\r
+                    css[c].getName()+") for source "+d1s.getNickname()\r
+                    + "- threw exception when constructing fetcher.\n");\r
+            e.printStackTrace();\r
+          }\r
+        }\r
+      }\r
+          \r
+    }\r
+  }\r
+\r
 }\r