1 package jalview.util;
\r
3 import jalview.datamodel.*;
\r
5 public class Comparison {
\r
7 public static float compare(SequenceI ii, SequenceI jj)
\r
9 return Comparison.compare(ii,jj,0,ii.getLength()-1);
\r
12 * this was supposed to be an ungapped pid calculation
\r
13 * @param ii SequenceI
\r
14 * @param jj SequenceI
\r
19 public static float compare(SequenceI ii, SequenceI jj, int start, int end) {
\r
21 String si = ii.getSequence();
\r
22 String sj = jj.getSequence();
\r
24 int ilen = si.length()-1;
\r
25 int jlen = sj.length()-1;
\r
27 while (jalview.util.Comparison.isGap(si.charAt(start + ilen)))
\r
32 while (jalview.util.Comparison.isGap(sj.charAt(start + jlen)))
\r
43 for (int j = 0; j < jlen; j++) {
\r
44 if (si.substring(start + j,start + j+1).equals(sj.substring(start + j,start + j+1))) {
\r
49 pid = (float)match/(float)ilen * 100;
\r
51 for (int j = 0; j < jlen; j++) {
\r
52 if (si.substring(start + j,start + j+1).equals(sj.substring(start + j,start + j+1))) {
\r
57 pid = (float)match/(float)jlen * 100;
\r
64 * this is a gapped PID calculation
\r
66 * @param s1 SequenceI
\r
67 * @param s2 SequenceI
\r
70 public static float PID(SequenceI s1 , SequenceI s2)
\r
74 if (s1.getSequence().length() > s2.getSequence().length())
\r
75 len = s1.getSequence().length();
\r
77 len = s2.getSequence().length();
\r
82 for (int i = 0; i < len; i++)
\r
87 if (i < s1.getSequence().length())
\r
88 chr1 = s1.getSequence().charAt(i);
\r
93 if (i < s2.getSequence().length())
\r
94 chr2 = s2.getSequence().charAt(i);
\r
99 if (!(jalview.util.Comparison.isGap( chr1 )) && !(jalview.util.Comparison.isGap( chr2 )))
\r
106 return (float)100*(len-bad)/len;
\r
108 public static String GapChars = " .-";
\r
109 public static boolean isGap(char c)
\r
111 return (c != '.' && c != '-' && c != ' ') ? false : true;
\r