From: James Procter Date: Fri, 15 Dec 2023 13:56:07 +0000 (+0000) Subject: JAL-4366 compute coverage on each side of the pairwise alignment X-Git-Tag: Release_2_11_4_0~31^2~5 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=7da58662ac07b58a96507c96daab158dda51c3da;p=jalview.git JAL-4366 compute coverage on each side of the pairwise alignment --- diff --git a/src/jalview/analysis/AlignSeq.java b/src/jalview/analysis/AlignSeq.java index ae8638d..1abbda7 100755 --- a/src/jalview/analysis/AlignSeq.java +++ b/src/jalview/analysis/AlignSeq.java @@ -99,6 +99,11 @@ public class AlignSeq int[] aseq1; int[] aseq2; + + /* + * matches in alignment + */ + int match=-1; public String astr1 = ""; @@ -327,6 +332,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 @@ -441,7 +470,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); @@ -454,11 +483,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--; } @@ -491,6 +520,9 @@ public class AlignSeq { aseq2[count] = seq2[j]; sb2.append(s2str.charAt(j)); + if (aseq1[count]!=GAP_INDEX) { + match++; + } }