From: pschloss Date: Sun, 8 May 2011 02:36:30 +0000 (+0000) Subject: more chimera.slayer debugging X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=commitdiff_plain;h=3489799717f1f9002846bfd902d2886fc448f903 more chimera.slayer debugging --- diff --git a/chimeraslayer.cpp b/chimeraslayer.cpp index efd29d6..423f7c0 100644 --- a/chimeraslayer.cpp +++ b/chimeraslayer.cpp @@ -785,6 +785,7 @@ int ChimeraSlayer::getChimeras(Sequence* query) { } +// cout << query->getAligned() << endl; //get sequence that were given from maligner results vector seqs; map removeDups; @@ -792,9 +793,12 @@ int ChimeraSlayer::getChimeras(Sequence* query) { map parentNameSeq; map::iterator itSeq; 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 - +// cout << Results[j].parent << '\t' << Results[j].regionEnd << '\t' << Results[j].regionStart << '\t' << Results[j].regionEnd - Results[j].regionStart +1 << '\t' << Results[j].queryToParentLocal << '\t' << dist << endl; + + if(Results[j].queryToParentLocal >= 90){ //local match has to be over 90% similarity itDup = removeDups.find(Results[j].parent); @@ -840,7 +844,7 @@ int ChimeraSlayer::getChimeras(Sequence* query) { for (int k = 0; k < seqs.size(); k++) { // cout << seqs[k].seq->getAligned() << endl; seqsForSlayer.push_back(seqs[k].seq); - +// cout << seqs[k].seq->getName() << endl; } if (m->control_pressed) { for (int k = 0; k < seqs.size(); k++) { delete seqs[k].seq; } return 0; } diff --git a/maligner.cpp b/maligner.cpp index 1205cef..0cd8336 100644 --- a/maligner.cpp +++ b/maligner.cpp @@ -144,8 +144,8 @@ string Maligner::chimeraMaligner(int chimeraPenalty, DeCalculator* decalc) { temp.parentAligned = db[seqIndex]->getAligned(); temp.nastRegionStart = spotMap[regionStart]; temp.nastRegionEnd = spotMap[regionEnd]; - temp.regionStart = regionStart; - temp.regionEnd = regionEnd; + temp.regionStart = unalignedMap[regionStart]; + temp.regionEnd = unalignedMap[regionEnd]; string parentInRange = refSeqs[seqIndex]->getAligned(); parentInRange = parentInRange.substr(traceStart, (traceEnd-traceStart+1)); @@ -280,7 +280,22 @@ void Maligner::verticalFilter(vector seqs) { seqs[i]->setAligned(newAligned); } - + + string query = seqs[seqs.size()-1]->getAligned(); + int queryLength = query.length(); + + unalignedMap.resize(queryLength, 0); + + + for(int i=1;i Maligner::extractHighestPath(vector > } } -// cout << highestScore << endl; vector path; int rowIndex = highestStruct.row; int pos = highestStruct.col; int score = highestStruct.score; + +// cout << rowIndex << '\t' << pos << '\t' << score << endl; while (pos >= 0 && score > 0) { score_struct temp = ms[rowIndex][pos]; diff --git a/maligner.h b/maligner.h index da270d6..4f5c949 100644 --- a/maligner.h +++ b/maligner.h @@ -36,7 +36,7 @@ class Maligner { float minDivR, percentIdenticalQueryChimera; vector outputResults; map spotMap; - + vector unalignedMap; vector minCoverageFilter(vector); //removes top matches that do not have minimum coverage with query. int computeChimeraPenalty(); void verticalFilter(vector); diff --git a/slayer.cpp b/slayer.cpp index 8e17f87..92b4673 100644 --- a/slayer.cpp +++ b/slayer.cpp @@ -34,7 +34,7 @@ string Slayer::getResults(Sequence* query, vector refSeqs) { vector divs = runBellerophon(q, leftParent, rightParent, spots); if (m->control_pressed) { delete q; delete leftParent; delete rightParent; return "no"; } - +// cout << "examining:\t" << refSeqs[i]->getName() << '\t' << refSeqs[j]->getName() << endl; vector selectedDivs; for (int k = 0; k < divs.size(); k++) { @@ -46,6 +46,7 @@ string Slayer::getResults(Sequence* query, vector refSeqs) { int numSNPSLeft = snpsLeft.size(); int numSNPSRight = snpsRight.size(); +// cout << numSNPSLeft << '\t' << numSNPSRight << endl; //require at least 4 SNPs on each side of the break if ((numSNPSLeft >= 4) && (numSNPSRight >= 4)) {