X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FTreeBuilder.java;h=effef9a405fe3140b0f47f439b81f0ed5d285f6a;hb=679516a6afeb014dec5a3d8a346ef5a5583dc5b2;hp=5347ba23cb8a9723b8f2d31ab49d05561c92bc85;hpb=a58c1f3005f962f3d48043e38fd5e621081eb9b0;p=jalview.git diff --git a/src/jalview/analysis/TreeBuilder.java b/src/jalview/analysis/TreeBuilder.java index 5347ba2..effef9a 100644 --- a/src/jalview/analysis/TreeBuilder.java +++ b/src/jalview/analysis/TreeBuilder.java @@ -1,9 +1,7 @@ package jalview.analysis; -import jalview.api.analysis.DistanceScoreModelI; import jalview.api.analysis.ScoreModelI; import jalview.api.analysis.SimilarityParamsI; -import jalview.api.analysis.SimilarityScoreModelI; import jalview.datamodel.AlignmentView; import jalview.datamodel.CigarArray; import jalview.datamodel.SeqCigar; @@ -253,6 +251,12 @@ public abstract class TreeBuilder findMaxDist(top); } + /** + * Returns the minimum distance between two clusters, and also sets the + * indices of the clusters in fields mini and minj + * + * @return + */ protected abstract double findMinDistance(); /** @@ -270,22 +274,7 @@ public abstract class TreeBuilder */ protected void computeTree(ScoreModelI sm, SimilarityParamsI scoreOptions) { - if (sm instanceof DistanceScoreModelI) - { - distances = ((DistanceScoreModelI) sm).findDistances(seqData, - scoreOptions); - } - else if (sm instanceof SimilarityScoreModelI) - { - /* - * compute similarity and invert it to give a distance measure - * reverseRange(true) converts maximum similarity to zero distance - */ - MatrixI result = ((SimilarityScoreModelI) sm).findSimilarities( - seqData, scoreOptions); - result.reverseRange(true); - distances = result; - } + distances = sm.findDistances(seqData, scoreOptions); makeLeaves(); @@ -295,10 +284,10 @@ public abstract class TreeBuilder } /** - * DOCUMENT ME! + * Finds the node, at or below the given node, with the maximum distance, and + * saves the node and the distance value * * @param nd - * DOCUMENT ME! */ void findMaxDist(SequenceNode nd) { @@ -325,14 +314,12 @@ public abstract class TreeBuilder } /** - * DOCUMENT ME! + * Calculates and returns r, whatever that is * * @param i - * DOCUMENT ME! * @param j - * DOCUMENT ME! * - * @return DOCUMENT ME! + * @return */ protected double findr(int i, int j) { @@ -428,8 +415,12 @@ public abstract class TreeBuilder done.set(j); } - protected abstract void findNewDistances(SequenceNode tmpi, SequenceNode tmpj, - double dist); + /* + * Computes and stores new distances for nodei and nodej, given the previous + * distance between them + */ + protected abstract void findNewDistances(SequenceNode nodei, + SequenceNode nodej, double previousDistance); /** * Calculates and saves the distance between the combination of cluster(i) and