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 ( si.substring(start + ilen).equals("-") ||
\r
20 si.substring(start + ilen).equals(".") ||
\r
21 si.substring(start + ilen).equals(" ")) {
\r
25 while (si.substring(start + ilen,start + ilen+1).equals("-") ||
\r
26 si.substring(start + ilen,start + ilen+1).equals(".") ||
\r
27 si.substring(start + ilen,start + ilen+1).equals(" ")) {
\r
32 if ( sj.substring(start + jlen).equals("-") ||
\r
33 sj.substring(start + jlen).equals(".") ||
\r
34 sj.substring(start + jlen).equals(" ")) {
\r
37 while (sj.substring(start + jlen,start + jlen+1).equals("-") ||
\r
38 sj.substring(start + jlen,start + jlen+1).equals(".") ||
\r
39 sj.substring(start + jlen,start + jlen+1).equals(" ")) {
\r
50 for (int j = 0; j < jlen; j++) {
\r
51 if (si.substring(start + j,start + j+1).equals(sj.substring(start + j,start + j+1))) {
\r
56 pid = (float)match/(float)ilen * 100;
\r
58 for (int j = 0; j < jlen; j++) {
\r
59 if (si.substring(start + j,start + j+1).equals(sj.substring(start + j,start + j+1))) {
\r
64 pid = (float)match/(float)jlen * 100;
\r
71 public static float PID(Sequence s1 , Sequence s2) {
\r
75 if (s1.getSequence().length() > s2.getSequence().length()) {
\r
76 len = s1.getSequence().length();
\r
78 len = s2.getSequence().length();
\r
83 for (int i = 0; i < len; i++) {
\r
87 if (i < s1.getSequence().length()) {
\r
88 str1 = s1.getSequence().substring(i,i+1);
\r
93 if (i < s2.getSequence().length()) {
\r
94 str2 = s2.getSequence().substring(i,i+1);
\r
99 if (!(str1.equals(".") ||
\r
100 str1.equals("-") ||
\r
101 str1.equals(" ")) &&
\r
102 !(str2.equals(".") ||
\r
103 str2.equals("-") ||
\r
104 str2.equals(" "))) {
\r
106 if (!str1.equals(str2)) {
\r
112 return (float)100*(len-bad)/len;
\r