]> git.donarmstrong.com Git - mothur.git/blobdiff - eachgapignore.h
changing command name classify.shared to classifyrf.shared
[mothur.git] / eachgapignore.h
index 9763a6d1af138dc7ebeffe66a94cf0b3c4eb5a9c..2e7fbd6bd228d3ed625cd1904ecd7d15075d9234 100644 (file)
 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;
                
                string seqA = A.getAligned();
                string seqB = B.getAligned();
                int alignLength = seqA.length();
                
-               for(int i=0; i<alignLength; i++){
-                       if(seqA[i] != '.' && seqB[i] != '.'){
+               for(int i=0;i<alignLength;i++){
+                       if(seqA[i] != '.' && seqB[i] != '.' && seqA[i] != '-' && seqB[i] != '-' ){
                                start = i;
+//                             cout << "start: " << start << endl;
+                               overlap = true;
+                               break;
+                       }
+               }
+               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<alignLength;i++){
+               for(int i=start;i<=end;i++){
                        if(seqA[i] == '.' || seqB[i] == '.'){
                                break;  
                        }
@@ -46,6 +60,9 @@ public:
                        }
                }
                
+               //non-overlapping sequences
+               if (!overlap) { length = 0; }
+               
                if(length == 0) {       dist = 1.0000;                                                          }
                else                    {       dist = ((double)diff  / (double)length);        }