Tooltips for features, links for features added
[jalview.git] / src / jalview / io / SequenceFeatureFetcher.java
index d980b0a..9bc214f 100755 (executable)
@@ -65,16 +65,19 @@ public class SequenceFeatureFetcher implements Runnable
       map.loadMapping(url);\r
 \r
       // 2. Unmarshal the data\r
-      Unmarshaller unmar = new Unmarshaller();\r
+      Unmarshaller unmar = new Unmarshaller(uni);\r
       unmar.setIgnoreExtraElements(true);\r
       unmar.setMapping(map);\r
-      uni = (UniprotFile) unmar.unmarshal(new FileReader(file));\r
+   //   unmar.setDebug(true);\r
 \r
+      uni = (UniprotFile) unmar.unmarshal(new FileReader(file));\r
     }\r
     catch (Exception e)\r
     {\r
       System.out.println("Error getUniprotEntries() "+e);\r
     }\r
+\r
+\r
     return uni.getUniprotEntries();\r
   }\r
 \r
@@ -113,8 +116,14 @@ public class SequenceFeatureFetcher implements Runnable
              seqIndex++, i++)\r
         {\r
           Sequence sequence = (Sequence) sequences.get(seqIndex);\r
-          if(sequence.getSequenceFeatures()==null)\r
+          Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(), new String[] { "Uniprot"});\r
+          if (uprefs!=null)\r
           {\r
+            // we know the id for this entry, so don't note its ID in the unknownSequences list\r
+            for (int j=0,k=uprefs.size(); j<k; j++)\r
+              ids.add(((DBRefEntry) uprefs.get(j)).getAccessionId());\r
+            unknownSequences.add(sequence);\r
+          } else {\r
             if (!ids.contains(sequence.getName()))\r
             {\r
               ids.add(sequence.getName());\r
@@ -180,14 +189,19 @@ public class SequenceFeatureFetcher implements Runnable
      // will not return any value from the OptionPane to the expired thread.\r
       if (unknownSequences.size() > 0)\r
       {\r
-        int reply = javax.swing.JOptionPane.showConfirmDialog(\r
-            Desktop.desktop, "Couldn't find a match for "+unknownSequences.size()+" sequences."\r
-                +"\nPerform blast for unknown sequences?",\r
-                    "Blast for Unidentified Sequences",\r
-                     javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE);\r
-\r
-        if(reply == javax.swing.JOptionPane.YES_OPTION)\r
-         new WSWUBlastClient(ap, align, unknownSequences);\r
+       // int reply = javax.swing.JOptionPane.showConfirmDialog(\r
+       //     Desktop.desktop, "Couldn't find a match for "+unknownSequences.size()+" sequences."\r
+        //        +"\nPerform blast for unknown sequences?",\r
+        //            "Blast for Unidentified Sequences",\r
+        //             javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE);\r
+     javax.swing.JOptionPane.showMessageDialog(\r
+    Desktop.desktop, "Couldn't find a match for "+unknownSequences.size()+" sequences.",\r
+            "Unidentified Sequences",\r
+             javax.swing.JOptionPane.WARNING_MESSAGE);\r
+\r
+\r
+      //  if(reply == javax.swing.JOptionPane.YES_OPTION)\r
+     //    new WSWUBlastClient(ap, align, unknownSequences);\r
       }\r
 \r
 \r
@@ -240,7 +254,6 @@ public class SequenceFeatureFetcher implements Runnable
         continue;\r
       }\r
 \r
-      unknownSequences.remove(sequence);\r
 \r
       String nonGapped = AlignSeq.extractGaps("-. ", sequence.getSequence());\r
 \r
@@ -253,7 +266,6 @@ public class SequenceFeatureFetcher implements Runnable
         absStart = nonGapped.toString().indexOf(entry.getUniprotSequence().getContent());\r
         if(absStart == -1)\r
         {\r
-          unknownSequences.add(sequence.getName());\r
           sbuffer.append(sequence.getName() +\r
                          " SEQUENCE NOT %100 MATCH \n");\r
 \r
@@ -261,6 +273,7 @@ public class SequenceFeatureFetcher implements Runnable
         }\r
         else\r
         {\r
+\r
           if(entry.getFeature()!=null)\r
           {\r
             Enumeration e = entry.getFeature().elements();\r
@@ -280,6 +293,8 @@ public class SequenceFeatureFetcher implements Runnable
 \r
       }\r
 \r
+      unknownSequences.remove(sequence);\r
+\r
       int absEnd = absStart + nonGapped.toString().length();\r
       absStart += 1;\r
 \r
@@ -295,7 +310,15 @@ public class SequenceFeatureFetcher implements Runnable
       }\r
 \r
       sequence.setPDBId(onlyPdbEntries);\r
-      sequence.setSequenceFeatures(entry.getFeature());\r
+      if (entry.getFeature()!=null) {\r
+        e = entry.getFeature().elements();\r
+        while (e.hasMoreElements())\r
+        {\r
+          SequenceFeature sf = (SequenceFeature) e.nextElement();\r
+          sf.setFeatureGroup("Uniprot");\r
+          sequence.addSequenceFeature( sf );\r
+        }\r
+      }\r
       sequence.setStart(absStart);\r
       sequence.setEnd(absEnd);\r
 \r