X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FComparison.java;h=c779bb1e9179df755ff7d27b56316d7d6600d599;hb=b8d09897dacc7b0ad203982b4578e2c1d8929142;hp=8041d8074a4364df0ec23245f167e6bf3366924d;hpb=588042b69abf8e60bcc950b24c283933c7dd422f;p=jalview.git diff --git a/src/jalview/util/Comparison.java b/src/jalview/util/Comparison.java index 8041d80..c779bb1 100755 --- a/src/jalview/util/Comparison.java +++ b/src/jalview/util/Comparison.java @@ -21,10 +21,27 @@ package jalview.util; import jalview.datamodel.*; -public class Comparison { +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ +public class Comparison +{ + /** DOCUMENT ME!! */ public static String GapChars = " .-"; - public static float compare(SequenceI ii, SequenceI jj) { + /** + * DOCUMENT ME! + * + * @param ii DOCUMENT ME! + * @param jj DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public static float compare(SequenceI ii, SequenceI jj) + { return Comparison.compare(ii, jj, 0, ii.getLength() - 1); } @@ -36,18 +53,21 @@ public class Comparison { * @param end int * @return float */ - public static float compare(SequenceI ii, SequenceI jj, int start, int end) { + public static float compare(SequenceI ii, SequenceI jj, int start, int end) + { String si = ii.getSequence(); String sj = jj.getSequence(); int ilen = si.length() - 1; int jlen = sj.length() - 1; - while (jalview.util.Comparison.isGap(si.charAt(start + ilen))) { + while (jalview.util.Comparison.isGap(si.charAt(start + ilen))) + { ilen--; } - while (jalview.util.Comparison.isGap(sj.charAt(start + jlen))) { + while (jalview.util.Comparison.isGap(sj.charAt(start + jlen))) + { jlen--; } @@ -55,10 +75,13 @@ public class Comparison { int match = 0; float pid = -1; - if (ilen > jlen) { - for (int j = 0; j < jlen; j++) { + if (ilen > jlen) + { + for (int j = 0; j < jlen; j++) + { if (si.substring(start + j, start + j + 1).equals(sj.substring(start + - j, start + j + 1))) { + j, start + j + 1))) + { match++; } @@ -66,10 +89,14 @@ public class Comparison { } pid = (float) match / (float) ilen * 100; - } else { - for (int j = 0; j < jlen; j++) { + } + else + { + for (int j = 0; j < jlen; j++) + { if (si.substring(start + j, start + j + 1).equals(sj.substring(start + - j, start + j + 1))) { + j, start + j + 1))) + { match++; } @@ -89,36 +116,49 @@ public class Comparison { * @param s2 SequenceI * @return float */ - public static float PID(SequenceI s1, SequenceI s2) { + public static float PID(SequenceI s1, SequenceI s2) + { int len; - if (s1.getSequence().length() > s2.getSequence().length()) { + if (s1.getSequence().length() > s2.getSequence().length()) + { len = s1.getSequence().length(); - } else { + } + else + { len = s2.getSequence().length(); } int bad = 0; - for (int i = 0; i < len; i++) { + for (int i = 0; i < len; i++) + { char chr1; char chr2; - if (i < s1.getSequence().length()) { + if (i < s1.getSequence().length()) + { chr1 = s1.getSequence().charAt(i); - } else { + } + else + { chr1 = '.'; } - if (i < s2.getSequence().length()) { + if (i < s2.getSequence().length()) + { chr2 = s2.getSequence().charAt(i); - } else { + } + else + { chr2 = '.'; } if (!(jalview.util.Comparison.isGap(chr1)) && - !(jalview.util.Comparison.isGap(chr2))) { - if (chr1 != chr2) { + !(jalview.util.Comparison.isGap(chr2))) + { + if (chr1 != chr2) + { bad++; } } @@ -128,44 +168,59 @@ public class Comparison { } // Another pid with region specification - public static float PID(SequenceI s1, SequenceI s2, int start, int end) { + public static float PID(SequenceI s1, SequenceI s2, int start, int end) + { int len; - if (s1.getSequence().length() > s2.getSequence().length()) { + if (s1.getSequence().length() > s2.getSequence().length()) + { len = s1.getSequence().length(); - } else { + } + else + { len = s2.getSequence().length(); } - if (end < len) { + if (end < len) + { len = end; } - if (len < start) { + if (len < start) + { start = len - 1; // we just use a single residue for the difference } int bad = 0; - for (int i = start; i < len; i++) { + for (int i = start; i < len; i++) + { char chr1; char chr2; - if (i < s1.getSequence().length()) { + if (i < s1.getSequence().length()) + { chr1 = s1.getSequence().charAt(i); - } else { + } + else + { chr1 = '.'; } - if (i < s2.getSequence().length()) { + if (i < s2.getSequence().length()) + { chr2 = s2.getSequence().charAt(i); - } else { + } + else + { chr2 = '.'; } if (!(jalview.util.Comparison.isGap(chr1)) && - !(jalview.util.Comparison.isGap(chr2))) { - if (chr1 != chr2) { + !(jalview.util.Comparison.isGap(chr2))) + { + if (chr1 != chr2) + { bad++; } } @@ -174,7 +229,15 @@ public class Comparison { return ((float) 100 * (len - bad)) / len; } - public static boolean isGap(char c) { + /** + * DOCUMENT ME! + * + * @param c DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public static boolean isGap(char c) + { return ((c != '.') && (c != '-') && (c != ' ')) ? false : true; } }