X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fforester%2FForesterMatrix.java;h=a12dc1dbae0f2826e8c45c715d5f1964e96fa739;hb=91bea2a1185e438bfd52fc1848cf615068016192;hp=daeec3b9b4771c1a23a65e1b6279acf503b9016d;hpb=eeb51330a8c0ad188e7b07597e66cbe090d9d160;p=jalview.git diff --git a/src/jalview/ext/forester/ForesterMatrix.java b/src/jalview/ext/forester/ForesterMatrix.java index daeec3b..a12dc1d 100644 --- a/src/jalview/ext/forester/ForesterMatrix.java +++ b/src/jalview/ext/forester/ForesterMatrix.java @@ -1,12 +1,15 @@ package jalview.ext.forester; -import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceI; import jalview.math.MatrixI; +import jalview.util.MessageManager; import java.io.IOException; import java.io.Writer; import java.text.DecimalFormat; import java.text.NumberFormat; +import java.util.NoSuchElementException; +import java.util.stream.IntStream; import org.forester.evoinference.matrix.distance.DistanceMatrix; import org.forester.util.ForesterUtil; @@ -19,50 +22,53 @@ public class ForesterMatrix implements DistanceMatrix private final MatrixI jalviewMatrix; - private Sequence[] sequences; + private final String[] identifiers; - private String[] identifiers; - - public ForesterMatrix(MatrixI jalviewInputMatrix, - Sequence[] matrixSequences) + public ForesterMatrix(final MatrixI jalviewInputMatrix, + final SequenceI[] matrixSequences) { this.jalviewMatrix = jalviewInputMatrix; - this.sequences = matrixSequences; - + this.identifiers = new String[matrixSequences.length]; - if (jalviewMatrix.width() != jalviewMatrix.height()) + int i = 0; + for (SequenceI sequence : matrixSequences) { - // some kind of warning? + identifiers[i] = sequence.getName(); + i++; } } - public ForesterMatrix(MatrixI jalviewInputMatrix, - String[] matrixIdentifiers) + public ForesterMatrix(final MatrixI jalviewInputMatrix, + final String[] matrixIdentifiers) { this.jalviewMatrix = jalviewInputMatrix; this.identifiers = matrixIdentifiers; - - if (jalviewMatrix.width() != jalviewMatrix.height()) - { - // some kind of warning? - } - - } @Override - public String getIdentifier(int i) + public String getIdentifier(final int i) { - // TODO Auto-generated method stub - return null; + return identifiers[i]; // add handling if index is out of bounds } + @Override - public int getIndex(String identifier) + public int getIndex(final String identifier) { - return 0; + try { + return IntStream.range(0, identifiers.length) + .filter(x -> identifier.equals(identifiers[x])).findAny() + .getAsInt(); // stream to bypass otherwise having to duplicate the + // list + // with Arrays.aslist + } + catch (NoSuchElementException ex) { + throw new Error(MessageManager.formatMessage( + "exception.invalid_matrix_identifier", new String[] + { identifier })); + } } /** @@ -76,27 +82,27 @@ public class ForesterMatrix implements DistanceMatrix /** * See {@link MatrixI#getValue(int,int)} except that the order of column, row - * in the parameters is inverted here + * in the parameters is inverted here (as that is how forester demands it) */ @Override - public double getValue(int col, int row) + public double getValue(final int col, final int row) { return jalviewMatrix.getValue(row, col); } @Override - public void setIdentifier(int i, String identifier) + public void setIdentifier(final int i, final String identifier) { - // TODO Auto-generated method stub + identifiers[i] = identifier; } /** * See {@link MatrixI#setValue()} except that the order of column, row in the - * parameters is inverted here + * parameters is inverted here (as that is how forester demands it) */ @Override - public void setValue(int col, int row, double distance) + public void setValue(final int col, final int row, final double distance) { jalviewMatrix.setValue(row, col, distance); @@ -119,7 +125,7 @@ public class ForesterMatrix implements DistanceMatrix } @Override - public void write(Writer w) throws IOException // directly copied from + public void write(final Writer w) throws IOException // directly copied from // forester { w.write(" "); @@ -156,5 +162,23 @@ public class ForesterMatrix implements DistanceMatrix } + public static DistanceMatrix convertJalviewToForester( + final MatrixI jalviewInputMatrix, + final SequenceI[] matrixSequences) + { + return DataConversions.createForesterDistanceMatrix( + jalviewInputMatrix, matrixSequences); + + } + + public static DistanceMatrix convertJalviewToForester( + final MatrixI jalviewInputMatrix, + final String[] matrixIdentifiers) + { + return DataConversions.createForesterDistanceMatrix( + jalviewInputMatrix, matrixIdentifiers); + + } + } \ No newline at end of file