2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
3 * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11 * Jalview is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 * PURPOSE. See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
29 * Read and write PileUp style MSF Files. This used to be the MSFFile class, and
30 * was written according to the EBI's idea of a subset of the MSF alignment
31 * format. But, that was updated to reflect current GCG style IO fashion, as
32 * found in Emboss (thanks David Martin!)
37 import javax.xml.parsers.ParserConfigurationException;
39 import org.xml.sax.SAXException;
41 import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
42 import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
43 import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
44 import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses;
46 import jalview.datamodel.*;
47 import jalview.util.*;
49 public class PileUpfile extends MSFfile
53 * Creates a new MSFfile object.
60 * Creates a new MSFfile object.
69 * @throws SAXException
70 * @throws ParserConfigurationException
71 * @throws ExceptionFileFormatOrSyntax
72 * @throws ExceptionLoadingFailed
73 * @throws ExceptionPermissionDenied
74 * @throws InterruptedException
75 * @throws ExceptionUnmatchedClosingParentheses
77 public PileUpfile(String inFile, String type) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException, ExceptionUnmatchedClosingParentheses
82 public PileUpfile(FileParse source) throws IOException, ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException, ExceptionUnmatchedClosingParentheses
90 * @return DOCUMENT ME!
94 return print(getSeqsAsArray());
97 public String print(SequenceI[] s)
99 StringBuffer out = new StringBuffer("PileUp");
108 int[] checksums = new int[s.length];
111 checksums[i] = checkSum(s[i].getSequenceAsString());
112 bigChecksum += checksums[i];
116 out.append(" MSF: " + s[0].getSequence().length
117 + " Type: P Check: " + bigChecksum % 10000
124 while ((i < s.length) && (s[i] != null))
126 String seq = s[i].getSequenceAsString();
127 out.append(" Name: " + printId(s[i]) + " oo Len: " + seq.length()
128 + " Check: " + checksums[i] + " Weight: 1.00");
131 if (seq.length() > max)
136 if (s[i].getName().length() > maxid)
138 maxid = s[i].getName().length();
150 out.append(newline);out.append(newline);out.append("//");
151 out.append(newline);out.append(newline);
155 int nochunks = (max / len) + 1;
157 if ((max % len) == 0)
162 for (i = 0; i < nochunks; i++)
166 while ((j < s.length) && (s[j] != null))
168 String name = printId(s[j]);
170 out.append(new Format("%-" + maxid + "s").form(name + " "));
172 for (int k = 0; k < 5; k++)
174 int start = (i * 50) + (k * 10);
175 int end = start + 10;
177 if ((end < s[j].getSequence().length)
178 && (start < s[j].getSequence().length))
180 out.append(s[j].getSequence(start, end));
193 if (start < s[j].getSequence().length)
195 out.append(s[j].getSequenceAsString().substring(start));
214 return out.toString();