X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=eachgapignore.h;h=2e7fbd6bd228d3ed625cd1904ecd7d15075d9234;hp=edc1cab3e4a1bbaf006df491ce1cd79da69db046;hb=615301e57c25e241356a9c2380648d117709458d;hpb=d5d2761f88b41f1006d0b700e0ab51e2ce48b875 diff --git a/eachgapignore.h b/eachgapignore.h index edc1cab..2e7fbd6 100644 --- a/eachgapignore.h +++ b/eachgapignore.h @@ -17,47 +17,52 @@ class eachGapIgnoreTermGapDist : public Dist { public: + eachGapIgnoreTermGapDist() {} + eachGapIgnoreTermGapDist(const eachGapIgnoreTermGapDist& ddb) {} void calcDist(Sequence A, Sequence B){ int diff = 0; int length = 0; int start = 0; int end = 0; + bool overlap = false; - for(int i=0;i=0;i--){ - if(A.getUnaligned()[i] == '.' || B.getUnaligned()[i] == '.' || A.getUnaligned()[i] == '-' || B.getUnaligned()[i] == '-'){ - } - else{ + for(int i=alignLength-1;i>=0;i--){ + if(seqA[i] != '.' && seqB[i] != '.' && seqA[i] != '-' && seqB[i] != '-' ){ end = i; +// cout << "end: " << end << endl; + overlap = true; break; } } for(int i=start;i<=end;i++){ - if(A.getUnaligned()[i] == '-' && B.getUnaligned()[i] == '-'){} - else if(A.getUnaligned()[i] == '.' || B.getUnaligned()[i] == '.'){ + if(seqA[i] == '.' || seqB[i] == '.'){ break; } - else if(A.getUnaligned()[i] != '-' && B.getUnaligned()[i] != '-'){ - if(A.getUnaligned()[i] != B.getUnaligned()[i]){ + else if(seqA[i] != '-' || seqB[i] != '-'){ + if(seqA[i] != seqB[i]){ diff++; } length++; } - else if(A.getUnaligned()[i] != '-' || B.getUnaligned()[i] != '-'){ - diff++; - length++; - } } + //non-overlapping sequences + if (!overlap) { length = 0; } + if(length == 0) { dist = 1.0000; } else { dist = ((double)diff / (double)length); }