added unofficial support for concise output parsing from the JNet server to extract...
[jalview.git] / src / jalview / io / JPredFile.java
index 901c204..0ee41b8 100755 (executable)
@@ -1,37 +1,34 @@
-/*
-* Jalview - A Sequence Alignment Editor and Viewer
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+/*\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
-/**
- * PredFile.java
- * JalviewX / Vamsas Project
- * JPred.seq.concise reader
+/**\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 jalview.util.*;\r
-\r
 import java.io.*;\r
-\r
 import java.util.*;\r
 \r
+import jalview.datamodel.*;\r
+\r
 \r
 /**\r
  * DOCUMENT ME!\r
@@ -121,8 +118,8 @@ public class JPredFile extends AlignFile
         conf = null;\r
     }\r
 \r
-    /**
- * parse a JPred concise file into a sequence-alignment like object.
+    /**\r
+ * parse a JPred concise file into a sequence-alignment like object.\r
  */\r
     public void parse() throws IOException\r
     {\r
@@ -245,7 +242,7 @@ public class JPredFile extends AlignFile
 \r
                     while (ids.lastIndexOf(name) > -1)\r
                     {\r
-                        name = id.substring(id.indexOf(";") + 1) + "_" + 1;\r
+                        name = id.substring(id.indexOf(";") + 1) + "_" + ++i;\r
                     }\r
 \r
                     ids.addElement(name);\r
@@ -266,12 +263,12 @@ public class JPredFile extends AlignFile
                 }\r
             }\r
         }\r
-\r
+        /* leave it to the parser user to actually check this.\r
         if (noSeqs < 1)\r
         {\r
             throw new IOException(\r
                 "JpredFile Parser: No sequence in the prediction!");\r
-        }\r
+        }*/\r
 \r
         maxLength = seq_entries.elementAt(0).toString().length();\r
 \r
@@ -285,9 +282,9 @@ public class JPredFile extends AlignFile
             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
+                throw new IOException("JPredConcise: "\r
+                                      +AppletFormatAdapter.INVALID_CHARACTERS +" : "\r
+                                      +ids.elementAt(i).toString() + ")");\r
             }\r
 \r
             if (maxLength != seq_entries.elementAt(i).toString().length())\r
@@ -307,10 +304,10 @@ public class JPredFile extends AlignFile
         }\r
     }\r
 \r
-    /**
- * print
- *
- * @return String
+    /**\r
+ * print\r
+ *\r
+ * @return String\r
    */\r
     public String print()\r
     {\r
@@ -341,50 +338,78 @@ public class JPredFile extends AlignFile
             e.printStackTrace();\r
         }\r
     }\r
+    Vector annotSeqs=null;\r
+  /**\r
+   * removeNonSequences\r
+   */\r
+  public void removeNonSequences()\r
+  {\r
+    if (annotSeqs!=null)\r
+      return;\r
+    annotSeqs = new Vector();\r
+    Vector newseqs = new Vector();\r
+    int i=0;\r
+    int j=seqs.size();\r
+    for (; i<QuerySeqPosition; i++)\r
+        annotSeqs.add(seqs.get(i));\r
+      // check that no stray annotations have been added at the end.\r
+      {\r
+        SequenceI sq = (SequenceI) seqs.get(j-1);\r
+        if (sq.getName().toUpperCase().startsWith("JPRED")) {\r
+          annotSeqs.add(sq);\r
+          seqs.remove(--j);\r
+        }\r
+      }\r
+    for (; i<j; i++)\r
+        newseqs.add(seqs.get(i));\r
+\r
+    seqs.clear();\r
+    seqs = newseqs;\r
+  }\r
 }\r
 \r
 \r
-/*
- 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
+ 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