tidied client and fixed non-unique msa bug (lead to Hmmer error)
authorjprocter <Jim Procter>
Mon, 22 Aug 2005 15:41:39 +0000 (15:41 +0000)
committerjprocter <Jim Procter>
Mon, 22 Aug 2005 15:41:39 +0000 (15:41 +0000)
src/jalview/ws/JPredClient.java

index 04a6101..65f0325 100755 (executable)
@@ -63,15 +63,17 @@ public class JPredClient
                            title + ") on sequence :\n>" + seq.getName() + "\n" +\r
                            AlignSeq.extractGaps("-. ", seq.getSequence()) +\r
                            "\n");\r
-\r
-    SequenceInfo = jalview.analysis.SeqsetUtils.SeqCharacterHash(seq);\r
+    SequenceI aln[] = new SequenceI[msf.length];\r
+    for (int i=0,j=msf.length; i<j;i++)\r
+      aln[i] = new jalview.datamodel.Sequence(msf[i]);\r
+    SequenceInfo = jalview.analysis.SeqsetUtils.uniquify(aln, true);\r
 \r
     if (!locateWebService())\r
     {\r
       return;\r
     }\r
 \r
-    JPredThread jthread = new JPredThread(msf);\r
+    JPredThread jthread = new JPredThread(aln);\r
     jthread.start();\r
   }\r
 \r
@@ -350,21 +352,24 @@ public class JPredClient
         OutputHeader += ("\n" + result.getAligfile());\r
       }\r
 \r
-      wsInfo.setProgressText(OutputHeader);\r
+      wsInfo.setProgressText(OutputHeader+"Parsing...");\r
 \r
       try\r
       {\r
+        jalview.bin.Jalview.log.debug("Parsing output from JNet job.");\r
         // JPredFile prediction = new JPredFile("C:/JalviewX/files/jpred.txt", "File");\r
         jalview.io.JPredFile prediction = new jalview.io.JPredFile(result.\r
             getPredfile(),\r
             "Paste");\r
         SequenceI[] preds = prediction.getSeqsAsArray();\r
+        jalview.bin.Jalview.log.debug("Got prediction profile.");\r
         Alignment al;\r
         int FirstSeq; // the position of the query sequence in Alignment al\r
         boolean noMsa = true; // set if no MSA has been returned by JPred\r
 \r
         if ( (this.msa != null) && (result.getAligfile() != null))\r
         {\r
+          jalview.bin.Jalview.log.debug("Getting associated alignment.");\r
           // we ignore the returned alignment if we only predicted on a single sequence\r
           String format = jalview.io.IdentifyFile.Identify(result.getAligfile(),\r
               "Paste");\r
@@ -373,6 +378,16 @@ public class JPredClient
           {\r
             al = new Alignment(jalview.io.FormatAdapter.readFile(\r
                 result.getAligfile(), "Paste", format));\r
+            for (int i=0, j=al.getHeight(); i<j; i++) {\r
+              SequenceI sq = al.getSequenceAt(i);\r
+              if (!jalview.analysis.SeqsetUtils.SeqCharacterUnhash(\r
+                  sq, (Hashtable) SequenceInfo.get(sq.getName())))\r
+              {\r
+                throw (new Exception(\r
+                    "Couldn't recover sequence properties for JNet "\r
+                    +((i==0) ? "Query sequence" : "alignment sequence ("+i+")")));\r
+              }\r
+            }\r
             noMsa = false;\r
             FirstSeq = 0;\r
           }\r
@@ -387,14 +402,14 @@ public class JPredClient
         {\r
           al = new Alignment(preds);\r
           FirstSeq = prediction.getQuerySeqPosition();\r
+          if (!jalview.analysis.SeqsetUtils.SeqCharacterUnhash(\r
+              al.getSequenceAt(FirstSeq), SequenceInfo))\r
+          {\r
+            throw (new Exception(\r
+                "Couldn't recover sequence properties for JNet Query sequence!"));\r
+          }\r
         }\r
 \r
-        if (!jalview.analysis.SeqsetUtils.SeqCharacterUnhash(\r
-            al.getSequenceAt(FirstSeq), SequenceInfo))\r
-        {\r
-          throw (new Exception(\r
-              "Couldn't recover sequence properties for JNet Query sequence!"));\r
-        }\r
 \r
         AlignmentAnnotation annot;\r
         Annotation[] annotations = null;\r
@@ -489,6 +504,9 @@ public class JPredClient
           addFloatAnnotations(al, gapmap,  (Vector)scores.get("JNETPROPC"),\r
                               "JnetpropC", "Jnet Coil Propensity", 0f,1f,1);\r
          */\r
+\r
+        wsInfo.setProgressText(OutputHeader);\r
+        jalview.bin.Jalview.log.debug("Finished parsing output.");\r
         AlignFrame af = new AlignFrame(al);\r
 \r
         Desktop.addInternalFrame(af, altitle,\r
@@ -498,7 +516,7 @@ public class JPredClient
       catch (Exception ex)\r
       {\r
         jalview.bin.Jalview.log.warn("Exception whilst parsing JNet style secondary structure prediction.");\r
-        jalview.bin.Jalview.log.debug(ex);\r
+        jalview.bin.Jalview.log.debug("Exception: ",ex);\r
       }\r
     }\r
   }\r