From: pschloss Date: Thu, 5 May 2011 21:45:48 +0000 (+0000) Subject: chimera.slayer debugging X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=commitdiff_plain;h=ed4fc0b4ae476621747d9bfdce733e878e040e2f chimera.slayer debugging --- diff --git a/chimeraslayer.cpp b/chimeraslayer.cpp index 826f38b..1d22bdf 100644 --- a/chimeraslayer.cpp +++ b/chimeraslayer.cpp @@ -782,7 +782,7 @@ int ChimeraSlayer::getChimeras(Sequence* query) { realigner.reAlign(query, parents); } - + //get sequence that were given from maligner results vector seqs; map removeDups; @@ -792,14 +792,20 @@ int ChimeraSlayer::getChimeras(Sequence* query) { for (int j = 0; j < Results.size(); j++) { float dist = (Results[j].regionEnd - Results[j].regionStart + 1) * Results[j].queryToParentLocal; //only add if you are not a duplicate - itDup = removeDups.find(Results[j].parent); - if (itDup == removeDups.end()) { //this is not duplicate - removeDups[Results[j].parent] = dist; - parentNameSeq[Results[j].parent] = Results[j].parentAligned; - }else if (dist > itDup->second) { //is this a stronger number for this parent - removeDups[Results[j].parent] = dist; - parentNameSeq[Results[j].parent] = Results[j].parentAligned; + + if(Results[j].queryToParentLocal >= 90){ //local match has to be over 90% similarity + + itDup = removeDups.find(Results[j].parent); + if (itDup == removeDups.end()) { //this is not duplicate + removeDups[Results[j].parent] = dist; + parentNameSeq[Results[j].parent] = Results[j].parentAligned; + }else if (dist > itDup->second) { //is this a stronger number for this parent + removeDups[Results[j].parent] = dist; + parentNameSeq[Results[j].parent] = Results[j].parentAligned; + } + } + } for (itDup = removeDups.begin(); itDup != removeDups.end(); itDup++) { @@ -809,7 +815,6 @@ int ChimeraSlayer::getChimeras(Sequence* query) { SeqDist member; member.seq = seq; member.dist = itDup->second; - seqs.push_back(member); } diff --git a/slayer.cpp b/slayer.cpp index 877f241..61b7b63 100644 --- a/slayer.cpp +++ b/slayer.cpp @@ -18,6 +18,7 @@ string Slayer::getResults(Sequence* query, vector refSeqs) { vector all; all.clear(); myQuery = *query; + for (int i = 0; i < refSeqs.size(); i++) { for (int j = i+1; j < refSeqs.size(); j++) { @@ -153,8 +154,8 @@ vector Slayer::runBellerophon(Sequence* q, Sequence* pA, Sequence* float QRA = computePercentID(query, parentA, breakpoint+1, length); float LAB = computePercentID(parentA, parentB, 0, breakpoint); - float RAB = computePercentID(parentA, parentB, breakpoint+1, length); - + float RAB = computePercentID(parentA, parentB, breakpoint+1, length); + float AB = ((LAB*leftLength) + (RAB*rightLength)) / (float) length; float QA = ((QLA*leftLength) + (QRA*rightLength)) / (float) length; float QB = ((QLB*leftLength) + (QRB*rightLength)) / (float) length; @@ -168,6 +169,7 @@ vector Slayer::runBellerophon(Sequence* q, Sequence* pA, Sequence* float divR_QLA_QRB = min((QLA_QRB/QA), (QLA_QRB/QB)); float divR_QLB_QRA = min((QLB_QRA/QA), (QLB_QRA/QB)); + //cout << q->getName() << '\t'; //cout << pA->getName() << '\t'; //cout << pB->getName() << '\t'; @@ -216,6 +218,7 @@ vector Slayer::runBellerophon(Sequence* q, Sequence* pA, Sequence* }//if }//for + return data; }