*experimental use of picr* apply gpl development license
authorjprocter <Jim Procter>
Mon, 8 Jun 2009 11:20:50 +0000 (11:20 +0000)
committerjprocter <Jim Procter>
Mon, 8 Jun 2009 11:20:50 +0000 (11:20 +0000)
src/jalview/ws/DBRefFetcher.java

index 825b0f9..5400d4e 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
  */\r
 package jalview.ws;\r
 \r
-import java.io.*;\r
-import java.util.*;\r
+import jalview.analysis.AlignSeq;\r
+import jalview.datamodel.AlignmentI;\r
+import jalview.datamodel.DBRefEntry;\r
+import jalview.datamodel.DBRefSource;\r
+import jalview.datamodel.Mapping;\r
+import jalview.datamodel.SequenceFeature;\r
+import jalview.datamodel.SequenceI;\r
+import jalview.gui.AlignFrame;\r
+import jalview.gui.CutAndPasteTransfer;\r
+import jalview.gui.Desktop;\r
+import jalview.gui.IProgressIndicator;\r
+import jalview.gui.OOMWarning;\r
+\r
+import java.util.Enumeration;\r
+import java.util.Hashtable;\r
+import java.util.StringTokenizer;\r
+import java.util.Vector;\r
 \r
 import org.biojava.dasobert.dasregistry.DasSource;\r
-import org.exolab.castor.mapping.*;\r
-import org.exolab.castor.xml.*;\r
-import jalview.analysis.*;\r
-import jalview.datamodel.*;\r
-import jalview.datamodel.Mapping;\r
-import jalview.gui.*;\r
-import jalview.ws.dbsources.Uniprot;\r
-import jalview.ws.ebi.EBIFetchClient;\r
+\r
+import uk.ac.ebi.picr.model.UPEntry;\r
 \r
 /**\r
  * Implements a runnable for validating a sequence against external databases\r
@@ -49,6 +58,10 @@ public class DBRefFetcher implements Runnable
   StringBuffer sbuffer = new StringBuffer();\r
 \r
   boolean running = false;\r
+  /**\r
+   * picr client instance\r
+   */\r
+  uk.ac.ebi.www.picr.AccessionMappingService.AccessionMapperInterface picrClient = null;\r
 \r
   // /This will be a collection of Vectors of sequenceI refs.\r
   // The key will be the seq name or accession id of the seq\r
@@ -237,9 +250,16 @@ public class DBRefFetcher implements Runnable
     {\r
       throw new Error("Implementation error. Must initialise dbSources");\r
     }\r
+    running = true;\r
     long startTime = System.currentTimeMillis();\r
     af.setProgressBar("Fetching db refs", startTime);\r
-    running = true;\r
+    try {\r
+      picrClient = new uk.ac.ebi.www.picr.AccessionMappingService.AccessionMapperServiceLocator().getAccessionMapperPort(); \r
+    } catch (Exception e)\r
+    {\r
+      System.err.println("Couldn't locate PICR service instance.\n");\r
+      e.printStackTrace();\r
+    }\r
     int db = 0;\r
     Vector sdataset = new Vector();\r
     for (int s = 0; s < dataset.length; s++)\r
@@ -350,8 +370,27 @@ public class DBRefFetcher implements Runnable
               while (st.hasMoreTokens())\r
               {\r
                 String token = st.nextToken();\r
-                addSeqId(sequence, token);\r
-                queries.addElement(token.toUpperCase());\r
+                UPEntry[] presp = null;\r
+                try {\r
+                  presp=picrClient.getUPIForAccession(token, null, picrClient.getMappedDatabaseNames(), null, true);\r
+                } catch (Exception e) {\r
+                  System.err.println("Exception with Picr for '"+token+"'\n");\r
+                  e.printStackTrace();\r
+                }\r
+                if (presp!=null && presp.length>0)\r
+                {\r
+                  for (int id=0;id<presp.length; id++)\r
+                  {\r
+                    // construct sequences from response if sequences are present, and do a transferReferences\r
+                    // otherwise transfer non sequence x-references directly.\r
+                  }\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
+                }\r
               }\r
             }\r
           }\r