#include "chimeraslayer.h"
#include "chimerarealigner.h"
#include "kmerdb.hpp"
+#include "blastdb.hpp"
//***************************************************************************************************************
ChimeraSlayer::ChimeraSlayer(string file, string temp, string mode, int k, int ms, int mms, int win, float div,
int ChimeraSlayer::doPrep() {
try {
-
//read in all query seqs
vector<Sequence*> tempQuerySeqs = readSeqs(fastafile);
databaseRight->setNumSeqs(templateSeqs.size());
#endif
+ }else if (searchMethod == "blast") {
+
+ //generate blastdb
+ databaseLeft = new BlastDB(-2.0, -1.0, match, misMatch);
+ for (int i = 0; i < templateSeqs.size(); i++) { databaseLeft->addSequence(*templateSeqs[i]); }
+ databaseLeft->generateDB();
+ databaseLeft->setNumSeqs(templateSeqs.size());
}
return 0;
}
}
//***************************************************************************************************************
-ChimeraSlayer::~ChimeraSlayer() { delete decalc; if (searchMethod == "kmer") { delete databaseRight; delete databaseLeft; } }
+ChimeraSlayer::~ChimeraSlayer() {
+ delete decalc;
+ if (searchMethod == "kmer") { delete databaseRight; delete databaseLeft; }
+ else if (searchMethod == "blast") { delete databaseLeft; }
+}
//***************************************************************************************************************
void ChimeraSlayer::printHeader(ostream& out) {
m->mothurOutEndLine();
//write to accnos file
int length = outAccString.length();
- char buf2[length];
- strcpy(buf2, outAccString.c_str());
+ char* buf2 = new char[length];
+ memcpy(buf2, outAccString.c_str(), length);
MPI_File_write_shared(outAcc, buf2, length, MPI_CHAR, &status);
+ delete buf2;
}
}
outputString = getBlock(chimeraResults[0]);
outputString += "\n";
-
- }else { outputString += querySeq->getName() + "\tno\n"; }
+ //cout << outputString << endl;
+ //write to output file
+ int length = outputString.length();
+ char* buf = new char[length];
+ memcpy(buf, outputString.c_str(), length);
+
+ MPI_File_write_shared(out, buf, length, MPI_CHAR, &status);
+ delete buf;
+
+ }else {
+ outputString += querySeq->getName() + "\tno\n";
+ //cout << outputString << endl;
+ //write to output file
+ int length = outputString.length();
+ char* buf = new char[length];
+ memcpy(buf, outputString.c_str(), length);
+
+ MPI_File_write_shared(out, buf, length, MPI_CHAR, &status);
+ delete buf;
+ }
- //write to output file
- int length = outputString.length();
- char buf[length];
- strcpy(buf, outputString.c_str());
- MPI_File_write_shared(out, buf, length, MPI_CHAR, &status);
-
return results;
}
catch(exception& e) {
int ChimeraSlayer::getChimeras(Sequence* query) {
try {
chimeraFlags = "no";
-
+
//filter query
spotMap = runFilter(query);