partial implementation of JNet server prediction.
authorjprocter <Jim Procter>
Mon, 28 Feb 2005 10:45:52 +0000 (10:45 +0000)
committerjprocter <Jim Procter>
Mon, 28 Feb 2005 10:45:52 +0000 (10:45 +0000)
build.xml
src/jalview/io/JPredFile.java

index c10f726..be92845 100755 (executable)
--- a/build.xml
+++ b/build.xml
 
     <path id="build.classpath">
       <fileset dir="utils">
+        <include name="*.jar"/>
         <include name="**/*.jar"/>
       </fileset>
       <fileset dir="${libDir}">
+        <include name="*.jar"/>      
         <include name="**/*.jar"/>
       </fileset>
     </path>
     </delete>
   </target>
   
-  <target name="prepare" depends="clean">
+  <target name="prepare" depends="init">
     <mkdir dir="${outputDir}"/>
     <copy todir="${outputDir}">
       <fileset dir=".">
+
         <include name="${docDir}/**/*.*"/>
         <include name="${helpDir}/**/*.*"/>
-        <include name="${libDir}"/>
+        <include name="${libDir}/*.*"/>
       </fileset>
       <fileset dir="${resourceDir}">
         <include name="**/*.*"/>
     </copy>
   </target>
 
-  <target name="build" depends="init, prepare">
+  <target name="build" depends="prepare">
             <!-- not efficient yet. -->
      <javac srcdir="${sourceDir}" destdir="${outputDir}"
         classpathref="build.classpath" />
   </target>
-
+  <target name="runenv" depends="init">
+      <path id="run.classpath">
+        <pathelement location="${outputDir}"/>
+        <fileset dir="${outputDir}">
+        <include name="${libDir}/*.jar"/>
+      </fileset>
+    </path>
+    <pathconvert targetos="unix" refid="run.classpath" property="run.classpath"/>
+    
+    <echo>java -classpath ${run.classpath} jalview.bin.Jalview
+    </echo>
+</target>
   
 
   <target name="package" depends="init, build">
index cc8fb56..9ecb54a 100755 (executable)
@@ -17,7 +17,7 @@ public class JPredFile
   Vector ids;
   Vector conf;
   Hashtable Scores; // Hash of names and score vectors
