/*\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
* 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
package jalview.io;\r
\r
import jalview.datamodel.*;\r
\r
import java.io.*;\r
+\r
import java.util.*;\r
\r
-public abstract class AlignFile extends FileParse {\r
- int noSeqs = 0;\r
- int maxLength = 0;\r
\r
- Vector seqs;\r
- Vector headers;\r
+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public abstract class AlignFile extends FileParse\r
+{\r
+ int noSeqs = 0;\r
+ int maxLength = 0;\r
+ Vector seqs;\r
+ Vector annotations;\r
+ long start;\r
+ long end;\r
+ boolean jvSuffix = true;\r
+\r
+ /**\r
+ * Creates a new AlignFile object.\r
+ */\r
+ public AlignFile()\r
+ {\r
+ }\r
\r
- long start;\r
- long end;\r
\r
- public AlignFile()\r
- {}\r
+ /**\r
+ * Constructor which parses the data from a file of some specified type.\r
+ * @param inFile Filename to read from.\r
+ * @param type What type of file to read from (File, URL)\r
+ */\r
+ public AlignFile(String inFile, String type) throws IOException\r
+ {\r
+ super(inFile, type);\r
\r
- public AlignFile(String inStr) {\r
- initData();\r
-System.out.println("is this ever called??");\r
- try{\r
- parse();\r
- }catch(Exception ex){}\r
- }\r
+ initData();\r
\r
-/**\r
- * Constructor which parses the data from a file of some specified type.\r
- * @param inFile Filename to read from.\r
- * @param type What type of file to read from (File, URL)\r
- */\r
- public AlignFile(String inFile, String type) throws IOException {\r
- super(inFile,type);\r
+ parse();\r
+ }\r
\r
- initData();\r
+ /**\r
+ * Return the seqs Vector\r
+ */\r
+ public Vector getSeqs()\r
+ {\r
+ return seqs;\r
+ }\r
\r
- parse();\r
+ /**\r
+ * Return the Sequences in the seqs Vector as an array of Sequences\r
+ */\r
+ public SequenceI[] getSeqsAsArray()\r
+ {\r
+ SequenceI[] s = new SequenceI[seqs.size()];\r
\r
- }\r
+ for (int i = 0; i < seqs.size(); i++)\r
+ {\r
+ s[i] = (SequenceI) seqs.elementAt(i);\r
+ }\r
\r
-/**\r
- * Return the seqs Vector\r
- */\r
- public Vector getSeqs() {\r
- return seqs;\r
- }\r
+ return s;\r
+ }\r
+\r
+ public void addAnnotations(Alignment al)\r
+ {\r
+ for(int i=0; i<annotations.size(); i++)\r
+ {\r
+ al.addAnnotation(\r
+ (AlignmentAnnotation)annotations.elementAt(i)\r
+ );\r
+ }\r
\r
-/**\r
- * Return the Sequences in the seqs Vector as an array of Sequences\r
- */\r
- public SequenceI [] getSeqsAsArray() {\r
- SequenceI [] s = new SequenceI[seqs.size()];\r
- for (int i=0;i < seqs.size();i++) {\r
- s[i] = (SequenceI)seqs.elementAt(i);\r
}\r
- return s;\r
- }\r
\r
+ /**\r
+ * Initialise objects to store sequence data in.\r
+ */\r
+ protected void initData()\r
+ {\r
+ seqs = new Vector();\r
+ annotations = new Vector();\r
+ }\r
\r
-/**\r
- * Initialise objects to store sequence data in.\r
- */\r
- protected void initData() {\r
- seqs = new Vector();\r
- headers = new Vector();\r
- }\r
-\r
- protected void setSeqs(SequenceI [] s) {\r
- seqs = new Vector();\r
- for (int i=0; i<s.length; i++) {\r
- seqs.addElement(s[i]);\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param s DOCUMENT ME!\r
+ */\r
+ protected void setSeqs(SequenceI[] s)\r
+ {\r
+ seqs = new Vector();\r
+\r
+ for (int i = 0; i < s.length; i++)\r
+ {\r
+ seqs.addElement(s[i]);\r
+ }\r
}\r
- }\r
\r
- // Checks whether sequence is valid aa characters\r
- protected boolean isValidProteinSequence(String sequence)\r
- {\r
- for (int i = 0; i < sequence.length(); i++)\r
- if (!jalview.schemes.ResidueProperties.aaHash.containsKey(String.valueOf(sequence.charAt(i))))\r
- return false;\r
+ // Checks whether sequence is valid aa characters\r
+ protected boolean isValidProteinSequence(char [] sequence)\r
+ {\r
+ for (int i = 0; i < sequence.length; i++)\r
+ if (jalview.schemes.ResidueProperties.aaIndex[sequence[i]]==-1)\r
+ {\r
+ invalidCharacter = sequence[i];\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+ }\r
\r
- return true;\r
- }\r
+ char invalidCharacter;\r
\r
+ /**\r
+ * This method must be implemented to parse the contents of the file.\r
+ */\r
+ public abstract void parse() throws IOException;\r
\r
-/**\r
- * This method must be implemented to parse the contents of the file.\r
- */\r
- public abstract void parse() throws IOException;\r
+ /**\r
+ * Print out in alignment file format the Sequences in the seqs Vector.\r
+ */\r
+ public abstract String print();\r
\r
+ public void addJVSuffix(boolean b)\r
+ {\r
+ jvSuffix = b;\r
+ }\r
+\r
+ /**\r
+ * A general parser for ids.\r
+ *\r
+ * @String id Id to be parsed\r
+ */\r
+ Sequence parseId(String id)\r
+ {\r
+ Sequence seq = null;\r
+ id = id.trim();\r
+ int space = id.indexOf(" ");\r
+ if(space>-1)\r
+ {\r
+ seq = new Sequence(id.substring(0, space),"");\r
+ seq.setDescription(id.substring(space+1));\r
+ }\r
+ else\r
+ {\r
+ seq = new Sequence(id, "");\r
+ }\r
+\r
+ return seq;\r
+ }\r
+\r
+ /**\r
+ * Creates the output id.\r
+ * Adds prefix Uniprot format source|id\r
+ * And suffix Jalview /start-end\r
+ *\r
+ * @String id Id to be parsed\r
+ */\r
+ String printId(SequenceI seq)\r
+ {\r
+ return seq.getDisplayId(jvSuffix);\r
+ }\r
\r
-/**\r
- * Print out in alignment file format the Sequences in the seqs Vector.\r
- */\r
- public abstract String print();\r
}\r