apply gpl development license
[jalview.git] / src / jalview / schemes / ScoreMatrix.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)\r
3  * Copyright (C) 2009 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.schemes;\r
20 \r
21 public class ScoreMatrix\r
22 {\r
23   String name;\r
24 \r
25   /**\r
26    * reference to integer score matrix\r
27    */\r
28   int[][] matrix;\r
29 \r
30   /**\r
31    * 0 for Protein Score matrix. 1 for dna score matrix\r
32    */\r
33   int type;\r
34 \r
35   ScoreMatrix(String name, int[][] matrix, int type)\r
36   {\r
37     this.matrix = matrix;\r
38     this.type = type;\r
39   }\r
40 \r
41   public boolean isDNA()\r
42   {\r
43     return type == 1;\r
44   }\r
45 \r
46   public boolean isProtein()\r
47   {\r
48     return type == 0;\r
49   }\r
50 \r
51   public int[][] getMatrix()\r
52   {\r
53     return matrix;\r
54   }\r
55 \r
56   /**\r
57    * \r
58    * @param A1\r
59    * @param A2\r
60    * @return score for substituting first char in A1 with first char in A2\r
61    */\r
62   public int getPairwiseScore(String A1, String A2)\r
63   {\r
64     return getPairwiseScore(A1.charAt(0), A2.charAt(0));\r
65   }\r
66 \r
67   public int getPairwiseScore(char c, char d)\r
68   {\r
69     int pog = 0;\r
70 \r
71     try\r
72     {\r
73       int a = (type == 0) ? ResidueProperties.aaIndex[c]\r
74               : ResidueProperties.nucleotideIndex[c];\r
75       int b = (type == 0) ? ResidueProperties.aaIndex[d]\r
76               : ResidueProperties.nucleotideIndex[d];\r
77 \r
78       pog = matrix[a][b];\r
79     } catch (Exception e)\r
80     {\r
81       // System.out.println("Unknown residue in " + A1 + " " + A2);\r
82     }\r
83 \r
84     return pog;\r
85   }\r
86 \r
87 }\r