* 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.analysis;\r
\r
import jalview.datamodel.*;\r
-import jalview.util.*;\r
-import java.util.*;\r
\r
-public class AlignmentUtil {\r
+import jalview.util.*;\r
\r
- private AlignmentUtil() {\r
- }\r
+import java.util.*;\r
\r
- public static int[][] percentIdentity2(AlignmentI align) {\r
- return percentIdentity2(align,0,align.getWidth()-1);\r
- }\r
\r
- public static int[][] percentIdentity2(AlignmentI align, int start, int end) {\r
- int [][] cons2 = new int[align.getWidth()][24];\r
- // Initialize the array\r
- for (int j=0;j<24;j++) {\r
- for (int i=0; i < align.getWidth();i++) {\r
- cons2[i][j] = 0;\r
- }\r
+public class AlignmentUtil {\r
+ private AlignmentUtil() {\r
}\r
\r
- return cons2;\r
- }\r
- public static int getPixelHeight(int i, int j,int charHeight) {\r
- int h=0;\r
- while (i < j) {\r
- h += charHeight;\r
- i++;\r
+ public static int[][] percentIdentity2(AlignmentI align) {\r
+ return percentIdentity2(align, 0, align.getWidth() - 1);\r
}\r
- return h;\r
- }\r
-\r
-\r
- public static Vector substitution_rates (AlignmentI align, int start, int end) {\r
-\r
- Vector rates = new Vector();\r
-\r
- int len = (end-start+1);\r
-\r
- // Turn seqs into char arrays\r
-\r
- int[][] seqint = new int[align.getHeight()][len];\r
-\r
-\r
- for (int j = 0; j < align.getHeight(); j++) {\r
-\r
- SequenceI seq = align.getSequenceAt(j);\r
-\r
- for (int i = 0 ; i < len; i++) {\r
- char c = seq.getCharAt(start + i - 1);\r
-\r
- if (c == 'A') {\r
- seqint[j][i] = 0;\r
- } else if (c == 'C') {\r
- seqint[j][i] = 1;\r
- } else if (c == 'T') {\r
- seqint[j][i] = 2;\r
- } else if (c == 'G') {\r
- seqint[j][i] = 3;\r
- } else {\r
- seqint[j][i] = -1;\r
- }\r
-\r
- }\r
-\r
- }\r
-\r
-\r
- // print_matrix(seqint,2,len); for (int j = 0; j < align.getHeight(); j++) {\r
-\r
- for (int j = 0; j < align.getHeight(); j++) {\r
-\r
- for (int k = 0; k < align.getHeight(); k++) {\r
-\r
- int counts[][] = new int[4][4];\r
- int tot = 0;\r
- int tots[] = new int[4];\r
- int fulltot = 0;\r
- int fulltots[] = new int[4];\r
-\r
- for (int i = 0 ; i < len; i++) {\r
-\r
- if (k != j) {\r
\r
- // System.out.println("Seq " + j + " " + k + " " + i + " " + seqint[j][i] + " " + seqint[k][i]);\r
- if (seqint[j][i] >= 0 &&\r
- seqint[k][i] >= 0) {\r
- counts[seqint[k][i]][seqint[j][i]]++;\r
+ public static int[][] percentIdentity2(AlignmentI align, int start, int end) {\r
+ int[][] cons2 = new int[align.getWidth()][24];\r
\r
- // print_matrix(counts,4,4);\r
- tots[seqint[j][i]]++;\r
- tot++;\r
- }\r
- if (seqint[j][i] != -1) {\r
- fulltots[seqint[j][i]]++;\r
- fulltot++;\r
- }\r
- }\r
- }\r
+ // Initialize the array\r
+ for (int j = 0; j < 24; j++) {\r
+ for (int i = 0; i < align.getWidth(); i++) {\r
+ cons2[i][j] = 0;\r
+ }\r
+ }\r
\r
- if (k != j) {\r
-\r
- System.out.println();\r
-\r
- System.out.println("Sequence " + align.getSequenceAt(j).getName() + " " + align.getSequenceAt(k).getName());\r
-\r
- System.out.println();\r
- print_matrix(counts,4,4);\r
- System.out.println();\r
-\r
-\r
-\r
- double[][] out = new double[4][4];// = constant_multiply_matrix(counts,1.0/tot,4,4);\r
-\r
- for (int i = 0; i < 4; i++) {\r
- for (int jj = 0; jj < 4; jj++) {\r
- out[i][jj] = (double)counts[i][jj]/tots[jj];\r
- }\r
- }\r
-\r
- print_matrix(out,4,4);\r
- System.out.println();\r
-\r
-\r
- System.out.print("RATES\t");\r
- System.out.print(align.getSequenceAt(j).getName() + "\t" + align.getSequenceAt(k).getName() + "\t");\r
-\r
- for (int i = 0; i < 4; i++) {\r
- for (int jj = 0; jj < 4; jj++) {\r
- Format.print(System.out,"%4.3f\t",out[i][jj]);\r
- }\r
- }\r
- System.out.println();\r
-\r
- for (int i = 0; i < 4; i++) {\r
- Format.print(System.out,"%4.3f\t",(double)fulltots[i]*1.0/fulltot);\r
- }\r
-\r
- System.out.println();\r
- System.out.print("\nGC ");\r
-\r
- Format.print(System.out,"%4.3f\t",(double)(100*fulltots[1]+fulltots[3])/fulltot);\r
-\r
- System.out.print((fulltots[1]+fulltots[3]) + "\t" + fulltot);\r
+ return cons2;\r
+ }\r
\r
+ public static int getPixelHeight(int i, int j, int charHeight) {\r
+ int h = 0;\r
\r
- System.out.println();\r
+ while (i < j) {\r
+ h += charHeight;\r
+ i++;\r
+ }\r
\r
- rates.addElement(out);\r
- }\r
+ return h;\r
+ }\r
\r
- }\r
- }\r
- return rates;\r
+ public static Vector substitution_rates(AlignmentI align, int start, int end) {\r
+ Vector rates = new Vector();\r
+\r
+ int len = (end - start + 1);\r
+\r
+ // Turn seqs into char arrays\r
+ int[][] seqint = new int[align.getHeight()][len];\r
+\r
+ for (int j = 0; j < align.getHeight(); j++) {\r
+ SequenceI seq = align.getSequenceAt(j);\r
+\r
+ for (int i = 0; i < len; i++) {\r
+ char c = seq.getCharAt((start + i) - 1);\r
+\r
+ if (c == 'A') {\r
+ seqint[j][i] = 0;\r
+ } else if (c == 'C') {\r
+ seqint[j][i] = 1;\r
+ } else if (c == 'T') {\r
+ seqint[j][i] = 2;\r
+ } else if (c == 'G') {\r
+ seqint[j][i] = 3;\r
+ } else {\r
+ seqint[j][i] = -1;\r
+ }\r
+ }\r
+ }\r
+\r
+ // print_matrix(seqint,2,len); for (int j = 0; j < align.getHeight(); j++) {\r
+ for (int j = 0; j < align.getHeight(); j++) {\r
+ for (int k = 0; k < align.getHeight(); k++) {\r
+ int[][] counts = new int[4][4];\r
+ int tot = 0;\r
+ int[] tots = new int[4];\r
+ int fulltot = 0;\r
+ int[] fulltots = new int[4];\r
+\r
+ for (int i = 0; i < len; i++) {\r
+ if (k != j) {\r
+ // System.out.println("Seq " + j + " " + k + " " + i + " " + seqint[j][i] + " " + seqint[k][i]);\r
+ if ((seqint[j][i] >= 0) && (seqint[k][i] >= 0)) {\r
+ counts[seqint[k][i]][seqint[j][i]]++;\r
+\r
+ // print_matrix(counts,4,4);\r
+ tots[seqint[j][i]]++;\r
+ tot++;\r
+ }\r
+\r
+ if (seqint[j][i] != -1) {\r
+ fulltots[seqint[j][i]]++;\r
+ fulltot++;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (k != j) {\r
+ System.out.println();\r
+\r
+ System.out.println("Sequence " +\r
+ align.getSequenceAt(j).getName() + " " +\r
+ align.getSequenceAt(k).getName());\r
+\r
+ System.out.println();\r
+ print_matrix(counts, 4, 4);\r
+ System.out.println();\r
+\r
+ double[][] out = new double[4][4]; // = constant_multiply_matrix(counts,1.0/tot,4,4);\r
+\r
+ for (int i = 0; i < 4; i++) {\r
+ for (int jj = 0; jj < 4; jj++) {\r
+ out[i][jj] = (double) counts[i][jj] / tots[jj];\r
+ }\r
+ }\r
+\r
+ print_matrix(out, 4, 4);\r
+ System.out.println();\r
+\r
+ System.out.print("RATES\t");\r
+ System.out.print(align.getSequenceAt(j).getName() + "\t" +\r
+ align.getSequenceAt(k).getName() + "\t");\r
+\r
+ for (int i = 0; i < 4; i++) {\r
+ for (int jj = 0; jj < 4; jj++) {\r
+ Format.print(System.out, "%4.3f\t", out[i][jj]);\r
+ }\r
+ }\r
+\r
+ System.out.println();\r
+\r
+ for (int i = 0; i < 4; i++) {\r
+ Format.print(System.out, "%4.3f\t",\r
+ ((double) fulltots[i] * 1.0) / fulltot);\r
+ }\r
+\r
+ System.out.println();\r
+ System.out.print("\nGC ");\r
+\r
+ Format.print(System.out, "%4.3f\t",\r
+ (double) ((100 * fulltots[1]) + fulltots[3]) / fulltot);\r
+\r
+ System.out.print((fulltots[1] + fulltots[3]) + "\t" +\r
+ fulltot);\r
+\r
+ System.out.println();\r
+\r
+ rates.addElement(out);\r
+ }\r
+ }\r
+ }\r
+\r
+ return rates;\r
}\r
\r
- public static double[][] constant_multiply_matrix(int[][] matrix, double c,int n, int m) {\r
- double[][] out = new double[n][m];\r
+ public static double[][] constant_multiply_matrix(int[][] matrix, double c,\r
+ int n, int m) {\r
+ double[][] out = new double[n][m];\r
\r
- for (int i = 0; i < n; i++) {\r
- for (int j = 0; j < m; j++) {\r
+ for (int i = 0; i < n; i++) {\r
+ for (int j = 0; j < m; j++) {\r
+ out[i][j] = matrix[i][j] * c;\r
+ }\r
+ }\r
\r
- out[i][j] = matrix[i][j]*c;\r
- }\r
- }\r
- return out;\r
+ return out;\r
}\r
\r
-\r
public static void print_matrix(int[][] matrix, int n, int m) {\r
+ for (int i = 0; i < n; i++) {\r
+ for (int j = 0; j < m; j++) {\r
+ System.out.print(matrix[i][j] + "\t");\r
+ }\r
\r
-\r
- for (int i = 0; i < n; i++) {\r
- for (int j = 0; j < m; j++) {\r
-\r
- System.out.print(matrix[i][j] + "\t");\r
- }\r
- System.out.println();\r
- }\r
+ System.out.println();\r
+ }\r
}\r
- public static void print_matrix(double[][] matrix, int n, int m) {\r
-\r
-\r
- for (int i = 0; i < n; i++) {\r
- for (int j = 0; j < m; j++) {\r
\r
- Format.print(System.out,"%4.3f\t",matrix[i][j]);\r
+ public static void print_matrix(double[][] matrix, int n, int m) {\r
+ for (int i = 0; i < n; i++) {\r
+ for (int j = 0; j < m; j++) {\r
+ Format.print(System.out, "%4.3f\t", matrix[i][j]);\r
+ }\r
\r
- }\r
- System.out.println();\r
- }\r
+ System.out.println();\r
+ }\r
}\r
-\r
-\r
}\r