protected MatrixI findSimilarities(String[] seqs,
SimilarityParamsI options)
{
- // TODO reuse code in ScoreMatrix instead somehow
- double[][] values = new double[seqs.length][];
+ /*
+ * calculation is symmetric so just compute lower diagonal
+ */
+ double[][] values = new double[seqs.length][seqs.length];
for (int row = 0; row < seqs.length; row++)
{
- values[row] = new double[seqs.length];
- for (int col = 0; col < seqs.length; col++)
+ for (int col = row; col < seqs.length; col++)
{
double total = computePID(seqs[row], seqs[col], options);
values[row][col] = total;
+ values[col][row] = total;
}
}
return new Matrix(values);