package jalview.math; import java.io.PrintStream; public interface MatrixI { /** * Answers the number of columns * * @return */ int width(); /** * Answers the number of rows * * @return */ int height(); /** * Answers the value at row i, column j * * @param i * @param j * @return */ 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 */ double[] getRow(int i); MatrixI copy(); MatrixI transpose(); MatrixI preMultiply(MatrixI m); MatrixI postMultiply(MatrixI m); double[] getD(); double[] getE(); void print(PrintStream ps, String format); void printD(PrintStream ps, String format); void printE(PrintStream ps, String format); void tqli() throws Exception; 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 a 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 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); }