AdjustAnnotations needs position, number and insert
[jalview.git] / src / jalview / datamodel / BinarySequence.java
index 63c8d86..a9e80b8 100755 (executable)
-/*\r
-* Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
-*\r
-* This program is free software; you can redistribute it and/or\r
-* modify it under the terms of the GNU General Public License\r
-* as published by the Free Software Foundation; either version 2\r
-* of the License, or (at your option) any later version.\r
-*\r
-* This program is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-* GNU General Public License for more details.\r
-*\r
-* You should have received a copy of the GNU General Public License\r
-* along with this program; if not, write to the Free Software\r
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
-*/\r
-\r
-package jalview.datamodel;\r
-\r
-import jalview.io.*;\r
-import jalview.analysis.PCA;\r
-import jalview.jbgui.*;\r
-import jalview.schemes.*;\r
-\r
-import java.awt.*;\r
-\r
-public class BinarySequence extends Sequence {\r
-  int[] binary;\r
-  double[] dbinary;\r
-\r
-  public BinarySequence(SequenceI s) {\r
-    super(s.getName(),s.getSequence(),s.getStart(),s.getEnd());\r
-  }\r
-\r
-  public BinarySequence(String name, String sequence, int start, int end) {\r
-    super(name,sequence,start,end);\r
-  }\r
-\r
-  public void encode() {\r
-    // Set all matrix to 0\r
-    dbinary = new double[getSequence().length() * 21];\r
-    int nores = 21;\r
-    for (int i = 0; i < dbinary.length; i++) {\r
-      dbinary[i] = 0.0;\r
-    }\r
-\r
-    for (int i=0; i < getSequence().length(); i++ ) {\r
-      int aanum = 20;\r
-      try {\r
-        aanum = ((Integer)ResidueProperties.getAAHash().get(getSequence().substring(i,i+1))).intValue();\r
-      } catch (NullPointerException e) {\r
-        aanum = 20;\r
-      }\r
-      if (aanum > 20) {\r
-        aanum = 20;\r
-      }\r
-\r
-      dbinary[i* nores + aanum] = 1.0;\r
-\r
-    }\r
-  }\r
-\r
-  public void blosumEncode() {\r
-\r
-    // Set all matrix to 0\r
-    dbinary = new double[getSequence().length() * 21];\r
-    int nores = 21;\r
-    //for (int i = 0; i < dbinary.length; i++) {\r
-    //  dbinary[i] = 0.0;\r
-    //}\r
-\r
-    for (int i=0; i < getSequence().length(); i++ ) {\r
-      int aanum = 20;\r
-      try {\r
-        aanum = ((Integer)ResidueProperties.getAAHash().get(getSequence().substring(i,i+1))).intValue();\r
-      } catch (NullPointerException e) {\r
-        aanum = 20;\r
-      }\r
-      if (aanum > 20) {\r
-        aanum = 20;\r
-      }\r
-\r
-      // Do the blosum thing\r
-      for (int j = 0;j < 20;j++) {\r
-        dbinary[i * nores + j] = ResidueProperties.getBLOSUM62()[aanum][j];\r
-      }\r
-\r
-    }\r
-  }\r
-\r
-  public String toBinaryString() {\r
-    String out = "";\r
-    for (int i=0; i < binary.length;i++) {\r
-      out += (new Integer(binary[i])).toString();\r
-      if (i < binary.length-1) {\r
-        out += " ";\r
-      }\r
-    }\r
-    return out;\r
-  }\r
-\r
-  public double[] getDBinary() {\r
-    return dbinary;\r
-  }\r
-\r
-  public static void printMemory(Runtime rt) {\r
-    System.out.println("DEBUG: Free memory = " + rt.freeMemory()); // log.\r
-  }\r
-}\r
+/*
+* Jalview - A Sequence Alignment Editor and Viewer
+* Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+*/
+package jalview.datamodel;
+
+import jalview.schemes.*;
+
+
+
+/**
+ * DOCUMENT ME!
+ *
+ * @author $author$
+ * @version $Revision$
+ */
+public class BinarySequence extends Sequence
+{
+    int[] binary;
+    double[] dbinary;
+
+    /**
+     * Creates a new BinarySequence object.
+     *
+     * @param s DOCUMENT ME!
+     */
+    public BinarySequence(String s)
+    {
+        super("", s, 0, s.length());
+    }
+
+    /**
+     * DOCUMENT ME!
+     */
+    public void encode()
+    {
+        // Set all matrix to 0
+        dbinary = new double[getSequence().length * 21];
+
+        int nores = 21;
+
+        for (int i = 0; i < dbinary.length; i++)
+        {
+            dbinary[i] = 0.0;
+        }
+
+        for (int i = 0; i < getSequence().length; i++)
+        {
+            int aanum = 20;
+
+            try
+            {
+                aanum = ResidueProperties.aaIndex[getCharAt(i)];
+            }
+            catch (NullPointerException e)
+            {
+                aanum = 20;
+            }
+
+            if (aanum > 20)
+            {
+                aanum = 20;
+            }
+
+            dbinary[(i * nores) + aanum] = 1.0;
+        }
+    }
+    /**
+     * ancode using substitution matrix given in matrix
+     * @param matrix
+     */
+    public void matrixEncode(ScoreMatrix matrix) {
+      matrixEncode(matrix.isDNA()?ResidueProperties.nucleotideIndex: ResidueProperties.aaIndex, matrix.getMatrix());
+    }
+    /**
+     * DOCUMENT ME!
+     */
+    public void blosumEncode()
+    {
+      matrixEncode(ResidueProperties.aaIndex, ResidueProperties.getBLOSUM62());
+    }
+    private void matrixEncode(int[] aaIndex, int[][] matrix) {
+      // Set all matrix to 0
+        dbinary = new double[getSequence().length * 21];
+
+        int nores = 21;
+
+        //for (int i = 0; i < dbinary.length; i++) {
+        //  dbinary[i] = 0.0;
+        //}
+        for (int i = 0; i < getSequence().length; i++)
+        {
+            int aanum = 20;
+
+            try
+            {
+                aanum = aaIndex[getCharAt(i)];
+            }
+            catch (NullPointerException e)
+            {
+                aanum = 20;
+            }
+
+            if (aanum > 20)
+            {
+                aanum = 20;
+            }
+
+            // Do the blosum thing
+       
+            for (int j = 0; j < 20; j++)
+            {
+                dbinary[(i * nores) + j] = matrix[aanum][j];
+            }
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @return DOCUMENT ME!
+     */
+    public String toBinaryString()
+    {
+        String out = "";
+
+        for (int i = 0; i < binary.length; i++)
+        {
+            out += (new Integer(binary[i])).toString();
+
+            if (i < (binary.length - 1))
+            {
+                out += " ";
+            }
+        }
+
+        return out;
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @return DOCUMENT ME!
+     */
+    public double[] getDBinary()
+    {
+        return dbinary;
+    }
+
+}