Allow for uniprot in name
[jalview.git] / src / jalview / io / SequenceFeatureFetcher.java
index a70aaef..d980b0a 100755 (executable)
@@ -48,8 +48,12 @@ public class SequenceFeatureFetcher implements Runnable
   ArrayList unknownSequences;\r
   CutAndPasteTransfer output = new CutAndPasteTransfer();\r
   StringBuffer sbuffer = new StringBuffer();\r
+  boolean uniprotFlag = false;\r
 \r
-  Vector getUniprotEntries(File file)\r
+  public SequenceFeatureFetcher()\r
+  {}\r
+\r
+  public Vector getUniprotEntries(File file)\r
   {\r
 \r
     UniprotFile uni = new UniprotFile();\r
@@ -108,11 +112,14 @@ public class SequenceFeatureFetcher implements Runnable
         for (int i = 0; (seqIndex < sequences.size()) && (i < 50);\r
              seqIndex++, i++)\r
         {\r
-          SequenceI sequence = (SequenceI) sequences.get(seqIndex);\r
-          if(!ids.contains(sequence.getShortName()))\r
+          Sequence sequence = (Sequence) sequences.get(seqIndex);\r
+          if(sequence.getSequenceFeatures()==null)\r
           {\r
-            ids.add(sequence.getShortName());\r
-            unknownSequences.add(sequence);\r
+            if (!ids.contains(sequence.getName()))\r
+            {\r
+              ids.add(sequence.getName());\r
+              unknownSequences.add(sequence);\r
+            }\r
           }\r
         }\r
 \r
@@ -123,11 +130,17 @@ public class SequenceFeatureFetcher implements Runnable
           StringBuffer remainingIds = new StringBuffer("uniprot:");\r
           for (int i = 0; i < ids.size(); i++)\r
            {\r
+             if(ids.get(i).toString().indexOf("|")>-1)\r
+             {\r
+               remainingIds.append(ids.get(i).toString().substring(\r
+                   ids.get(i).toString().lastIndexOf("|") + 1));\r
+               uniprotFlag = true;\r
+             }\r
              remainingIds.append(ids.get(i) + ";");\r
            }\r
           EBIFetchClient ebi = new EBIFetchClient();\r
           File file = ebi.fetchDataAsFile(remainingIds.toString(),\r
-                                          "xml", null);\r
+                                          "xml", "raw");\r
 \r
 \r
 \r
@@ -176,8 +189,6 @@ public class SequenceFeatureFetcher implements Runnable
         if(reply == javax.swing.JOptionPane.YES_OPTION)\r
          new WSWUBlastClient(ap, align, unknownSequences);\r
       }\r
-      else\r
-         ((Alignment)dataset).featuresAdded = true;\r
 \r
 \r
     ap.repaint();\r
@@ -205,22 +216,30 @@ public class SequenceFeatureFetcher implements Runnable
     {\r
       entry = (UniprotEntry) entries.elementAt(i);\r
       String idmatch = entry.getAccession().elementAt(0).toString();\r
-      sequence = dataset.findShortName(idmatch);\r
+      sequence = dataset.findName(idmatch);\r
 \r
       if (sequence == null)\r
       {\r
         //Sequence maybe Name, not Accession\r
-        idmatch = entry.getName().elementAt(0).toString();;\r
-        sequence = dataset.findShortName(idmatch);\r
+        idmatch = entry.getName().elementAt(0).toString();\r
+        sequence = dataset.findName(idmatch);\r
       }\r
 \r
-      if (sequence == null)\r
+      if(sequence!=null)\r
+        ids.remove(sequence.getName());\r
+\r
+      else  if (sequence == null && uniprotFlag)\r
+      {\r
+          sequence = dataset.findName("UniProt/Swiss-Prot|"+entry.getAccession().elementAt(0)+"|"+idmatch);\r
+          ids.remove(idmatch);\r
+      }\r
+\r
+      if(sequence ==null)\r
       {\r
         System.out.println(idmatch+" not found");\r
         continue;\r
       }\r
 \r
-      ids.remove(sequence.getName());\r
       unknownSequences.remove(sequence);\r
 \r
       String nonGapped = AlignSeq.extractGaps("-. ", sequence.getSequence());\r