Formatting changes
[jalview.git] / src / jalview / datamodel / BinarySequence.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 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.datamodel;\r
20 \r
21 import jalview.analysis.PCA;\r
22 \r
23 import jalview.io.*;\r
24 \r
25 import jalview.jbgui.*;\r
26 \r
27 import jalview.schemes.*;\r
28 \r
29 import java.awt.*;\r
30 \r
31 \r
32 /**\r
33  * DOCUMENT ME!\r
34  *\r
35  * @author $author$\r
36  * @version $Revision$\r
37  */\r
38 public class BinarySequence extends Sequence\r
39 {\r
40     int[] binary;\r
41     double[] dbinary;\r
42 \r
43     /**\r
44      * Creates a new BinarySequence object.\r
45      *\r
46      * @param s DOCUMENT ME!\r
47      */\r
48     public BinarySequence(SequenceI s)\r
49     {\r
50         super(s.getName(), s.getSequence(), s.getStart(), s.getEnd());\r
51     }\r
52 \r
53     /**\r
54      * Creates a new BinarySequence object.\r
55      *\r
56      * @param name DOCUMENT ME!\r
57      * @param sequence DOCUMENT ME!\r
58      * @param start DOCUMENT ME!\r
59      * @param end DOCUMENT ME!\r
60      */\r
61     public BinarySequence(String name, String sequence, int start, int end)\r
62     {\r
63         super(name, sequence, start, end);\r
64     }\r
65 \r
66     /**\r
67      * DOCUMENT ME!\r
68      */\r
69     public void encode()\r
70     {\r
71         // Set all matrix to 0\r
72         dbinary = new double[getSequence().length() * 21];\r
73 \r
74         int nores = 21;\r
75 \r
76         for (int i = 0; i < dbinary.length; i++)\r
77         {\r
78             dbinary[i] = 0.0;\r
79         }\r
80 \r
81         for (int i = 0; i < getSequence().length(); i++)\r
82         {\r
83             int aanum = 20;\r
84 \r
85             try\r
86             {\r
87                 aanum = ((Integer) ResidueProperties.getAAHash().get(getSequence()\r
88                                                                          .substring(i,\r
89                             i + 1))).intValue();\r
90             }\r
91             catch (NullPointerException e)\r
92             {\r
93                 aanum = 20;\r
94             }\r
95 \r
96             if (aanum > 20)\r
97             {\r
98                 aanum = 20;\r
99             }\r
100 \r
101             dbinary[(i * nores) + aanum] = 1.0;\r
102         }\r
103     }\r
104 \r
105     /**\r
106      * DOCUMENT ME!\r
107      */\r
108     public void blosumEncode()\r
109     {\r
110         // Set all matrix to 0\r
111         dbinary = new double[getSequence().length() * 21];\r
112 \r
113         int nores = 21;\r
114 \r
115         //for (int i = 0; i < dbinary.length; i++) {\r
116         //  dbinary[i] = 0.0;\r
117         //}\r
118         for (int i = 0; i < getSequence().length(); i++)\r
119         {\r
120             int aanum = 20;\r
121 \r
122             try\r
123             {\r
124                 aanum = ((Integer) ResidueProperties.getAAHash().get(getSequence()\r
125                                                                          .substring(i,\r
126                             i + 1))).intValue();\r
127             }\r
128             catch (NullPointerException e)\r
129             {\r
130                 aanum = 20;\r
131             }\r
132 \r
133             if (aanum > 20)\r
134             {\r
135                 aanum = 20;\r
136             }\r
137 \r
138             // Do the blosum thing\r
139             for (int j = 0; j < 20; j++)\r
140             {\r
141                 dbinary[(i * nores) + j] = ResidueProperties.getBLOSUM62()[aanum][j];\r
142             }\r
143         }\r
144     }\r
145 \r
146     /**\r
147      * DOCUMENT ME!\r
148      *\r
149      * @return DOCUMENT ME!\r
150      */\r
151     public String toBinaryString()\r
152     {\r
153         String out = "";\r
154 \r
155         for (int i = 0; i < binary.length; i++)\r
156         {\r
157             out += (new Integer(binary[i])).toString();\r
158 \r
159             if (i < (binary.length - 1))\r
160             {\r
161                 out += " ";\r
162             }\r
163         }\r
164 \r
165         return out;\r
166     }\r
167 \r
168     /**\r
169      * DOCUMENT ME!\r
170      *\r
171      * @return DOCUMENT ME!\r
172      */\r
173     public double[] getDBinary()\r
174     {\r
175         return dbinary;\r
176     }\r
177 \r
178     /**\r
179      * DOCUMENT ME!\r
180      *\r
181      * @param rt DOCUMENT ME!\r
182      */\r
183     public static void printMemory(Runtime rt)\r
184     {\r
185         System.out.println("DEBUG: Free memory = " + rt.freeMemory()); // log.\r
186     }\r
187 }\r