X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FBLCFile.java;h=46cf02a2abfc072c3dd1fdb6dc91d8f39e8b1791;hb=10969ddae3e6311c50cddb58fb13f22f04661d80;hp=c40e125ffd1c47afa48fce834354df1b3a7a7188;hpb=dacca12e91b93a02664e9cd77773455c44eb8799;p=jalview.git diff --git a/src/jalview/io/BLCFile.java b/src/jalview/io/BLCFile.java index c40e125..46cf02a 100755 --- a/src/jalview/io/BLCFile.java +++ b/src/jalview/io/BLCFile.java @@ -1,17 +1,17 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle - * + * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) + * Copyright (C) 2009 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 * 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. - * + * * 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 @@ -25,12 +25,11 @@ import jalview.datamodel.*; /** * DOCUMENT ME! - * + * * @author $author$ * @version $Revision$ */ -public class BLCFile -extends AlignFile +public class BLCFile extends AlignFile { Vector titles; @@ -43,18 +42,25 @@ extends AlignFile /** * Creates a new BLCFile object. - * - * @param inFile DOCUMENT ME! - * @param type DOCUMENT ME! - * - * @throws IOException DOCUMENT ME! + * + * @param inFile + * DOCUMENT ME! + * @param type + * DOCUMENT ME! + * + * @throws IOException + * DOCUMENT ME! */ - public BLCFile(String inFile, String type) - throws IOException + public BLCFile(String inFile, String type) throws IOException { super(inFile, type); } + public BLCFile(FileParse source) throws IOException + { + super(source); + } + /** * DOCUMENT ME! */ @@ -63,45 +69,50 @@ extends AlignFile super.initData(); titles = new Vector(); } + /** - * Control the number of block iterations to skip before returning. - * set to 0 to read first block file entry only - * set to -1 to read last block file entry only - * set to greater than zero to skip at most that many entries before parsing + * Control the number of block iterations to skip before returning. set to 0 + * to read first block file entry only set to -1 to read last block file entry + * only set to greater than zero to skip at most that many entries before + * parsing */ - int iterationSkips=0; + int iterationSkips = 0; + /** - * The iteration number for the alignment actually parsed from the blc file + * The iteration number for the alignment actually parsed from the blc file */ - int iterationCount=0; + int iterationCount = 0; /** * DOCUMENT ME! */ - public void parse() - throws IOException + public void parse() throws IOException { - StringBuffer headerLines=new StringBuffer(); + StringBuffer headerLines = new StringBuffer(); int numHeaderLines = 0; // number of lines appended. - StringBuffer[] seqstrings=null; - if (suffix!=null) { - try { - iterationSkips = Integer.parseInt(suffix); - } catch (NumberFormatException e) { + StringBuffer[] seqstrings = null; + if (suffix != null) + { + try + { + iterationSkips = Integer.parseInt(suffix); + } catch (NumberFormatException e) + { iterationSkips = 0; // first } } String line = null; - do { + do + { boolean idsFound = false; boolean newids = false; - // search for ID header. + // search for ID header. do { line = nextLine(); - if (line==null) + if (line == null) break; // seek end of ids if (line.indexOf("*") > -1) @@ -110,31 +121,33 @@ extends AlignFile break; } - + int abracket = line.indexOf(">"); if (abracket > -1) { - if (iterationCount>0 && !newids) { + if (iterationCount > 0 && !newids) + { // we have a new set of IDs to record. newids = true; - seqs.removeAllElements(); + seqs.removeAllElements(); } line = line.substring(abracket + 1); Sequence seq = parseId(line); seqs.addElement(seq); - } else { + } + else + { // header lines - keep them for the alignment comments. headerLines.append(line); headerLines.append("\n"); numHeaderLines++; } - } - while (!idsFound); - if (line==null) + } while (!idsFound); + if (line == null) break; // end of file. int starCol = line.indexOf("*"); seqstrings = new StringBuffer[seqs.size()]; @@ -147,9 +160,10 @@ extends AlignFile } } - try { + try + { line = nextLine(); - while (line!=null && line.indexOf("*") == -1) + while (line != null && line.indexOf("*") == -1) { for (int i = 0; i < seqs.size(); i++) { @@ -160,33 +174,38 @@ extends AlignFile } line = nextLine(); } - } catch (IOException e) { - if (iterationCount==0) { - throw(e); // otherwise we've just run out of iterations. - } else { - iterationSkips=0; + } catch (IOException e) + { + if (iterationCount == 0) + { + throw (e); // otherwise we've just run out of iterations. + } + else + { + iterationSkips = 0; } } iterationCount++; - } while (--iterationSkips!=-1); - + } while (--iterationSkips != -1); + for (int i = 0; i < seqs.size(); i++) { Sequence newSeq = (Sequence) seqs.elementAt(i); newSeq.setSequence(seqstrings[i].toString()); } - if (seqs.size()>0) + if (seqs.size() > 0) { - if (headerLines.length()>1+numHeaderLines) // could see if buffer is just whitespace or not. + if (headerLines.length() > 1 + numHeaderLines) // could see if buffer is + // just whitespace or not. setAlignmentProperty("Comments", headerLines.toString()); - setAlignmentProperty("iteration", ""+iterationCount); + setAlignmentProperty("iteration", "" + iterationCount); } } /** * DOCUMENT ME! - * + * * @return DOCUMENT ME! */ public String print() @@ -196,25 +215,25 @@ extends AlignFile /** * DOCUMENT ME! - * - * @param s DOCUMENT ME! - * + * + * @param s + * DOCUMENT ME! + * * @return DOCUMENT ME! */ public String print(SequenceI[] s) { StringBuffer out = new StringBuffer(); /** - * A general parser for ids. Will look for dbrefs in - * Uniprot format source|id - * And also Jalview /start-end - * + * A general parser for ids. Will look for dbrefs in Uniprot format + * source|id And also Jalview /start-end + * * @String id Id to be parsed */ int i = 0; int max = -1; - while ( (i < s.length) && (s[i] != null)) + while ((i < s.length) && (s[i] != null)) { out.append(">" + printId(s[i])); if (s[i].getDescription() != null) @@ -238,7 +257,7 @@ extends AlignFile { i = 0; - while ( (i < s.length) && (s[i] != null)) + while ((i < s.length) && (s[i] != null)) { if (s[i].getSequence().length > j) {