X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAlignSeq.java;h=edf19ec9593dd7418a7ae194f0e3612ba9f73f32;hb=85299bc2db43c8b108169661ebc1c4d9b2d3d2e5;hp=36d24828cd90f09f3c6f91e69ec2d42ccdf052fa;hpb=eb3e681d6e82ccdd5d312d1981dfb306e7f479f0;p=jalview.git diff --git a/src/jalview/analysis/AlignSeq.java b/src/jalview/analysis/AlignSeq.java index 36d2482..edf19ec 100755 --- a/src/jalview/analysis/AlignSeq.java +++ b/src/jalview/analysis/AlignSeq.java @@ -26,6 +26,7 @@ import jalview.analysis.scoremodels.PIDModel; import jalview.analysis.scoremodels.ScoreMatrix; import jalview.analysis.scoremodels.ScoreModels; import jalview.analysis.scoremodels.SimilarityParams; +import jalview.api.analysis.SimilarityParamsI; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Mapping; @@ -93,6 +94,11 @@ public class AlignSeq int[] aseq1; int[] aseq2; + + /* + * matches in alignment + */ + int match=-1; public String astr1 = ""; @@ -281,6 +287,30 @@ public class AlignSeq s2.getDatasetSequence() == null ? s2 : s2.getDatasetSequence()); return alSeq2; } + /** + * fraction of seq2 matched in the alignment + * @return NaN or [0..1] + */ + public double getS2Coverage() + { + if (match>=0) + { + return ((double)match)/((double)s2.getEnd()-s2.getStart()+1); + } + return Double.NaN; + } + /** + * fraction of seq1 matched in the alignment + * @return NaN or [0..1] + */ + public double getS1Coverage() + { + if (match>=0) + { + return ((double)match)/((double)s1.getEnd()-s1.getStart()+1); + } + return Double.NaN; + } /** * Construct score matrix for sequences with standard DNA or PEPTIDE matrix @@ -390,7 +420,7 @@ public class AlignSeq aseq1 = new int[seq1.length + seq2.length]; aseq2 = new int[seq1.length + seq2.length]; - + match=0; StringBuilder sb1 = new StringBuilder(aseq1.length); StringBuilder sb2 = new StringBuilder(aseq2.length); @@ -402,11 +432,11 @@ public class AlignSeq sb1.append(s1str.charAt(i)); aseq2[count] = seq2[j]; sb2.append(s2str.charAt(j)); - trace = findTrace(i, j); if (trace == 0) { + match++; i--; j--; } @@ -439,8 +469,10 @@ public class AlignSeq { aseq2[count] = seq2[j]; sb2.append(s2str.charAt(j)); + if (aseq1[count]!=GAP_INDEX) { + match++; + } } - /* * we built the character strings backwards, so now * reverse them to convert to sequence strings @@ -1132,4 +1164,12 @@ public class AlignSeq } return redundancy; } + + public void setScoreMatrix(ScoreMatrix params) + { + if (params!=null) + { + scoreMatrix = params; + } + } }