Only output visible annotations
[jalview.git] / src / jalview / io / AMSAFile.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 package jalview.io;\r
20 \r
21 import jalview.datamodel.*;\r
22 \r
23 public class AMSAFile extends jalview.io.FastaFile\r
24 {\r
25 \r
26    AlignmentI al;\r
27     /**\r
28      * Creates a new AMSAFile object for output.\r
29      */\r
30     public AMSAFile(AlignmentI al)\r
31     {\r
32       this.al = al;\r
33     }\r
34 \r
35     /**\r
36      * DOCUMENT ME!\r
37      *\r
38      * @return DOCUMENT ME!\r
39      */\r
40     public String print()\r
41     {\r
42       super.print(getSeqsAsArray());\r
43 \r
44       AlignmentAnnotation aa;\r
45       if (al.getAlignmentAnnotation() != null)\r
46       {\r
47         for (int i = 0; i < al.getAlignmentAnnotation().length; i++)\r
48         {\r
49           aa = al.getAlignmentAnnotation()[i];\r
50           if (aa.autoCalculated || !aa.visible)\r
51             continue;\r
52 \r
53           out.append(">#_" + aa.label);\r
54           if (aa.description != null)\r
55             out.append(" " + aa.description);\r
56 \r
57           out.append("\n");\r
58 \r
59           int nochunks = (aa.annotations.length / len) + 1;\r
60 \r
61           for (int j = 0; j < nochunks; j++)\r
62           {\r
63             int start = j * len;\r
64             int end = start + len;\r
65             if (end > aa.annotations.length)\r
66               end = aa.annotations.length;\r
67 \r
68             String ch;\r
69             for (int k = start; k < end; k++)\r
70             {\r
71               if (aa.annotations[k] == null)\r
72                 ch = " ";\r
73               else\r
74                 ch = aa.annotations[k].displayCharacter;\r
75 \r
76               out.append(ch);\r
77 \r
78             }\r
79             out.append("\n");\r
80           }\r
81         }\r
82       }\r
83       return out.toString();\r
84     }\r
85 }\r