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
11 public static float compare(SequenceI ii, SequenceI jj, int start, int end) {
\r
13 String si = ii.getSequence();
\r
14 String sj = jj.getSequence();
\r
16 int ilen = end-start+1;
\r
17 int jlen = end-start+1;
\r
19 if ( jalview.util.Comparison.isGap( si.charAt(start+ilen)) )
\r
23 while (jalview.util.Comparison.isGap( si.charAt(start+ilen)))
\r
29 if ( jalview.util.Comparison.isGap( sj.charAt(start+jlen)) )
\r
33 while (jalview.util.Comparison.isGap( sj.charAt(start+jlen)))
\r
45 for (int j = 0; j < jlen; j++) {
\r
46 if (si.substring(start + j,start + j+1).equals(sj.substring(start + j,start + j+1))) {
\r
51 pid = (float)match/(float)ilen * 100;
\r
53 for (int j = 0; j < jlen; j++) {
\r
54 if (si.substring(start + j,start + j+1).equals(sj.substring(start + j,start + j+1))) {
\r
59 pid = (float)match/(float)jlen * 100;
\r
66 public static float PID(Sequence s1 , Sequence s2)
\r
70 if (s1.getSequence().length() > s2.getSequence().length())
\r
71 len = s1.getSequence().length();
\r
73 len = s2.getSequence().length();
\r
78 for (int i = 0; i < len; i++)
\r
83 if (i < s1.getSequence().length())
\r
84 chr1 = s1.getSequence().charAt(i);
\r
89 if (i < s2.getSequence().length())
\r
90 chr2 = s2.getSequence().charAt(i);
\r
95 if (!(jalview.util.Comparison.isGap( chr1 )) && !(jalview.util.Comparison.isGap( chr2 )))
\r
102 return (float)100*(len-bad)/len;
\r
105 public static boolean isGap(char c)
\r
107 return (c != '.' && c != '-' && c != ' ') ? false : true;
\r