X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=chimeraslayer.cpp;h=458e89d075f0f6044158cfcc6b1b9daee24fc2f7;hb=74dc92cf53df65fd8b14d8eaf35489bbecbccac6;hp=b00cedfba5b4edf8463343618ebdd80acae209be;hpb=2e28b53eb15d5dc11653247ee12aed2c7e5aac43;p=mothur.git diff --git a/chimeraslayer.cpp b/chimeraslayer.cpp index b00cedf..458e89d 100644 --- a/chimeraslayer.cpp +++ b/chimeraslayer.cpp @@ -14,7 +14,7 @@ //*************************************************************************************************************** ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, string mode, int k, int ms, int mms, int win, float div, -int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r) : Chimera() { +int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r, string blas, int tid) : Chimera() { try { fastafile = file; templateFileName = temp; templateSeqs = readSeqs(temp); @@ -34,6 +34,9 @@ int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int num numWanted = numw; realign = r; trimChimera = trim; + numNoParents = 0; + blastlocation = blas; + threadID = tid; doPrep(); } @@ -43,8 +46,9 @@ int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int num } } //*************************************************************************************************************** +//template=self ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, map& prior, string mode, int k, int ms, int mms, int win, float div, - int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r) : Chimera() { + int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r, string blas, int tid) : Chimera() { try { fastafile = file; templateSeqs = readSeqs(fastafile); templateFileName = temp; @@ -65,11 +69,14 @@ ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, mapgetRootName(m->getSimpleName(fastafile)), -1.0, -1.0, 1, -3); + databaseLeft = new BlastDB(m->getRootName(m->getSimpleName(fastafile)), -1.0, -1.0, 1, -3, blastlocation, threadID); if (m->control_pressed) { return 0; } @@ -254,6 +261,11 @@ vector ChimeraSlayer::getTemplate(Sequence q, vector& user } } + //avoids nuisance error from formatdb for making blank blast database + if (userTemplate.size() == 0) { + return userTemplate; + } + string kmerDBNameLeft; string kmerDBNameRight; @@ -322,7 +334,7 @@ vector ChimeraSlayer::getTemplate(Sequence q, vector& user }else if (searchMethod == "blast") { //generate blastdb - databaseLeft = new BlastDB(m->getRootName(m->getSimpleName(templateFileName)), -1.0, -1.0, 1, -3); + databaseLeft = new BlastDB(m->getRootName(m->getSimpleName(templateFileName)), -1.0, -1.0, 1, -3, blastlocation, threadID); if (m->control_pressed) { return userTemplate; } @@ -370,7 +382,7 @@ Sequence ChimeraSlayer::print(ostream& out, ostream& outAcc) { if (chimeraFlag == "yes") { if ((chimeraResults[0].bsa >= minBS) || (chimeraResults[0].bsb >= minBS)) { - m->mothurOut(querySeq.getName() + "\tyes"); m->mothurOutEndLine(); + m->mothurOut(toString(threadID) +"\t"+ querySeq.getName() + "\tyes"); m->mothurOutEndLine(); outAcc << querySeq.getName() << endl; if (templateFileName == "self") { chimericSeqs.insert(querySeq.getName()); } @@ -747,7 +759,6 @@ int ChimeraSlayer::getChimeras(Sequence* query) { else { thisTemplate = getTemplate(*query, thisFilteredTemplate); } //fills this template and creates the databases if (m->control_pressed) { return 0; } - if (thisTemplate.size() == 0) { return 0; } //not chimeric //moved this out of maligner - 4/29/11 @@ -1115,6 +1126,8 @@ vector ChimeraSlayer::getBlastSeqs(Sequence q, vector& db, //string qname = q->getName().substr(0, q->getName().find_last_of('_')); //cout << qname << endl; + if (mergedResults.size() == 0) { numNoParents++; } + for (int i = 0; i < mergedResults.size(); i++) { //cout << q->getName() << mergedResults[i] << '\t' << db[mergedResults[i]]->getName() << endl; if (db[mergedResults[i]]->getName() != q.getName()) { @@ -1127,8 +1140,6 @@ vector ChimeraSlayer::getBlastSeqs(Sequence q, vector& db, delete queryRight; delete queryLeft; - if (refResults.size() == 0) { m->mothurOut("[WARNING]: megablast found 0 potential parents, so we are not able to check " + q.getName() + ". This could be due to formatdb.exe not being setup properly, please check formatdb.log for errors."); m->mothurOutEndLine(); } - return refResults; } catch(exception& e) {