-
+  Hashtable Symscores; // indexes of symbol annotation properties in sequenceI vector
   public JPredFile(String inStr)
   {
     super(inStr);
@@ -50,109 +50,118 @@ public class JPredFile
     noSeqs = 0;
     Vector seq_entries = new Vector();
     Vector ids = new Vector();
-
+    Hashtable Symscores = new Hashtable();
     while ( (line = nextLine()) != null)
     {
       // Concise format allows no comments or non comma-formatted data
       StringTokenizer str = new StringTokenizer(line, ":");
       String id = "";
       String seq = "";
-      if (str.hasMoreTokens())
+      if (!str.hasMoreTokens())
       {
-        id = str.nextToken();
-        String seqsym = str.nextToken();
-        StringTokenizer symbols = new StringTokenizer(seqsym, ",");
-        // decide if we have more than just alphanumeric symbols
-        int numSymbols = symbols.countTokens();
-        if (seq.length() != (2 * numSymbols))
+        continue;
+      }
+
+      id = str.nextToken();
+      String seqsym = str.nextToken();
+      StringTokenizer symbols = new StringTokenizer(seqsym, ",");
+      // decide if we have more than just alphanumeric symbols
+      int numSymbols = symbols.countTokens();
+
+      if (numSymbols==0) {
+        continue;
+      }
+
+      if (seqsym.length() != (2 * numSymbols))
+      {
+        // Set of scalars for some property
+        if (Scores.containsKey(id))
         {
-          // Set of scalars for some property
-          if (Scores.containsKey(id))
+          int i = 1;
+          while (Scores.containsKey(id + "_" + i))
           {
-            int i = 1;
-            while (Scores.containsKey(id + "_" + i))
-            {
-              i++;
-            }
-            id = id + "_" + i;
+            i++;
           }
-          Vector scores = new Vector(numSymbols);
-          // Typecheck from first entry
-          int i = 0;
-          String ascore = symbols.nextToken();
-          try
-          {
-            // store elements as floats...
-            do
-            {
-              Float score = new Float(ascore);
-              scores.set(i, (Object) score);
-              ascore = symbols.nextToken();
-            }
-            while (++i < numSymbols);
+          id = id + "_" + i;
+        }
+        Vector scores = new Vector();
+        // Typecheck from first entry
+        int i = 0;
+        String ascore="dead";
+        try
+        {
+          // store elements as floats...
+          while (symbols.hasMoreTokens()) {
+            ascore = symbols.nextToken();
+            Float score = new Float(ascore);
+            scores.addElement( (Object) score);
           }
-          catch (Exception e)
+        }
+        catch (Exception e)
+        {
+          // or just keep them as strings
+          i = scores.size();
+          for (int j = 0; j < i; j++)
           {
-            // or just keep them as strings
-            for (int j = 0; j < i; j++)
-            {
-              scores.set(j,
-                         (Object)
-                         ( (Float) scores.get(j)).toString());
-            }
-            do
+            scores.set(j,
+                       (Object) ( (Float) scores.get(j)).toString());
+          }
+          scores.addElement((Object) ascore);
+          while (symbols.hasMoreTokens()) {
             {
-              scores.set(i, ascore);
               ascore = symbols.nextToken();
+              scores.addElement( (Object) ascore);
             }
-            while (++i < numSymbols);
           }
           Scores.put(id, scores);
         }
-        else
+      } else
+      if (id.equals("jnetconf"))
+      {
+        id = "Prediction Confidence";
+        this.conf = new Vector(numSymbols);
+        for (int i = 0; i < numSymbols; i++)
         {
-          if (id.equals("jnetconf"))
-          {
-            id = "Prediction Confidence";
-            this.conf = new Vector(numSymbols);
-            for (int i = 0; i < numSymbols; i++)
-            {
-              conf.set(i, (Object) symbols.nextToken());
+          conf.set(i, (Object) symbols.nextToken());
+        }
+      }
+      else
+        {
+          // Sequence or a prediction string (rendered as sequence)
+          
+          StringBuffer newseq = new StringBuffer();
+          
+          for (int i = 0; i < numSymbols; i++) {
+            newseq.append(symbols.nextToken());
+          }
+          
+          if (id.indexOf(";") > -1) {
+            seq_entries.addElement(newseq);
+            int i=1;
+            String name = id.substring(id.indexOf(";")+1);
+            while (ids.lastIndexOf(name)>-1) {
+              name = id.substring(id.indexOf(";")+1)+"_"+1;
             }
+            ids.addElement(name);
+            noSeqs++;
           }
           else
           {
-            // Sequence or a prediction string (rendered as sequence)
-
-            StringBuffer newseq = new StringBuffer();
-            for (int i = 0; i < numSymbols; i++)
-            {
-              newseq.append(symbols.nextToken());
-            }
-            if (id.indexOf(";") > -1)
-            {
-              seq_entries.addElement(newseq);
-              ids.addElement(id.substring(id.indexOf(";")));
-              noSeqs++;
-            }
-            else
-            {
-              if (id.equals("JNETPRED"))
-              {
-                id = "Predicted Secondary Structure";
-              }
-              seq_entries.addElement(newseq);
-              ids.addElement(id);
+            if (id.equals("JNETPRED")) {
+              id = "Predicted Secondary Structure";
             }
+            seq_entries.addElement( newseq.toString() );
+            ids.addElement(id);
+            Symscores.put((Object) id, (Object) new Integer(ids.size()-1));
           }
-        }
-
       }
     }
 
+
     if (noSeqs < 1)
     {
-      throw new IOException("JpredFile Parser: No sequence in the prediction!");
+      throw new IOException(
+      "JpredFile Parser: No sequence in the prediction!");
     }
     maxLength = seq_entries.elementAt(0).toString().length();
     for (int i = 0; i < ids.size(); i++)
@@ -161,11 +170,14 @@ public class JPredFile
 
       Sequence newSeq = new Sequence(ids.elementAt(i).toString(),
                                      seq_entries.elementAt(i).toString(), 1,
-                                     seq_entries.elementAt(i).toString().length());
-      if (!isValidProteinSequence(newSeq.getSequence()))
+                                     seq_entries.elementAt(i).toString().
+                                     length());
+      if (!Symscores.containsKey(ids.elementAt(i))
+          && !isValidProteinSequence(newSeq.getSequence()))
       {
-        throw new IOException("JPredConcise: Not a valid protein sequence - ("
-                              + ids.elementAt(i).toString() + ")");
+        throw new IOException(
+      "JPredConcise: Not a valid protein sequence - ("
+      + ids.elementAt(i).toString() + ")");
       }
 
       if (maxLength != seq_entries.elementAt(i).toString().length())
@@ -183,54 +195,75 @@ public class JPredFile
    * print
    *
    * @return String
-   */
+     */
 
-  public String print()
-  {
-    return "Not Supported";
-  }
-}
-/*
-StringBuffer out = new StringBuffer();
-
-out.append("START PRED\n");
-for (int i = 0; i < s[0].sequence.length(); i++)
-{
-  out.append(s[0].sequence.substring(i, i + 1) + " ");
-  out.append(s[1].sequence.substring(i, i + 1) + " ");
-  out.append(s[1].score[0].elementAt(i) + " ");
-  out.append(s[1].score[1].elementAt(i) + " ");
-  out.append(s[1].score[2].elementAt(i) + " ");
-  out.append(s[1].score[3].elementAt(i) + " ");
-
-  out.append("\n");
-}
-out.append("END PRED\n");
-return out.toString();
-}
+    public String print()
+    {
+      return "Not Supported";
+    }
 
     public static void main(String[] args)
-{
-  try
-  {
-    BLCFile blc = new BLCFile(args[0], "File");
-    DrawableSequence[] s = new DrawableSequence[blc.seqs.size()];
-    for (int i = 0; i < blc.seqs.size(); i++)
     {
-      s[i] = new DrawableSequence( (Sequence) blc.seqs.elementAt(i));
+      try
+      {
+        JPredFile blc = new JPredFile(args[0], "File");
+        for (int i = 0; i < blc.seqs.size(); i++)
+        {
+          System.out.println( ( (Sequence) blc.seqs.elementAt(i)).getName()
+                             + "\n" +
+                             ( (Sequence) blc.seqs.elementAt(i)).getSequence()
+                             + "\n");
+        }
+      }
+      catch (java.io.IOException e)
+      {
+        System.out.println("Exception " + e);
+        e.printStackTrace();
+      }
     }
-    String out = BLCFile.print(s);
-
-    AlignFrame af = new AlignFrame(null, s);
-    af.resize(700, 500);
-    af.show();
-    System.out.println(out);
-  }
-  catch (java.io.IOException e)
-  {
-    System.out.println("Exception " + e);
   }
-}
 
-}
-*/
+  /*
+   StringBuffer out = new StringBuffer();
+
+   out.append("START PRED\n");
+   for (int i = 0; i < s[0].sequence.length(); i++)
+   {
+    out.append(s[0].sequence.substring(i, i + 1) + " ");
+    out.append(s[1].sequence.substring(i, i + 1) + " ");
+    out.append(s[1].score[0].elementAt(i) + " ");
+    out.append(s[1].score[1].elementAt(i) + " ");
+    out.append(s[1].score[2].elementAt(i) + " ");
+    out.append(s[1].score[3].elementAt(i) + " ");
+
+    out.append("\n");
+   }
+   out.append("END PRED\n");
+   return out.toString();
+   }
+
+      public static void main(String[] args)
+   {
+    try
+    {
+      BLCFile blc = new BLCFile(args[0], "File");
+      DrawableSequence[] s = new DrawableSequence[blc.seqs.size()];
+      for (int i = 0; i < blc.seqs.size(); i++)
+      {
+        s[i] = new DrawableSequence( (Sequence) blc.seqs.elementAt(i));
+      }
+      String out = BLCFile.print(s);
+
+      AlignFrame af = new AlignFrame(null, s);
+      af.resize(700, 500);
+      af.show();
+      System.out.println(out);
+    }
+    catch (java.io.IOException e)
+    {
+      System.out.println("Exception " + e);
+    }
+   }
+
+   }
+   */