2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
3 * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, 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 + " ..");
123 while ((i < s.length) && (s[i] != null))
125 String seq = s[i].getSequenceAsString();
126 out.append(" Name: " + printId(s[i]) + " oo Len: " + seq.length()
127 + " Check: " + checksums[i] + " Weight: 1.00");
130 if (seq.length() > max)
135 if (s[i].getName().length() > maxid)
137 maxid = s[i].getName().length();
157 int nochunks = (max / len) + 1;
159 if ((max % len) == 0)
164 for (i = 0; i < nochunks; i++)
168 while ((j < s.length) && (s[j] != null))
170 String name = printId(s[j]);
172 out.append(new Format("%-" + maxid + "s").form(name + " "));
174 for (int k = 0; k < 5; k++)
176 int start = (i * 50) + (k * 10);
177 int end = start + 10;
179 if ((end < s[j].getSequence().length)
180 && (start < s[j].getSequence().length))
182 out.append(s[j].getSequence(start, end));
195 if (start < s[j].getSequence().length)
197 out.append(s[j].getSequenceAsString().substring(start));
216 return out.toString();