X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FPfamFile.java;h=c0abc789a6237b2600bc8c836c68b4d6a0a04d60;hb=ad15cff29620f960119f80176f1fd443da9f6763;hp=2b0bf13a56bfc596e80d78b8bd5973d2955004b6;hpb=3a993bbe274824870c78bd7695c42fa93908cb30;p=jalview.git diff --git a/src/jalview/io/PfamFile.java b/src/jalview/io/PfamFile.java index 2b0bf13..c0abc78 100755 --- a/src/jalview/io/PfamFile.java +++ b/src/jalview/io/PfamFile.java @@ -1,20 +1,22 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2007 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 + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview 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 3 * 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. - * + * + * Jalview 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 + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.io; @@ -24,30 +26,29 @@ import java.util.*; import jalview.datamodel.*; import jalview.util.*; -public class PfamFile - extends AlignFile +public class PfamFile extends AlignFile { public PfamFile() { } - public PfamFile(String inFile, String type) - throws IOException + public PfamFile(String inFile, String type) throws IOException { super(inFile, type); } + public PfamFile(FileParse source) throws IOException { super(source); } + public void initData() { super.initData(); } - public void parse() - throws IOException + public void parse() throws IOException { int i = 0; String line; @@ -55,12 +56,14 @@ public class PfamFile Hashtable seqhash = new Hashtable(); Vector headers = new Vector(); - while ( (line = nextLine()) != null) + while ((line = nextLine()) != null) { if (line.indexOf(" ") != 0) { if (line.indexOf("#") != 0) { + // TODO: verify pfam format requires spaces and not tab characters - + // if not upgrade to use stevesoft regex and look for whitespace. StringTokenizer str = new StringTokenizer(line, " "); String id = ""; @@ -80,12 +83,14 @@ public class PfamFile seqhash.put(id, tempseq); } - if (! (headers.contains(id))) + if (!(headers.contains(id))) { headers.addElement(id); } - - tempseq.append(str.nextToken()); + if (str.hasMoreTokens()) + { + tempseq.append(str.nextToken()); + } } } } @@ -95,7 +100,7 @@ public class PfamFile if (noSeqs < 1) { - throw new IOException("No sequences found (PFAM input)"); + throw new IOException(MessageManager.getString("exception.pfam_no_sequences_found")); } for (i = 0; i < headers.size(); i++) @@ -103,21 +108,20 @@ public class PfamFile if (seqhash.get(headers.elementAt(i)) != null) { if (maxLength < seqhash.get(headers.elementAt(i)).toString() - .length()) + .length()) { - maxLength = seqhash.get(headers.elementAt(i)).toString() - .length(); + maxLength = seqhash.get(headers.elementAt(i)).toString().length(); } Sequence newSeq = parseId(headers.elementAt(i).toString()); - newSeq.setSequence(seqhash.get(headers.elementAt(i).toString()). - toString()); + newSeq.setSequence(seqhash.get(headers.elementAt(i).toString()) + .toString()); seqs.addElement(newSeq); } else { - System.err.println("PFAM File reader: Can't find sequence for " + - headers.elementAt(i)); + System.err.println("PFAM File reader: Can't find sequence for " + + headers.elementAt(i)); } } } @@ -131,7 +135,7 @@ public class PfamFile int i = 0; - while ( (i < s.length) && (s[i] != null)) + while ((i < s.length) && (s[i] != null)) { String tmp = printId(s[i]); @@ -155,15 +159,16 @@ public class PfamFile int j = 0; - while ( (j < s.length) && (s[j] != null)) + while ((j < s.length) && (s[j] != null)) { out.append(new Format("%-" + maxid + "s").form(printId(s[j]) + " ")); - out.append(s[j].getSequenceAsString() + "\n"); + out.append(s[j].getSequenceAsString()); + out.append(newline); j++; } - out.append("\n"); + out.append(newline); return out.toString(); }