1 package jalview.analysis.scoremodels;
5 import jalview.analysis.AlignSeq;
6 import jalview.api.analysis.ScoreModelI;
7 import jalview.api.analysis.ViewBasedAnalysisI;
8 import jalview.datamodel.AlignmentView;
9 import jalview.datamodel.SeqCigar;
10 import jalview.datamodel.SequenceFeature;
11 import jalview.datamodel.SequenceI;
12 import jalview.util.Comparison;
14 public class FeatureScoreModel implements ScoreModelI,ViewBasedAnalysisI
16 jalview.api.FeatureRenderer fr;
19 public boolean configureFromAlignmentView(jalview.api.AlignmentViewPanel view)
21 fr = view.cloneFeatureRenderer();
26 public float[][] findDistances(AlignmentView seqData)
29 SequenceI[] sequenceString = seqData
30 .getVisibleAlignment(Comparison.GapChars.charAt(0)).getSequencesArray();
31 int noseqs = sequenceString.length;
32 int cpwidth = seqData.getWidth();
33 float[][] distance = new float[noseqs][noseqs];
35 for (int cpos = 0;cpos<cpwidth;cpos++)
37 // get visible features at cpos under view's display settings and compare them
38 for (int i = 0; i < (noseqs - 1); i++)
40 SequenceFeature[] sf = fr.getVisible(sequenceString[i],cpos);
41 for (int j=i+1;j<noseqs;j++)
43 SequenceFeature[] jsf = fr.getVisible(sequenceString[i],cpos);
46 if (max < distance[i][j])
54 for (int i = 0; i < (noseqs - 1); i++)
56 for (int j = i; j < noseqs; j++)
58 distance[i][j] = max - distance[i][j];
59 distance[j][i] = distance[i][j];
67 public String getName()
69 return "Smith Waterman Score";
72 public boolean isDNA()
77 public boolean isProtein()
81 public String toString() {
82 return "Score between two sequences aligned with Smith Waterman with default Peptide/Nucleotide matrix";