//***************************************************************************************************************
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);
numWanted = numw;
realign = r;
trimChimera = trim;
+ numNoParents = 0;
+ blastlocation = blas;
+ threadID = tid;
doPrep();
}
}
}
//***************************************************************************************************************
+//template=self
ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, map<string, int>& 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;
realign = r;
trimChimera = trim;
priority = prior;
+ numNoParents = 0;
+ blastlocation = blas;
+ threadID = tid;
createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
if (searchMethod == "distance") {
- createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
+ //createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
//run filter on template copying templateSeqs into filteredTemplateSeqs
for (int i = 0; i < templateSeqs.size(); i++) {
}else if (searchMethod == "blast") {
//generate blastdb
- databaseLeft = new BlastDB(m->getRootName(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; }
}
}
+ //avoids nuisance error from formatdb for making blank blast database
+ if (userTemplate.size() == 0) {
+ return userTemplate;
+ }
+
string kmerDBNameLeft;
string kmerDBNameRight;
}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; }
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()); }
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
//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()) {
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) {