vamsasDemo new branch
[jalview.git] / src / jalview / io / PileUpfile.java
index 8c8a3ea..c945fd5 100755 (executable)
@@ -30,170 +30,53 @@ package jalview.io;
  *\r
  **/\r
 import java.io.*;\r
-import java.util.*;\r
 \r
 import jalview.datamodel.*;\r
 import jalview.util.*;\r
 \r
-public class PileUpfile\r
-    extends AlignFile\r
+public class PileUpfile  extends MSFfile\r
 {\r
-  public PileUpfile()\r
-  {\r
-  }\r
-\r
-  public PileUpfile(String inStr)\r
-  {\r
-    super(inStr);\r
-  }\r
 \r
-  public PileUpfile(String inFile, String type)\r
-      throws IOException\r
-  {\r
-    super(inFile, type);\r
-  }\r
-\r
-  public void parse()\r
-  {\r
-    int i = 0;\r
-    boolean seqFlag = false;\r
-    String key = new String();\r
-    Vector headers = new Vector();\r
-    Hashtable seqhash = new Hashtable();\r
-    String line;\r
-\r
-    try\r
+    /**\r
+     * Creates a new MSFfile object.\r
+     */\r
+    public PileUpfile()\r
     {\r
-      while ( (line = nextLine()) != null)\r
-      {\r
-        StringTokenizer str = new StringTokenizer(line);\r
-\r
-        while (str.hasMoreTokens())\r
-        {\r
-          String inStr = str.nextToken();\r
-\r
-          //If line has header information add to the headers vector\r
-          if (inStr.indexOf("Name:") != -1)\r
-          {\r
-            key = str.nextToken();\r
-            headers.addElement(key);\r
-          }\r
-\r
-          //if line has // set SeqFlag to 1 so we know sequences are coming\r
-          if (inStr.indexOf("//") != -1)\r
-          {\r
-            seqFlag = true;\r
-          }\r
-\r
-          //Process lines as sequence lines if seqFlag is set\r
-          if ( (inStr.indexOf("//") == -1) && (seqFlag == true))\r
-          {\r
-            //seqeunce id is the first field\r
-            key = inStr;\r
-\r
-            StringBuffer tempseq;\r
-\r
-            //Get sequence from hash if it exists\r
-            if (seqhash.containsKey(key))\r
-            {\r
-              tempseq = (StringBuffer) seqhash.get(key);\r
-            }\r
-            else\r
-            {\r
-              tempseq = new StringBuffer();\r
-              seqhash.put(key, tempseq);\r
-            }\r
-\r
-            //loop through the rest of the words\r
-            while (str.hasMoreTokens())\r
-            {\r
-              //append the word to the sequence\r
-              tempseq.append(str.nextToken());\r
-            }\r
-          }\r
-        }\r
-      }\r
     }\r
-    catch (IOException e)\r
+    /**\r
+     * Creates a new MSFfile object.\r
+     *\r
+     * @param inStr DOCUMENT ME!\r
+     */\r
+    public PileUpfile(String inStr)\r
     {\r
-      System.err.println("Exception parsing PileUpfile " + e);\r
-      e.printStackTrace();\r
+        super(inStr);\r
     }\r
 \r
-    this.noSeqs = headers.size();\r
-\r
-    //Add sequences to the hash\r
-    for (i = 0; i < headers.size(); i++)\r
+    /**\r
+     * Creates a new MSFfile object.\r
+     *\r
+     * @param inFile DOCUMENT ME!\r
+     * @param type DOCUMENT ME!\r
+     *\r
+     * @throws IOException DOCUMENT ME!\r
+     */\r
+    public PileUpfile(String inFile, String type) throws IOException\r
     {\r
-      if (seqhash.get(headers.elementAt(i)) != null)\r
-      {\r
-        String head = headers.elementAt(i).toString();\r
-        String seq = seqhash.get(head).toString();\r
-\r
-        int start = 1;\r
-        int end = -1;\r
-\r
-        if (maxLength < head.length())\r
-        {\r
-          maxLength = head.length();\r
-        }\r
-\r
-        if (head.indexOf("/") > 0)\r
-        {\r
-          StringTokenizer st = new StringTokenizer(head, "/");\r
-\r
-          if (st.countTokens() == 2)\r
-          {\r
-            head = st.nextToken();\r
-\r
-            String tmp = st.nextToken();\r
-            st = new StringTokenizer(tmp, "-");\r
-\r
-            if (st.countTokens() == 2)\r
-            {\r
-              start = Integer.valueOf(st.nextToken()).intValue();\r
-              end = Integer.valueOf(st.nextToken()).intValue();\r
-            }\r
-          }\r
-        }\r
-\r
-        Sequence newSeq = new Sequence(head, seq, start, end);\r
-\r
-        seqs.addElement(newSeq);\r
-      }\r
-      else\r
-      {\r
-        System.err.println(\r
-            "PileUpfile Parser: Can't find sequence for " +\r
-            headers.elementAt(i));\r
-      }\r
+        super(inFile, type);\r
     }\r
-  }\r
-\r
-  public static int checkSum(String seq)\r
+   /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @return DOCUMENT ME!\r
+   */\r
+  public String print()\r
   {\r
-\r
-    int check = 0;\r
-\r
-    String sequence = seq.toUpperCase();\r
-\r
-    for (int i = 0; i < sequence.length(); i++)\r
-    {\r
-        if (i < sequence.length())\r
-        {\r
-          int value = sequence.charAt(i);\r
-          if (value != -1)\r
-          {\r
-            check += (i % 57 + 1) * value;\r
-          }\r
-        }\r
-\r
-    }\r
-\r
-    return check % 10000;\r
+      return print(getSeqsAsArray());\r
   }\r
 \r
-  public static String print(SequenceI[] s)\r
+\r
+  public  String print(SequenceI[] s)\r
   {\r
     StringBuffer out = new StringBuffer("PileUp\n\n");\r
 \r
@@ -217,8 +100,7 @@ public class PileUpfile
     while ( (i < s.length) && (s[i] != null))\r
     {\r
       String seq = s[i].getSequence();\r
-      out.append(" Name: " + s[i].getName() +\r
-                   "/" + s[i].getStart() + "-" + s[i].getEnd() +\r
+      out.append(" Name: " + printId(s[i]) +\r
                  " oo  Len:  " +\r
                  s[i].getSequence().length() + "  Check:  " + checksums[i] +\r
                  "  Weight:  1.00\n");\r
@@ -259,11 +141,9 @@ public class PileUpfile
 \r
       while ( (j < s.length) && (s[j] != null))\r
       {\r
-        String name = s[j].getName();\r
-       // out.append(new Format("%-" + maxid + "s").form(name) + " ");\r
+        String name = printId(s[j]);\r
 \r
-         out.append(new Format("%-" + maxid + "s").form(name\r
-          + "/" + s[j].getStart() + "-" + s[j].getEnd()) + " ");\r
+         out.append(new Format("%-" + maxid + "s").form(name + " "));\r
 \r
         for (int k = 0; k < 5; k++)\r
         {\r
@@ -309,9 +189,4 @@ public class PileUpfile
 \r
     return out.toString();\r
   }\r
-\r
-  public String print()\r
-  {\r
-    return print(getSeqsAsArray());\r
-  }\r
 }\r