Remove redundancy in Eclipse
[jalview.git] / src / jalview / io / JPredFile.java
index 754b539..cadf153 100755 (executable)
-/**
- * PredFile.java
- * JalviewX / Vamsas Project
- * JPred.seq.concise reader
- */
-package jalview.io;
-
-import jalview.datamodel.*;
-import jalview.util.*;
-
-import java.io.*;
-import java.util.*;
-
-public class JPredFile
-    extends AlignFile
-{
-  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);
-  }
-
-  public void initData()
-  {
-
-    super.initData();
-    Scores = new Hashtable();
-  }
-
-  public JPredFile(String inFile, String type)
-      throws IOException
-  {
-
-    super(inFile, type);
-  }
-
-  /**
-   * parse a JPred concise file into a sequence-alignment like object.
-   */
-
-  public void parse()
-      throws IOException
-  {
-
-    String line;
-
-    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())
-      {
-        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))
-        {
-          int i = 1;
-          while (Scores.containsKey(id + "_" + i))
-          {
-            i++;
-          }
-          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);
-          }
-          Scores.put(id, scores);
-        }
-        catch (Exception e)
-        {
-          // or just keep them as strings
-          i = scores.size();
-          for (int j = 0; j < i; j++)
-          {
-            scores.set(j,
-                       (Object) ( (Float) scores.get(j)).toString());
-          }
-          scores.addElement((Object) ascore);
-          while (symbols.hasMoreTokens()) {
-            {
-              ascore = symbols.nextToken();
-              scores.addElement( (Object) ascore);
-            }
-          }
-          Scores.put(id, scores);
-        }
-      } else
-      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());
-        }
-      }
-      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
-          {
-            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!");
-    }
-    maxLength = seq_entries.elementAt(0).toString().length();
-    for (int i = 0; i < ids.size(); i++)
-    {
-      // Add all sequence like objects
-
-      Sequence newSeq = new Sequence(ids.elementAt(i).toString(),
-                                     seq_entries.elementAt(i).toString(), 1,
-                                     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() + ")");
-      }
-
-      if (maxLength != seq_entries.elementAt(i).toString().length())
-      {
-        throw new IOException("JPredConcise: Entry (" +
-                              ids.elementAt(i).toString()
-                              + ") has an unexpected number of columns");
-      }
-      seqs.addElement(newSeq);
-
-    }
-  }
-
-  /**
-   * print
-   *
-   * @return String
-     */
-
-    public String print()
-    {
-      return "Not Supported";
-    }
-
-    public static void main(String[] args)
-    {
-      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();
-      }
-    }
-  }
-
-  /*
-   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);
-    }
-   }
-
-   }
-   */
+/*\r
+* Jalview - A Sequence Alignment Editor and Viewer\r
+* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+*\r
+* This program is free software; you can redistribute it and/or\r
+* modify it under the terms of the GNU General Public License\r
+* as published by the Free Software Foundation; either version 2\r
+* of the License, or (at your option) any later version.\r
+*\r
+* This program is distributed in the hope that it will be useful,\r
+* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+* GNU General Public License for more details.\r
+*\r
+* You should have received a copy of the GNU General Public License\r
+* along with this program; if not, write to the Free Software\r
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
+*/\r
+\r
+/**\r
+ * PredFile.java\r
+ * JalviewX / Vamsas Project\r
+ * JPred.seq.concise reader\r
+ */\r
+package jalview.io;\r
+\r
+import jalview.datamodel.*;\r
+\r
+import java.io.*;\r
+\r
+import java.util.*;\r
+\r
+\r
+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public class JPredFile extends AlignFile\r
+{\r
+    Vector ids;\r
+    Vector conf;\r
+    Hashtable Scores; // Hash of names and score vectors\r
+    Hashtable Symscores; // indexes of symbol annotation properties in sequenceI vector\r
+    private int QuerySeqPosition;\r
+\r
+    /**\r
+     * Creates a new JPredFile object.\r
+     *\r
+     * @param inStr DOCUMENT ME!\r
+     */\r
+    public JPredFile(String inStr)\r
+    {\r
+        super(inStr);\r
+    }\r
+\r
+    /**\r
+     * Creates a new JPredFile object.\r
+     *\r
+     * @param inFile DOCUMENT ME!\r
+     * @param type DOCUMENT ME!\r
+     *\r
+     * @throws IOException DOCUMENT ME!\r
+     */\r
+    public JPredFile(String inFile, String type) throws IOException\r
+    {\r
+        super(inFile, type);\r
+    }\r
+\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param QuerySeqPosition DOCUMENT ME!\r
+     */\r
+    public void setQuerySeqPosition(int QuerySeqPosition)\r
+    {\r
+        this.QuerySeqPosition = QuerySeqPosition;\r
+    }\r
+\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @return DOCUMENT ME!\r
+     */\r
+    public int getQuerySeqPosition()\r
+    {\r
+        return QuerySeqPosition;\r
+    }\r
+\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @return DOCUMENT ME!\r
+     */\r
+    public Hashtable getScores()\r
+    {\r
+        return Scores;\r
+    }\r
+\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @return DOCUMENT ME!\r
+     */\r
+    public Hashtable getSymscores()\r
+    {\r
+        return Symscores;\r
+    }\r
+\r
+    /**\r
+     * DOCUMENT ME!\r
+     */\r
+    public void initData()\r
+    {\r
+        super.initData();\r
+        Scores = new Hashtable();\r
+        ids = null;\r
+        conf = null;\r
+    }\r
+\r
+    /**\r
+ * parse a JPred concise file into a sequence-alignment like object.\r
+ */\r
+    public void parse() throws IOException\r
+    {\r
+        // JBPNote log.System.out.println("all read in ");\r
+        String line;\r
+        QuerySeqPosition = -1;\r
+        noSeqs = 0;\r
+\r
+        Vector seq_entries = new Vector();\r
+        Vector ids = new Vector();\r
+        Hashtable Symscores = new Hashtable();\r
+\r
+        while ((line = nextLine()) != null)\r
+        {\r
+            // Concise format allows no comments or non comma-formatted data\r
+            StringTokenizer str = new StringTokenizer(line, ":");\r
+            String id = "";\r
+\r
+            if (!str.hasMoreTokens())\r
+            {\r
+                continue;\r
+            }\r
+\r
+            id = str.nextToken();\r
+\r
+            String seqsym = str.nextToken();\r
+            StringTokenizer symbols = new StringTokenizer(seqsym, ",");\r
+\r
+            // decide if we have more than just alphanumeric symbols\r
+            int numSymbols = symbols.countTokens();\r
+\r
+            if (numSymbols == 0)\r
+            {\r
+                continue;\r
+            }\r
+\r
+            if (seqsym.length() != (2 * numSymbols))\r
+            {\r
+                // Set of scalars for some property\r
+                if (Scores.containsKey(id))\r
+                {\r
+                    int i = 1;\r
+\r
+                    while (Scores.containsKey(id + "_" + i))\r
+                    {\r
+                        i++;\r
+                    }\r
+\r
+                    id = id + "_" + i;\r
+                }\r
+\r
+                Vector scores = new Vector();\r
+\r
+                // Typecheck from first entry\r
+                int i = 0;\r
+                String ascore = "dead";\r
+\r
+                try\r
+                {\r
+                    // store elements as floats...\r
+                    while (symbols.hasMoreTokens())\r
+                    {\r
+                        ascore = symbols.nextToken();\r
+\r
+                        Float score = new Float(ascore);\r
+                        scores.addElement((Object) score);\r
+                    }\r
+\r
+                    Scores.put(id, scores);\r
+                }\r
+                catch (Exception e)\r
+                {\r
+                    // or just keep them as strings\r
+                    i = scores.size();\r
+\r
+                    for (int j = 0; j < i; j++)\r
+                    {\r
+                        scores.set(j,\r
+                            (Object) ((Float) scores.get(j)).toString());\r
+                    }\r
+\r
+                    scores.addElement((Object) ascore);\r
+\r
+                    while (symbols.hasMoreTokens())\r
+                    {\r
+                        ascore = symbols.nextToken();\r
+                        scores.addElement((Object) ascore);\r
+                    }\r
+\r
+                    Scores.put(id, scores);\r
+                }\r
+            }\r
+            else if (id.equals("jnetconf"))\r
+            {\r
+                // log.debug System.out.println("here");\r
+                id = "Prediction Confidence";\r
+                this.conf = new Vector(numSymbols);\r
+\r
+                for (int i = 0; i < numSymbols; i++)\r
+                {\r
+                    conf.set(i, (Object) symbols.nextToken());\r
+                }\r
+            }\r
+            else\r
+            {\r
+                // Sequence or a prediction string (rendered as sequence)\r
+                StringBuffer newseq = new StringBuffer();\r
+\r
+                for (int i = 0; i < numSymbols; i++)\r
+                {\r
+                    newseq.append(symbols.nextToken());\r
+                }\r
+\r
+                if (id.indexOf(";") > -1)\r
+                {\r
+                    seq_entries.addElement(newseq);\r
+\r
+                    int i = 1;\r
+                    String name = id.substring(id.indexOf(";") + 1);\r
+\r
+                    while (ids.lastIndexOf(name) > -1)\r
+                    {\r
+                        name = id.substring(id.indexOf(";") + 1) + "_" + ++i;\r
+                    }\r
+\r
+                    ids.addElement(name);\r
+\r
+                    noSeqs++;\r
+                }\r
+                else\r
+                {\r
+                    if (id.equals("JNETPRED"))\r
+                    {\r
+                        id = "Predicted Secondary Structure";\r
+                    }\r
+\r
+                    seq_entries.addElement(newseq.toString());\r
+                    ids.addElement(id);\r
+                    Symscores.put((Object) id,\r
+                        (Object) new Integer(ids.size() - 1));\r
+                }\r
+            }\r
+        }\r
+\r
+        if (noSeqs < 1)\r
+        {\r
+            throw new IOException(\r
+                "JpredFile Parser: No sequence in the prediction!");\r
+        }\r
+\r
+        maxLength = seq_entries.elementAt(0).toString().length();\r
+\r
+        for (int i = 0; i < ids.size(); i++)\r
+        {\r
+            // Add all sequence like objects\r
+            Sequence newSeq = new Sequence(ids.elementAt(i).toString(),\r
+                    seq_entries.elementAt(i).toString(), 1,\r
+                    seq_entries.elementAt(i).toString().length());\r
+\r
+            if (!Symscores.containsKey(ids.elementAt(i)) &&\r
+                    !isValidProteinSequence(newSeq.getSequence()))\r
+            {\r
+                throw new IOException(\r
+                    "JPredConcise: Not a valid protein sequence - (" +\r
+                    ids.elementAt(i).toString() + ")");\r
+            }\r
+\r
+            if (maxLength != seq_entries.elementAt(i).toString().length())\r
+            {\r
+                throw new IOException("JPredConcise: Entry (" +\r
+                    ids.elementAt(i).toString() +\r
+                    ") has an unexpected number of columns");\r
+            }\r
+\r
+            if (newSeq.getName().startsWith("QUERY") &&\r
+                    (QuerySeqPosition == -1))\r
+            {\r
+                QuerySeqPosition = seqs.size();\r
+            }\r
+\r
+            seqs.addElement(newSeq);\r
+        }\r
+    }\r
+\r
+    /**\r
+ * print\r
+ *\r
+ * @return String\r
+   */\r
+    public String print()\r
+    {\r
+        return "Not Supported";\r
+    }\r
+\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param args DOCUMENT ME!\r
+     */\r
+    public static void main(String[] args)\r
+    {\r
+        try\r
+        {\r
+            JPredFile blc = new JPredFile(args[0], "File");\r
+\r
+            for (int i = 0; i < blc.seqs.size(); i++)\r
+            {\r
+                System.out.println(((Sequence) blc.seqs.elementAt(i)).getName() +\r
+                    "\n" + ((Sequence) blc.seqs.elementAt(i)).getSequence() +\r
+                    "\n");\r
+            }\r
+        }\r
+        catch (java.io.IOException e)\r
+        {\r
+            System.err.println("Exception " + e);\r
+            e.printStackTrace();\r
+        }\r
+    }\r
+}\r
+\r
+\r
+/*\r
+ StringBuffer out = new StringBuffer();\r
+\r
+ out.append("START PRED\n");\r
+ for (int i = 0; i < s[0].sequence.length(); i++)\r
+ {\r
+  out.append(s[0].sequence.substring(i, i + 1) + " ");\r
+  out.append(s[1].sequence.substring(i, i + 1) + " ");\r
+  out.append(s[1].score[0].elementAt(i) + " ");\r
+  out.append(s[1].score[1].elementAt(i) + " ");\r
+  out.append(s[1].score[2].elementAt(i) + " ");\r
+  out.append(s[1].score[3].elementAt(i) + " ");\r
+\r
+  out.append("\n");\r
+ }\r
+ out.append("END PRED\n");\r
+ return out.toString();\r
+ }\r
+\r
+    public static void main(String[] args)\r
+ {\r
+  try\r
+  {\r
+    BLCFile blc = new BLCFile(args[0], "File");\r
+    DrawableSequence[] s = new DrawableSequence[blc.seqs.size()];\r
+    for (int i = 0; i < blc.seqs.size(); i++)\r
+    {\r
+      s[i] = new DrawableSequence( (Sequence) blc.seqs.elementAt(i));\r
+    }\r
+    String out = BLCFile.print(s);\r
+\r
+    AlignFrame af = new AlignFrame(null, s);\r
+    af.resize(700, 500);\r
+    af.show();\r
+    System.out.println(out);\r
+  }\r
+  catch (java.io.IOException e)\r
+  {\r
+    System.out.println("Exception " + e);\r
+  }\r
+ }\r
+\r
+ }\r
+ */\r