Any character non aa or nucleotide is a space
[jalview.git] / src / jalview / io / PfamFile.java
index 9a6ca54..d84dc70 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
  * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 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
@@ -27,17 +27,11 @@ import jalview.util.*;
 public class PfamFile\r
     extends AlignFile\r
 {\r
-  Vector ids;\r
 \r
   public PfamFile()\r
   {\r
   }\r
 \r
-  public PfamFile(String inStr)\r
-  {\r
-    super(inStr);\r
-  }\r
-\r
   public PfamFile(String inFile, String type)\r
       throws IOException\r
   {\r
@@ -47,11 +41,9 @@ public class PfamFile
   public void initData()\r
   {\r
     super.initData();\r
-    ids = new Vector();\r
   }\r
 \r
-  public void parse()\r
-      throws IOException\r
+  public void parse() throws IOException\r
   {\r
     int i = 0;\r
     String line;\r
@@ -113,51 +105,11 @@ public class PfamFile
               .length();\r
         }\r
 \r
-        String head = headers.elementAt(i).toString();\r
-        int start = 1;\r
-        int end = -1;\r
-\r
-        if (head.indexOf("/") > 0)\r
-        {\r
-          StringTokenizer st = new StringTokenizer(head, "/");\r
-\r
-          if (st.countTokens() == 2)\r
-          {\r
-            ids.addElement(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
-          else\r
-          {\r
-            ids.addElement(headers.elementAt(i));\r
-          }\r
-        }\r
-        else\r
-        {\r
-          ids.addElement(headers.elementAt(i));\r
-        }\r
-\r
-        Sequence newSeq = null;\r
 \r
-        newSeq = new Sequence(ids.elementAt(i).toString(),\r
-                              seqhash.get(headers.elementAt(i).toString())\r
-                              .toString(), start, end);\r
+        Sequence newSeq = parseId(headers.elementAt(i).toString());\r
+        newSeq.setSequence( seqhash.get(headers.elementAt(i).toString()).toString());\r
         seqs.addElement(newSeq);\r
-\r
-\r
-        if (!isValidProteinSequence(newSeq.getSequence()))\r
-        {\r
-          throw new IOException(\r
-              "Not a valid protein sequence - (PFAM input)");\r
-        }\r
-      }\r
+     }\r
       else\r
       {\r
         System.err.println("PFAM File reader: Can't find sequence for " +\r
@@ -166,7 +118,7 @@ public class PfamFile
     }\r
   }\r
 \r
-  public static String print(SequenceI[] s)\r
+  public String print(SequenceI[] s)\r
   {\r
     StringBuffer out = new StringBuffer("");\r
 \r
@@ -177,12 +129,11 @@ public class PfamFile
 \r
     while ( (i < s.length) && (s[i] != null))\r
     {\r
-      String tmp = s[i].getName() + "/" + s[i].getStart() + "-" +\r
-          s[i].getEnd();\r
+      String tmp = printId(s[i]);\r
 \r
-      if (s[i].getSequence().length() > max)\r
+      if (s[i].getSequence().length > max)\r
       {\r
-        max = s[i].getSequence().length();\r
+        max = s[i].getSequence().length;\r
       }\r
 \r
       if (tmp.length() > maxid)\r
@@ -202,10 +153,9 @@ public class PfamFile
 \r
     while ( (j < s.length) && (s[j] != null))\r
     {\r
-      out.append(new Format("%-" + maxid + "s").form(s[j].getName() +\r
-          "/" + s[j].getStart() + "-" + s[j].getEnd()) + " ");\r
+      out.append(new Format("%-" + maxid + "s").form( printId(s[j])+" "));\r
 \r
-      out.append(s[j].getSequence() + "\n");\r
+      out.append(s[j].getSequenceAsString() + "\n");\r
       j++;\r
     }\r
 \r