X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=chimeracheckrdp.cpp;h=42b531282c5f020664277a9e907699a3bf227658;hp=cb101b6af9dd8d0c412a69067597d9a022f2e623;hb=1a20e24ee786195ab0e1cccd4f5aede7a88f3f4e;hpb=2bbb7273d4bf5209f098c764551c6e072d60df36 diff --git a/chimeracheckrdp.cpp b/chimeracheckrdp.cpp index cb101b6..42b5312 100644 --- a/chimeracheckrdp.cpp +++ b/chimeracheckrdp.cpp @@ -20,7 +20,7 @@ ChimeraCheckRDP::ChimeraCheckRDP(string filename, string temp, string n, bool s, kmerSize = k; outputDir = o; - templateDB = new AlignmentDB(templateFileName, "kmer", kmerSize, 0.0,0.0,0.0,0.0); + templateDB = new AlignmentDB(templateFileName, "kmer", kmerSize, 0.0,0.0,0.0,0.0, rand()); m->mothurOutEndLine(); kmer = new Kmer(kmerSize); @@ -47,7 +47,7 @@ ChimeraCheckRDP::~ChimeraCheckRDP() { } } //*************************************************************************************************************** -int ChimeraCheckRDP::print(ostream& out, ostream& outAcc) { +Sequence ChimeraCheckRDP::print(ostream& out, ostream& outAcc) { try { m->mothurOut("Processing: " + querySeq->getName()); m->mothurOutEndLine(); @@ -72,7 +72,7 @@ int ChimeraCheckRDP::print(ostream& out, ostream& outAcc) { } } - return 0; + return *querySeq; } catch(exception& e) { m->errorOut(e, "ChimeraCheckRDP", "print"); @@ -81,7 +81,7 @@ int ChimeraCheckRDP::print(ostream& out, ostream& outAcc) { } #ifdef USE_MPI //*************************************************************************************************************** -int ChimeraCheckRDP::print(MPI_File& out, MPI_File& outAcc) { +Sequence ChimeraCheckRDP::print(MPI_File& out, MPI_File& outAcc) { try { cout << "Processing: " << querySeq->getName() << endl; @@ -97,7 +97,7 @@ int ChimeraCheckRDP::print(MPI_File& out, MPI_File& outAcc) { MPI_Status status; int length = outString.length(); - char* buf = new char[length]; + char* buf = new char[length]; memcpy(buf, outString.c_str(), length); MPI_File_write_shared(out, buf, length, MPI_CHAR, &status); @@ -115,7 +115,7 @@ int ChimeraCheckRDP::print(MPI_File& out, MPI_File& outAcc) { } } - return 0; + return *querySeq; } catch(exception& e) { m->errorOut(e, "ChimeraCheckRDP", "print"); @@ -263,13 +263,16 @@ void ChimeraCheckRDP::readName(string namefile) { MPI_Offset size; MPI_Status status; - char* inFileName = new char[namefile.length()]; - memcpy(inFileName, namefile.c_str(), namefile.length()); + //char* inFileName = new char[namefile.length()]; + //memcpy(inFileName, namefile.c_str(), namefile.length()); + + char inFileName[1024]; + strcpy(inFileName, namefile.c_str()); MPI_File_open(MPI_COMM_WORLD, inFileName, MPI_MODE_RDONLY, MPI_INFO_NULL, &inMPI); MPI_File_get_size(inMPI, &size); - delete inFileName; + //delete inFileName; char* buffer = new char[size]; MPI_File_read(inMPI, buffer, size, MPI_CHAR, &status); @@ -280,7 +283,7 @@ void ChimeraCheckRDP::readName(string namefile) { delete buffer; while(!iss.eof()) { - iss >> name; gobble(iss); + iss >> name; m->gobble(iss); names[name] = name; } @@ -289,10 +292,10 @@ void ChimeraCheckRDP::readName(string namefile) { #else ifstream in; - openInputFile(namefile, in); + m->openInputFile(namefile, in); while (!in.eof()) { - in >> name; gobble(in); + in >> name; m->gobble(in); names[name] = name; } in.close(); @@ -312,25 +315,26 @@ int ChimeraCheckRDP::calcKmers(map query, map subject) { try{ int common = 0; - map::iterator small; - map::iterator large; + map::iterator smallone; + map::iterator largeone; + if (query.size() < subject.size()) { - for (small = query.begin(); small != query.end(); small++) { - large = subject.find(small->first); + for (smallone = query.begin(); smallone != query.end(); smallone++) { + largeone = subject.find(smallone->first); //if you found it they have that kmer in common - if (large != subject.end()) { common++; } + if (largeone != subject.end()) { common++; } } }else { - for (small = subject.begin(); small != subject.end(); small++) { - large = query.find(small->first); + for (smallone = subject.begin(); smallone != subject.end(); smallone++) { + largeone = query.find(smallone->first); //if you found it they have that kmer in common - if (large != query.end()) { common++; } + if (largeone != query.end()) { common++; } } } @@ -352,12 +356,15 @@ void ChimeraCheckRDP::makeSVGpic(vector info) { MPI_File outSVG; int outMode=MPI_MODE_CREATE|MPI_MODE_WRONLY; - char* FileName = new char[file.length()]; - memcpy(FileName, file.c_str(), file.length()); + //char* FileName = new char[file.length()]; + //memcpy(FileName, file.c_str(), file.length()); + char FileName[1024]; + strcpy(FileName, file.c_str()); + MPI_File_open(MPI_COMM_SELF, FileName, outMode, MPI_INFO_NULL, &outSVG); //comm, filename, mode, info, filepointer - delete FileName; + //delete FileName; int width = (info.size()*5) + 150; @@ -404,7 +411,7 @@ void ChimeraCheckRDP::makeSVGpic(vector info) { MPI_Status status; int length = outString.length(); - char* buf2 = new char[length]; + char* buf2 = new char[length]; memcpy(buf2, outString.c_str(), length); MPI_File_write(outSVG, buf2, length, MPI_CHAR, &status); @@ -425,7 +432,7 @@ void ChimeraCheckRDP::makeSVGpic(vector info) { string file = outputDir + querySeq->getName() + ".chimeracheck.svg"; ofstream outsvg; - openOutputFile(file, outsvg); + m->openOutputFile(file, outsvg); int width = (info.size()*5) + 150;