JAL-1521 updated xerces to 2.11 along with xml-apis
[jalview.git] / src / jalview / analysis / scoremodels / PairwiseSeqScoreModel.java
1 package jalview.analysis.scoremodels;
2
3 import jalview.api.analysis.ScoreModelI;
4 import jalview.datamodel.AlignmentView;
5 import jalview.schemes.ScoreMatrix;
6 import jalview.util.Comparison;
7
8 public abstract class PairwiseSeqScoreModel implements ScoreModelI
9 {
10   abstract public int getPairwiseScore(char c, char d);
11
12   public float[][] findDistances(AlignmentView seqData)
13   {
14     String[] sequenceString = seqData
15             .getSequenceStrings(Comparison.GapChars.charAt(0));
16     int noseqs = sequenceString.length;
17     float[][] distance = new float[noseqs][noseqs];
18
19     int maxscore = 0;
20     int end = sequenceString[0].length();
21     for (int i = 0; i < (noseqs - 1); i++)
22     {
23       for (int j = i; j < noseqs; j++)
24       {
25         int score = 0;
26
27         for (int k = 0; k < end; k++)
28         {
29           try
30           {
31             score += getPairwiseScore(sequenceString[i].charAt(k),
32                     sequenceString[j].charAt(k));
33           } catch (Exception ex)
34           {
35             System.err.println("err creating " + getName() + " tree");
36             ex.printStackTrace();
37           }
38         }
39
40         distance[i][j] = (float) score;
41
42         if (score > maxscore)
43         {
44           maxscore = score;
45         }
46       }
47     }
48
49     for (int i = 0; i < (noseqs - 1); i++)
50     {
51       for (int j = i; j < noseqs; j++)
52       {
53         distance[i][j] = (float) maxscore - distance[i][j];
54         distance[j][i] = distance[i][j];
55       }
56     }
57     return distance;
58   }
59
60   abstract public int[][] getMatrix();
61 }