GPL license added
[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 \r
20 package jalview.datamodel;\r
21 \r
22 import jalview.io.*;\r
23 import jalview.analysis.PCA;\r
24 import jalview.jbgui.*;\r
25 import jalview.schemes.*;\r
26 \r
27 import java.awt.*;\r
28 \r
29 public class BinarySequence extends Sequence {\r
30   int[] binary;\r
31   double[] dbinary;\r
32 \r
33   public BinarySequence(SequenceI s) {\r
34     super(s.getName(),s.getSequence(),s.getStart(),s.getEnd());\r
35   }\r
36 \r
37   public BinarySequence(String name, String sequence, int start, int end) {\r
38     super(name,sequence,start,end);\r
39   }\r
40 \r
41   public void encode() {\r
42     // Set all matrix to 0\r
43     dbinary = new double[getSequence().length() * 21];\r
44     int nores = 21;\r
45     for (int i = 0; i < dbinary.length; i++) {\r
46       dbinary[i] = 0.0;\r
47     }\r
48 \r
49     for (int i=0; i < getSequence().length(); i++ ) {\r
50       int aanum = 20;\r
51       try {\r
52         aanum = ((Integer)ResidueProperties.getAAHash().get(getSequence().substring(i,i+1))).intValue();\r
53       } catch (NullPointerException e) {\r
54         aanum = 20;\r
55       }\r
56       if (aanum > 20) {\r
57         aanum = 20;\r
58       }\r
59 \r
60       dbinary[i* nores + aanum] = 1.0;\r
61 \r
62     }\r
63   }\r
64 \r
65   public void blosumEncode() {\r
66 \r
67     // Set all matrix to 0\r
68     dbinary = new double[getSequence().length() * 21];\r
69     int nores = 21;\r
70     //for (int i = 0; i < dbinary.length; i++) {\r
71     //  dbinary[i] = 0.0;\r
72     //}\r
73 \r
74     for (int i=0; i < getSequence().length(); i++ ) {\r
75       int aanum = 20;\r
76       try {\r
77         aanum = ((Integer)ResidueProperties.getAAHash().get(getSequence().substring(i,i+1))).intValue();\r
78       } catch (NullPointerException e) {\r
79         aanum = 20;\r
80       }\r
81       if (aanum > 20) {\r
82         aanum = 20;\r
83       }\r
84 \r
85       // Do the blosum thing\r
86       for (int j = 0;j < 20;j++) {\r
87         dbinary[i * nores + j] = ResidueProperties.getBLOSUM62()[aanum][j];\r
88       }\r
89 \r
90     }\r
91   }\r
92 \r
93   public String toBinaryString() {\r
94     String out = "";\r
95     for (int i=0; i < binary.length;i++) {\r
96       out += (new Integer(binary[i])).toString();\r
97       if (i < binary.length-1) {\r
98         out += " ";\r
99       }\r
100     }\r
101     return out;\r
102   }\r
103 \r
104   public double[] getDBinary() {\r
105     return dbinary;\r
106   }\r
107 \r
108   public static void printMemory(Runtime rt) {\r
109     System.out.println("DEBUG: Free memory = " + rt.freeMemory()); // log.\r
110   }\r
111 }\r