X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=blobdiff_plain;f=src%2Fjalview%2Fmath%2FMatrixI.java;fp=src%2Fjalview%2Fmath%2FMatrixI.java;h=94b933349d2352474331b8d0961a394909ae5e49;hp=d74a98b4909ba85697c94de032a4356f6c7ddd15;hb=0288494d034d48dd8ce0c5a8654ac2ee695b4573;hpb=7451c6419c9c94627f79d044228db55b90e9b4cf diff --git a/src/jalview/math/MatrixI.java b/src/jalview/math/MatrixI.java index d74a98b..94b9333 100644 --- a/src/jalview/math/MatrixI.java +++ b/src/jalview/math/MatrixI.java @@ -28,6 +28,15 @@ public interface MatrixI double getValue(int i, int j); /** + * Sets the value at row i, colum j + * + * @param i + * @param j + * @param d + */ + void setValue(int i, int j, double d); + + /** * Answers a copy of the values in the i'th row * * @return @@ -56,4 +65,33 @@ public interface MatrixI void tred(); + /** + * Reverses the range of the matrix values, so that the smallest values become + * the largest, and the largest become the smallest. This operation supports + * using a distance measure as a similarity measure, or vice versa. + *

+ * If parameter maxToZero is true, then the maximum value becomes + * zero, i.e. all values are subtracted from the maximum. This is consistent + * with converting an identity similarity score to a distance score - the most + * similar (identity) corresponds to zero distance. However note that the + * operation is not reversible (unless the original minimum value is zero). + * For example a range of 10-40 would become 30-0, which would reverse a + * second time to 0-30. Also note that a general similarity measure (such as + * BLOSUM) may give different 'identity' scores for different sequences, so + * they cannot all convert to zero distance. + *

+ * If parameter maxToZero is false, then the values are reflected + * about the average of {min, max} (effectively swapping min and max). This + * operation is reversible. + * + * @param maxToZero + */ + void reverseRange(boolean maxToZero); + + /** + * Multiply all entries by the given value + * + * @param d + */ + void multiply(double d); }