X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FScoreMatrix.java;h=895ee86c5f56684a7446d88240610889dfb319a3;hb=aa213924876640ba82e866da5a750d9cdaa816d2;hp=03b6778cf32828bef78cdbc71423111c633c6f2a;hpb=a442f71fc61f1b8b41cedd2c2fd78a5c5323bafb;p=jalview.git diff --git a/src/jalview/schemes/ScoreMatrix.java b/src/jalview/schemes/ScoreMatrix.java index 03b6778..895ee86 100644 --- a/src/jalview/schemes/ScoreMatrix.java +++ b/src/jalview/schemes/ScoreMatrix.java @@ -1,28 +1,57 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * + * This file is part of Jalview. + * + * Jalview 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 3 of the License, or (at your option) any later version. + * + * Jalview 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 Jalview. If not, see . + */ package jalview.schemes; -public class ScoreMatrix { +public class ScoreMatrix +{ String name; + /** * reference to integer score matrix */ int[][] matrix; + /** * 0 for Protein Score matrix. 1 for dna score matrix */ int type; - ScoreMatrix(String name, int[][] matrix, int type) { - this.matrix=matrix; - this.type=type; + + ScoreMatrix(String name, int[][] matrix, int type) + { + this.matrix = matrix; + this.type = type; } - public boolean isDNA() { - return type==1; + + public boolean isDNA() + { + return type == 1; } - public boolean isProtein() { - return type==0; + + public boolean isProtein() + { + return type == 0; } - public int[][] getMatrix() { + + public int[][] getMatrix() + { return matrix; } + /** * * @param A1 @@ -31,24 +60,81 @@ public class ScoreMatrix { */ public int getPairwiseScore(String A1, String A2) { - return getPairwiseScore(A1.charAt(0),A2.charAt(0)); + return getPairwiseScore(A1.charAt(0), A2.charAt(0)); } - public int getPairwiseScore(char c, char d) { + + public int getPairwiseScore(char c, char d) + { int pog = 0; try { - int a = (type==0) ? ResidueProperties.aaIndex[c] : ResidueProperties.nucleotideIndex[c]; - int b = (type==0) ? ResidueProperties.aaIndex[d] : ResidueProperties.nucleotideIndex[d]; + int a = (type == 0) ? ResidueProperties.aaIndex[c] + : ResidueProperties.nucleotideIndex[c]; + int b = (type == 0) ? ResidueProperties.aaIndex[d] + : ResidueProperties.nucleotideIndex[d]; pog = matrix[a][b]; - } - catch (Exception e) + } catch (Exception e) { - //System.out.println("Unknown residue in " + A1 + " " + A2); + // System.out.println("Unknown residue in " + A1 + " " + A2); } return pog; } + /** + * pretty print the matrix + */ + public String toString() + { + return outputMatrix(false); + } + public String outputMatrix(boolean html) + { + StringBuffer sb=new StringBuffer(); + int[] symbols=(type==0) ? ResidueProperties.aaIndex : ResidueProperties.nucleotideIndex; + int symMax = (type==0) ? ResidueProperties.maxProteinIndex :ResidueProperties.maxNucleotideIndex; + boolean header=true; + if (html) + { + sb.append(""); + } + for (char sym='A';sym<='Z';sym++) + { + if (symbols[sym]>=0 && symbols[sym]" : ""); + for (char sym2='A';sym2<='Z';sym2++) + { + if (symbols[sym2]>=0 && symbols[sym2] " : "\t")+sym2 +(html ? " ": "")); + } + } + header=false; + sb.append(html ? "\n" : "\n"); + } + if (html) + { + sb.append(""); + } + sb.append((html ? "" : "")); + for (char sym2='A';sym2<='Z';sym2++) + { + if (symbols[sym2]>=0 && symbols[sym2]" : "\t")+matrix[symbols[sym]][symbols[sym2]]+(html ? "" : "")); + } + } + sb.append(html ? "\n" : "\n"); + } + } + if (html) + { + sb.append("
" : "")+sym+(html ? "
"); + } + return sb.toString(); + } }