X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2Fscoremodels%2FSmithWatermanModel.java;fp=src%2Fjalview%2Fanalysis%2Fscoremodels%2FSWScoreModel.java;h=ca6d27983c9dd221b222a2564392245b776e58d4;hb=f063821ed0be9c1581af74643a1aa5798731af65;hp=d5d998e45670e78b54193c2ff88ebd0d2a0cf173;hpb=fd18e2c73cd015d4e38ad91da0e5d7532ff0ef42;p=jalview.git diff --git a/src/jalview/analysis/scoremodels/SWScoreModel.java b/src/jalview/analysis/scoremodels/SmithWatermanModel.java similarity index 61% rename from src/jalview/analysis/scoremodels/SWScoreModel.java rename to src/jalview/analysis/scoremodels/SmithWatermanModel.java index d5d998e..ca6d279 100644 --- a/src/jalview/analysis/scoremodels/SWScoreModel.java +++ b/src/jalview/analysis/scoremodels/SmithWatermanModel.java @@ -21,23 +21,42 @@ package jalview.analysis.scoremodels; import jalview.analysis.AlignSeq; +import jalview.api.AlignmentViewPanel; import jalview.api.analysis.ScoreModelI; +import jalview.api.analysis.SimilarityParamsI; import jalview.datamodel.AlignmentView; import jalview.datamodel.SequenceI; +import jalview.math.Matrix; +import jalview.math.MatrixI; import jalview.util.Comparison; -public class SWScoreModel implements ScoreModelI +/** + * A class that computes pairwise similarity scores using the Smith-Waterman + * alignment algorithm + */ +public class SmithWatermanModel extends SimilarityScoreModel { + private static final String NAME = "Smith Waterman Score"; + + private String description; + + /** + * Constructor + */ + public SmithWatermanModel() + { + } @Override - public float[][] findDistances(AlignmentView seqData) + public MatrixI findSimilarities(AlignmentView seqData, + SimilarityParamsI options) { - SequenceI[] sequenceString = seqData.getVisibleAlignment( - Comparison.GapChars.charAt(0)).getSequencesArray(); + SequenceI[] sequenceString = seqData + .getVisibleAlignment(Comparison.GAP_SPACE).getSequencesArray(); int noseqs = sequenceString.length; - float[][] distance = new float[noseqs][noseqs]; + double[][] distances = new double[noseqs][noseqs]; - float max = -1; + double max = -1; for (int i = 0; i < (noseqs - 1); i++) { @@ -48,31 +67,22 @@ public class SWScoreModel implements ScoreModelI as.calcScoreMatrix(); as.traceAlignment(); as.printAlignment(System.out); - distance[i][j] = (float) as.maxscore; + distances[i][j] = as.maxscore; - if (max < distance[i][j]) + if (max < distances[i][j]) { - max = distance[i][j]; + max = distances[i][j]; } } } - for (int i = 0; i < (noseqs - 1); i++) - { - for (int j = i; j < noseqs; j++) - { - distance[i][j] = max - distance[i][j]; - distance[j][i] = distance[i][j]; - } - } - - return distance; + return new Matrix(distances); } @Override public String getName() { - return "Smith Waterman Score"; + return NAME; } @Override @@ -87,8 +97,15 @@ public class SWScoreModel implements ScoreModelI return true; } - public String toString() + @Override + public String getDescription() + { + return description; + } + + @Override + public ScoreModelI getInstance(AlignmentViewPanel avp) { - return "Score between two sequences aligned with Smith Waterman with default Peptide/Nucleotide matrix"; + return this; } }