Towards an auto dbref fetcher
authoramwaterhouse <Andrew Waterhouse>
Mon, 17 Jul 2006 10:02:34 +0000 (10:02 +0000)
committeramwaterhouse <Andrew Waterhouse>
Mon, 17 Jul 2006 10:02:34 +0000 (10:02 +0000)
src/jalview/gui/DasSourceBrowser.java
src/jalview/gui/FeatureSettings.java
src/jalview/io/DBRefFetcher.java
src/jalview/io/DasSequenceFeatureFetcher.java

index bacb383..065fcdf 100755 (executable)
@@ -44,7 +44,7 @@ public class DasSourceBrowser extends GDasSourceBrowser
   public DasSourceBrowser()\r
   {\r
     registryURL.setText(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
     setSelectedFromProperties();\r
 \r
@@ -300,8 +300,6 @@ public class DasSourceBrowser extends GDasSourceBrowser
     authority.addElement("Any");\r
     type.addElement("Any");\r
     label.addElement("Any");\r
-    label.addElement("NOT IMPLEMENTED YET");\r
-    filter3.setEnabled(false);\r
 \r
     for (int i = 0; i < sources.length; i++)\r
     {\r
index b720008..ad9ad1d 100755 (executable)
@@ -558,28 +558,34 @@ public class FeatureSettings extends JPanel
   {\r
     Vector selectedSources = dassourceBrowser.getSelectedSources();\r
 \r
-    int uniprotCount = 0;\r
-    for(int i=0; i<selectedSources.size(); i++)\r
+    SequenceI [] dataset, seqs ;\r
+    int iSize;\r
+\r
+    if(af.getViewport().getSelectionGroup()!=null\r
+      && af.getViewport().getSelectionGroup().getSize(false)>0)\r
     {\r
-     DasSource source = (DasSource)selectedSources.elementAt(i);\r
-     DasCoordinateSystem [] coords = source.getCoordinateSystem();\r
-     for(int c=0; c<coords.length; c++)\r
-     {\r
-       if (coords[c].getName().equalsIgnoreCase("UniProt"))\r
-       {\r
-         uniprotCount++;\r
-         break;\r
-       }\r
-     }\r
+      iSize = af.getViewport().getSelectionGroup().getSize(false);\r
+      dataset = new SequenceI[iSize];\r
+      seqs = af.getViewport().getSelectionGroup().\r
+          getSequencesInOrder(\r
+              af.getViewport().getAlignment());\r
+    }\r
+    else\r
+    {\r
+       iSize = af.getViewport().getAlignment().getHeight();\r
+       seqs = af.getViewport().getAlignment().getSequencesArray();\r
     }\r
 \r
-    System.out.println("User selection is "\r
-                       + (((float)uniprotCount/(float)selectedSources.size())*100)\r
-                       +" % Uniprot");\r
+    dataset = new SequenceI[iSize];\r
+    for (int i = 0; i < iSize; i++)\r
+    {\r
+      dataset[i] = seqs[i].getDatasetSequence();\r
+    }\r
 \r
-   new jalview.io.DasSequenceFeatureFetcher(af.getViewport().getAlignment(),\r
-                                             af,\r
-                                            selectedSources);\r
+    new jalview.io.DasSequenceFeatureFetcher(\r
+        dataset,\r
+        af,\r
+        selectedSources);\r
 \r
     af.getViewport().setShowSequenceFeatures(true);\r
     af.showSeqFeatures.setSelected(true);\r
index c11910b..4488d02 100644 (file)
@@ -48,6 +48,7 @@ public class DBRefFetcher implements Runnable
   CutAndPasteTransfer output = new CutAndPasteTransfer();\r
   StringBuffer sbuffer = new StringBuffer();\r
   boolean uniprotFlag = false;\r
+  boolean running = false;\r
 \r
   public DBRefFetcher()\r
   {}\r
@@ -91,9 +92,25 @@ public class DBRefFetcher implements Runnable
     unknownSequences = new ArrayList();\r
     this.align = align;\r
     this.dataset = align.getDataset();\r
+  }\r
 \r
+  public boolean fetchDBRefs(boolean waitTillFinished)\r
+  {\r
     Thread thread = new Thread(this);\r
     thread.start();\r
+    running = true;\r
+\r
+    if(waitTillFinished)\r
+    {\r
+      while(running)\r
+      {\r
+        try{\r
+          Thread.sleep(500);\r
+        }catch(Exception ex){}\r
+      }\r
+    }\r
+\r
+    return true;\r
   }\r
 \r
   /**\r
@@ -103,6 +120,7 @@ public class DBRefFetcher implements Runnable
   {\r
     long startTime = System.currentTimeMillis();\r
     af.setProgressBar("Fetching db refs", startTime);\r
+    running = true;\r
 \r
     try\r
     {\r
@@ -187,6 +205,8 @@ public class DBRefFetcher implements Runnable
     af.setProgressBar("DBRef search completed", startTime);\r
    // promptBeforeBlast();\r
 \r
+   running = false;\r
+\r
   }\r
 \r
 \r
index 1295520..70af276 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,73 @@ 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
+        if (coords[c].getName().equalsIgnoreCase("UniProt"))\r
+        {\r
+          uniprotCount++;\r
+          break;\r
+        }\r
+      }\r
+    }\r
+\r
+    int refCount = 0;\r
+    for(int i=0; i<sequences.length; i++)\r
+    {\r
+      if(sequences[i].getDBRef()!=null)\r
+      {\r
+        for(int j=0; j<sequences[i].getDBRef().size(); j++)\r
+        {\r
+          System.out.println(sequences[i].getDBRef().elementAt(j)\r
+                             +" "+jalview.datamodel.DBRefSource.UNIPROT);\r
+          if(sequences[i].getDBRef().elementAt(j)\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
@@ -338,7 +400,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