X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2Fscoremodels%2FFeatureDistanceModel.java;h=9245898fa124d1c8b992bad1400327dff70edcb0;hb=7f5ab7d1f58d870622968e0e6a430f33403b8e4f;hp=04a7b143330693a2e922e89bed83105fd2d9da57;hpb=d6a30c6516e8e2f923c8c2f6dce7592cb3b7d974;p=jalview.git diff --git a/src/jalview/analysis/scoremodels/FeatureDistanceModel.java b/src/jalview/analysis/scoremodels/FeatureDistanceModel.java index 04a7b14..9245898 100644 --- a/src/jalview/analysis/scoremodels/FeatureDistanceModel.java +++ b/src/jalview/analysis/scoremodels/FeatureDistanceModel.java @@ -20,11 +20,15 @@ */ package jalview.analysis.scoremodels; -import jalview.api.analysis.DistanceModelI; +import jalview.api.AlignmentViewPanel; +import jalview.api.FeatureRenderer; +import jalview.api.analysis.DistanceScoreModelI; import jalview.api.analysis.ViewBasedAnalysisI; import jalview.datamodel.AlignmentView; import jalview.datamodel.SeqCigar; import jalview.datamodel.SequenceFeature; +import jalview.math.Matrix; +import jalview.math.MatrixI; import jalview.util.SetUtils; import java.util.HashMap; @@ -33,13 +37,14 @@ import java.util.List; import java.util.Map; import java.util.Set; -public class FeatureDistanceModel implements DistanceModelI, ViewBasedAnalysisI +public class FeatureDistanceModel implements DistanceScoreModelI, + ViewBasedAnalysisI { - jalview.api.FeatureRenderer fr; + FeatureRenderer fr; @Override - public boolean configureFromAlignmentView( - jalview.api.AlignmentViewPanel view) + public boolean configureFromAlignmentView(AlignmentViewPanel view) + { fr = view.cloneFeatureRenderer(); return true; @@ -53,16 +58,16 @@ public class FeatureDistanceModel implements DistanceModelI, ViewBasedAnalysisI * of columns processed. */ @Override - public float[][] findDistances(AlignmentView seqData) + public MatrixI findDistances(AlignmentView seqData) { List dft = fr.getDisplayedFeatureTypes(); SeqCigar[] seqs = seqData.getSequences(); int noseqs = seqs.length; int cpwidth = 0;// = seqData.getWidth(); - float[][] distance = new float[noseqs][noseqs]; + double[][] distances = new double[noseqs][noseqs]; if (dft.isEmpty()) { - return distance; + return new Matrix(distances); } // need to get real position for view position @@ -94,7 +99,7 @@ public class FeatureDistanceModel implements DistanceModelI, ViewBasedAnalysisI { int seqDistance = SetUtils.countDisjunction(sfap.get(seqs[i]), sfap.get(seqs[j])); - distance[i][j] += seqDistance; + distances[i][j] += seqDistance; } } } @@ -103,16 +108,18 @@ public class FeatureDistanceModel implements DistanceModelI, ViewBasedAnalysisI /* * normalise the distance scores (summed over columns) by the * number of visible columns used in the calculation + * and fill in the bottom half of the matrix */ + // TODO JAL-2424 cpwidth may be out by 1 - affects scores but not tree shape for (int i = 0; i < noseqs; i++) { for (int j = i + 1; j < noseqs; j++) { - distance[i][j] /= cpwidth; - distance[j][i] = distance[i][j]; + distances[i][j] /= cpwidth; + distances[j][i] = distances[i][j]; } } - return distance; + return new Matrix(distances); } /**