3 import jalview.datamodel.*;
\r
4 import jalview.analysis.*;
\r
9 public class FastaFile extends AlignFile {
\r
14 public FastaFile(String inStr) {
\r
18 public FastaFile(String inFile, String type) throws IOException {
\r
22 public void parse() throws IOException
\r
26 StringBuffer seq = new StringBuffer();
\r
28 boolean flag = false;
\r
35 while ((line = nextLine()) != null) {
\r
37 if (line.length() > 0) {
\r
39 // Do we have an id line?
\r
41 if (line.substring(0,1).equals(">")) {
\r
45 seqs.addElement(new Sequence(id,seq.toString().toUpperCase(),sstart,send));
\r
47 seqs.addElement(new Sequence(id,seq.toString().toUpperCase(),1,seq.length()));
\r
53 StringTokenizer str = new StringTokenizer(line," ");
\r
55 id = str.nextToken();
\r
56 id = id.substring(1);
\r
58 if (id.indexOf("/") > 0 ) {
\r
60 StringTokenizer st = new StringTokenizer(id,"/");
\r
61 if (st.countTokens() == 2) {
\r
62 id = st.nextToken();
\r
63 String tmp = st.nextToken();
\r
65 st = new StringTokenizer(tmp,"-");
\r
67 if (st.countTokens() == 2) {
\r
68 sstart = Integer.valueOf(st.nextToken()).intValue();
\r
69 send = Integer.valueOf(st.nextToken()).intValue();
\r
74 seq = new StringBuffer();
\r
77 seq = seq.append(line);
\r
83 if(!isValidProteinSequence(seq.toString().toUpperCase()))
\r
84 throw new IOException("Invalid protein sequence");
\r
87 seqs.addElement(new Sequence(id,seq.toString().toUpperCase(),sstart,send));
\r
89 seqs.addElement(new Sequence(id,seq.toString().toUpperCase(),1,seq.length()));
\r
95 public static String print(SequenceI[] s) {
\r
98 public static String print(SequenceI[] s, int len) {
\r
99 return print(s,len,true);
\r
101 public static String print(SequenceI[] s, int len,boolean gaps) {
\r
102 StringBuffer out = new StringBuffer();
\r
104 while (i < s.length && s[i] != null) {
\r
107 seq = s[i].getSequence();
\r
109 seq = AlignSeq.extractGaps("-. ",s[i].getSequence());
\r
112 out.append(">" + s[i].getName() + "/" + s[i].getStart() + "-" + s[i].getEnd() + "\n");
\r
114 int nochunks = seq.length() / len + 1;
\r
116 for (int j = 0; j < nochunks; j++) {
\r
118 int end = start + len;
\r
120 if (end < seq.length()) {
\r
121 out.append(seq.substring(start,end) + "\n");
\r
122 } else if (start < seq.length()) {
\r
123 out.append(seq.substring(start) + "\n");
\r
128 return out.toString();
\r
131 public String print() {
\r
132 return print(getSeqsAsArray());
\r