d8c62303692e7e415492ab00d6ff26fee9fb7518
[jalview.git] / src / jalview / analysis / scoremodels / SWScoreModel.java
1 package jalview.analysis.scoremodels;
2
3 import jalview.analysis.AlignSeq;
4 import jalview.api.analysis.ScoreModelI;
5 import jalview.datamodel.AlignmentView;
6 import jalview.datamodel.SequenceI;
7 import jalview.util.Comparison;
8
9 public class SWScoreModel implements ScoreModelI
10 {
11
12   @Override
13   public float[][] findDistances(AlignmentView seqData)
14   {
15     SequenceI[] sequenceString = seqData
16             .getVisibleAlignment(Comparison.GapChars.charAt(0)).getSequencesArray();
17     int noseqs = sequenceString.length;
18     float[][] distance = new float[noseqs][noseqs];
19     
20      float max = -1;
21       
22       for (int i = 0; i < (noseqs - 1); i++) { for (int j = i; j < noseqs; j++)
23       { AlignSeq as = new AlignSeq(sequenceString[i], sequenceString[j], seqData.isNa() ? "dna" : "pep");
24       as.calcScoreMatrix(); as.traceAlignment(); as.printAlignment(System.out);
25       distance[i][j] = (float) as.maxscore;
26       
27       if (max < distance[i][j]) { max = distance[i][j]; } } }
28      
29       for (int i = 0; i < (noseqs - 1); i++) { for (int j = i; j < noseqs; j++)
30       { distance[i][j] = max - distance[i][j]; distance[j][i] = distance[i][j];
31       } } 
32      
33     return distance;
34   }
35
36   @Override
37   public String getName()
38   {
39     return "Smith Waterman Score";
40   }
41   @Override
42   public boolean isDNA()
43   {
44     return true;
45   }
46   @Override
47   public boolean isProtein()
48   {
49     return true;
50   }
51   public String toString() {
52     return "Score between two sequences aligned with Smith Waterman with default Peptide/Nucleotide matrix";
53   }
54 }