From d4c252e25cd7583b2582a8ada47063179ae29fba Mon Sep 17 00:00:00 2001 From: pschloss Date: Fri, 6 May 2011 18:04:50 +0000 Subject: [PATCH] added kmer stuff --- chimeraslayer.cpp | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/chimeraslayer.cpp b/chimeraslayer.cpp index a182b84..efd29d6 100644 --- a/chimeraslayer.cpp +++ b/chimeraslayer.cpp @@ -1150,17 +1150,44 @@ vector ChimeraSlayer::getKmerSeqs(Sequence* q, vector& db, //merge results map seen; map::iterator it; - vector mergedResults; - for (int i = 0; i < tempIndexesLeft.size(); i++) { + vector mergedResults; + + int index = 0; + // for (int i = 0; i < smaller.size(); i++) { + while(index < tempIndexesLeft.size() && index < tempIndexesRight.size()){ if (m->control_pressed) { delete queryRight; delete queryLeft; return refResults; } //add left if you havent already + it = seen.find(tempIndexesLeft[index]); + if (it == seen.end()) { + mergedResults.push_back(tempIndexesLeft[index]); + seen[tempIndexesLeft[index]] = tempIndexesLeft[index]; + } + + //add right if you havent already + it = seen.find(tempIndexesRight[index]); + if (it == seen.end()) { + mergedResults.push_back(tempIndexesRight[index]); + seen[tempIndexesRight[index]] = tempIndexesRight[index]; + } + index++; + } + + + for (int i = index; i < tempIndexesLeft.size(); i++) { + if (m->control_pressed) { delete queryRight; delete queryLeft; return refResults; } + + //add right if you havent already it = seen.find(tempIndexesLeft[i]); if (it == seen.end()) { mergedResults.push_back(tempIndexesLeft[i]); seen[tempIndexesLeft[i]] = tempIndexesLeft[i]; } + } + + for (int i = index; i < tempIndexesRight.size(); i++) { + if (m->control_pressed) { delete queryRight; delete queryLeft; return refResults; } //add right if you havent already it = seen.find(tempIndexesRight[i]); @@ -1170,17 +1197,16 @@ vector ChimeraSlayer::getKmerSeqs(Sequence* q, vector& db, } } - //numWanted = mergedResults.size(); - - //cout << q->getName() << endl; for (int i = 0; i < mergedResults.size(); i++) { - //cout << db[mergedResults[i]]->getName() << endl; + //cout << mergedResults[i] << '\t' << db[mergedResults[i]]->getName() << endl; if (db[mergedResults[i]]->getName() != q->getName()) { Sequence* temp = new Sequence(db[mergedResults[i]]->getName(), db[mergedResults[i]]->getAligned()); refResults.push_back(temp); + } } + //cout << endl; delete queryRight; delete queryLeft; -- 2.39.2