Merge new frame buttons added
[jalview.git] / src / jalview / io / DasSequenceFeatureFetcher.java
index 1295520..b4dd1f6 100755 (executable)
@@ -40,7 +40,9 @@ import org.biojava.dasobert.das2.DasSourceConverter;
 \r
 \r
 import jalview.bin.Cache;\r
+import org.biojava.dasobert.dasregistry.DasCoordinateSystem;\r
 \r
+import javax.swing.*;\r
 \r
 /**\r
  * DOCUMENT ME!\r
@@ -67,13 +69,76 @@ public class DasSequenceFeatureFetcher implements Runnable
    * @param ap DOCUMENT ME!\r
    */\r
   public DasSequenceFeatureFetcher(SequenceI [] sequences,\r
-                                   AlignFrame af,\r
+                                   final AlignFrame af,\r
                                    Vector selectedSources)\r
   {\r
     this.selectedSources = selectedSources;\r
     this.sequences = sequences;\r
     this.af = af;\r
 \r
+    int uniprotCount = 0;\r
+    for (int i = 0; i < selectedSources.size(); i++)\r
+    {\r
+      DasSource source = (DasSource) selectedSources.elementAt(i);\r
+      DasCoordinateSystem[] coords = source.getCoordinateSystem();\r
+      for (int c = 0; c < coords.length; c++)\r
+      {\r
+        System.out.println(coords[c].getName());\r
+        if (coords[c].getName().indexOf("UniProt")>-1)\r
+        {\r
+          uniprotCount++;\r
+          break;\r
+        }\r
+      }\r
+    }\r
+\r
+    int refCount = 0;\r
+    for(int i=0; i<sequences.length; i++)\r
+    {\r
+      Vector dbref = sequences[i].getDBRef();\r
+      if(dbref!=null)\r
+      {\r
+        for(int j=0; j<dbref.size(); j++)\r
+        {\r
+          DBRefEntry entry = (DBRefEntry)dbref.elementAt(j);\r
+          System.out.println(entry.getSource()\r
+                             +" "+jalview.datamodel.DBRefSource.UNIPROT);\r
+          if(entry.getSource()\r
+             .equals(jalview.datamodel.DBRefSource.UNIPROT))\r
+          {\r
+            System.out.println("got a match");\r
+            refCount++;\r
+            break;\r
+          }\r
+        }\r
+      }\r
+    }\r
+\r
+   System.out.println(refCount+" "+uniprotCount+" "+sequences.length);\r
+    if(refCount<sequences.length && uniprotCount>0)\r
+    {\r
+\r
+     int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,\r
+          "Do you want Jalview to find\n"\r
+         +"Uniprot Accession ids for given sequence names?",\r
+         "Find Uniprot Accession Ids",\r
+         JOptionPane.YES_NO_OPTION,\r
+         JOptionPane.QUESTION_MESSAGE);\r
+\r
+     if(reply == JOptionPane.YES_OPTION)\r
+     {\r
+       new DBRefFetcher(\r
+             af.getViewport().getAlignment(), af).fetchDBRefs(true);\r
+\r
+     }\r
+    }\r
+\r
+   System.out.println("User selection is "\r
+                      +\r
+                       ( ( (float) uniprotCount / (float) selectedSources.size()) * 100)\r
+                      + " % Uniprot,  and "+refCount+" / " +sequences.length+" have uniprot accession");\r
+\r
+\r
     Thread thread = new Thread(this);\r
     thread.start();\r
   }\r
@@ -148,7 +213,8 @@ public class DasSequenceFeatureFetcher implements Runnable
   protected void createFeatureFetcher(final SequenceI seq,\r
                                       final String sourceUrl,\r
                                       String id,\r
-                                      String nickname)  {\r
+                                      String nickname)\r
+  {\r
          //////////////\r
          /// fetch DAS features\r
           final Das1Source source = new Das1Source();\r
@@ -158,13 +224,27 @@ public class DasSequenceFeatureFetcher implements Runnable
 \r
           Cache.log.debug("new Das Feature Fetcher for " + id + " querying " +\r
                           sourceUrl);\r
+\r
           if (id != null && id.length() > 0)\r
           {\r
             setThreadsRunning(+1);\r
 \r
+            int start=seq.getStart(), end = seq.getEnd();\r
+\r
+            if(af.getViewport().getSelectionGroup()!=null)\r
+            {\r
+              SequenceI tmp = af.getViewport().getAlignment().findName(seq.getName());\r
+              start = tmp.findPosition(\r
+              af.getViewport().getSelectionGroup().getStartRes()\r
+                  );\r
+\r
+              end = tmp.findPosition(\r
+                 af.getViewport().getSelectionGroup().getEndRes()\r
+                 );\r
+            }\r
+\r
             FeatureThread fetcher = new FeatureThread(id\r
-               +  ":" + seq.getStart() + "," +seq.getEnd()\r
-                 , source);\r
+               +  ":" + start + "," + end, source);\r
 \r
             fetcher.addFeatureListener(new FeatureListener()\r
             {\r
@@ -338,7 +418,7 @@ public class DasSequenceFeatureFetcher implements Runnable
     DasSourceReaderImpl reader = new DasSourceReaderImpl();\r
 \r
     String registryURL =jalview.bin.Cache.getDefault("DAS_REGISTRY_URL",\r
-        "http://www.spice-3d.org/dasregistry/das1/sources"\r
+        "http://das.sanger.ac.uk/registry/das1/sources/"\r
       );\r
 \r
     try\r