/*\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) 2007 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
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
public void initData()\r
{\r
super.initData();\r
- ids = new Vector();\r
}\r
\r
public void parse()\r
.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()).\r
+ 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
else\r
{\r
}\r
}\r
\r
- public static String print(SequenceI[] s)\r
+ public String print(SequenceI[] s)\r
{\r
StringBuffer out = new StringBuffer("");\r
\r
\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
\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