X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FPhylipFile.java;h=12e87a6b7e9775bfd0da211fd212c9965d370733;hb=57738a1f3c19b1c3a00bd3ac5108f8cd0af32f99;hp=bf60fce774b6cc422655243e6c2cc98fa6108071;hpb=4d7f98a6dd54d9863ba449ec79dcd95d25ed863d;p=jalview.git diff --git a/src/jalview/io/PhylipFile.java b/src/jalview/io/PhylipFile.java index bf60fce..12e87a6 100644 --- a/src/jalview/io/PhylipFile.java +++ b/src/jalview/io/PhylipFile.java @@ -1,5 +1,22 @@ -/** - * +/* + * 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. + * + * 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 Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.io; @@ -10,9 +27,9 @@ import java.io.IOException; /** *

- * Parser and exporter for PHYLIP file format, as defined in the - * documentation. The parser imports PHYLIP files in both sequential and + * Parser and exporter for PHYLIP file format, as defined + * in + * the documentation. The parser imports PHYLIP files in both sequential and * interleaved format, and (currently) exports in interleaved format (using 60 * characters per matrix for the sequence). *

@@ -21,7 +38,8 @@ import java.io.IOException; * The following assumptions have been made for input *

* * The following assumptions have been made for output @@ -42,9 +60,6 @@ import java.io.IOException; public class PhylipFile extends AlignFile { - // Define file extension and description to save repeating it elsewhere - public static final String FILE_EXT = "phy"; - public static final String FILE_DESC = "PHYLIP"; /** @@ -68,13 +83,14 @@ public class PhylipFile extends AlignFile /** * @param inFile - * @param type + * @param sourceType * @throws IOException * @see {@link AlignFile#AlignFile(FileParse)} */ - public PhylipFile(String inFile, String type) throws IOException + public PhylipFile(String inFile, DataSourceType sourceType) + throws IOException { - super(inFile, type); + super(inFile, sourceType); } /** @@ -97,8 +113,8 @@ public class PhylipFile extends AlignFile "First line must contain the number of specifies and number of characters"); } - int numberSpecies = Integer.parseInt(lineElements[0]), numberCharacters = Integer - .parseInt(lineElements[1]); + int numberSpecies = Integer.parseInt(lineElements[0]), + numberCharacters = Integer.parseInt(lineElements[1]); if (numberSpecies <= 0) { @@ -129,8 +145,8 @@ public class PhylipFile extends AlignFile } else { - sequenceElements[i] = parseId(validateName(potentialName - .substring(0, tabIndex))); + sequenceElements[i] = parseId( + validateName(potentialName.substring(0, tabIndex))); sequences[i] = new StringBuffer( removeWhitespace(line.substring(tabIndex))); } @@ -207,8 +223,8 @@ public class PhylipFile extends AlignFile { if (name.indexOf(c) > -1) { - throw new IOException("Species name contains illegal character " - + c); + throw new IOException( + "Species name contains illegal character " + c); } } return name; @@ -225,15 +241,13 @@ public class PhylipFile extends AlignFile * @see {@link AlignFile#print()} */ @Override - public String print() + public String print(SequenceI[] sqs, boolean jvsuffix) { - StringBuffer sb = new StringBuffer(Integer.toString(seqs.size())); + StringBuffer sb = new StringBuffer(Integer.toString(sqs.length)); sb.append(" "); // if there are no sequences, then define the number of characters as 0 - sb.append( - (seqs.size() > 0) ? Integer - .toString(seqs.get(0).getSequence().length) : "0") + sb.append((sqs.length > 0) ? Integer.toString(sqs[0].getLength()) : "0") .append(newline); // Due to how IO is handled, there doesn't appear to be a way to store @@ -245,7 +259,7 @@ public class PhylipFile extends AlignFile int numInterleavedColumns = 60; int sequenceLength = 0; - for (SequenceI s : seqs) + for (SequenceI s : sqs) { // ensure name is only 10 characters @@ -264,13 +278,13 @@ public class PhylipFile extends AlignFile // sequential has the entire sequence following the name if (sequential) { - sb.append(s.getSequence()); + sb.append(s.getSequenceAsString()); } else { // Jalview ensures all sequences are of same length so no need // to keep track of min/max length - sequenceLength = s.getSequence().length; + sequenceLength = s.getLength(); // interleaved breaks the sequence into chunks for // interleavedColumns characters sb.append(s.getSequence(0, @@ -296,11 +310,10 @@ public class PhylipFile extends AlignFile // add blank line to separate this matrix from previous sb.append(newline); int start = i * numInterleavedColumns; - for (SequenceI s : seqs) + for (SequenceI s : sqs) { - sb.append( - s.getSequence(start, Math.min(start - + numInterleavedColumns, sequenceLength))) + sb.append(s.getSequence(start, + Math.min(start + numInterleavedColumns, sequenceLength))) .append(newline); } } @@ -309,4 +322,4 @@ public class PhylipFile extends AlignFile return sb.toString(); } -} \ No newline at end of file +}