X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=makecontigscommand.h;h=b61ebda3fc505db3c6805706cafb2e337138474d;hb=1f0e54b53b714781f3f2fee7d01177fade98a625;hp=65b365840573cde71902c153a499c07530e0a79a;hpb=f12174bc43f9e8ad536f2a37fb3a763b1ac90ba9;p=mothur.git diff --git a/makecontigscommand.h b/makecontigscommand.h index 65b3658..b61ebda 100644 --- a/makecontigscommand.h +++ b/makecontigscommand.h @@ -60,7 +60,7 @@ public: private: bool abort, allFiles, createGroup; - string outputDir, ffastqfile, rfastqfile, align, oligosfile, rfastafile, ffastafile, rqualfile, fqualfile, file; + string outputDir, ffastqfile, rfastqfile, align, oligosfile, rfastafile, ffastafile, rqualfile, fqualfile, file, format; float match, misMatch, gapOpen, gapExtend; int processors, longestBase, threshold, tdiffs, bdiffs, pdiffs, ldiffs, sdiffs; vector outputNames; @@ -70,11 +70,13 @@ private: vector linker; vector spacer; vector primerNameVector; - vector barcodeNameVector; + vector barcodeNameVector; + vector convertTable; map groupCounts; map groupMap; + vector convertQual(string); fastqRead readFastq(ifstream&, bool&); vector< vector< vector > > preProcessData(unsigned long int&); vector< vector > readFileNames(string); @@ -107,7 +109,7 @@ struct contigsData { MothurOut* m; float match, misMatch, gapOpen, gapExtend; int count, threshold, threadID, pdiffs, bdiffs, tdiffs; - bool allFiles, createGroup; + bool allFiles, createGroup, done; map groupCounts; map groupMap; vector primerNameVector; @@ -143,6 +145,7 @@ struct contigsData { allFiles = all; createGroup = cg; threadID = tid; + done=false; } }; @@ -159,7 +162,7 @@ static DWORD WINAPI MyContigsThreadFunction(LPVOID lpParam){ if(pDataArray->align == "gotoh") { alignment = new GotohOverlap(pDataArray->gapOpen, pDataArray->gapExtend, pDataArray->match, pDataArray->misMatch, longestBase); } else if(pDataArray->align == "needleman") { alignment = new NeedlemanOverlap(pDataArray->gapOpen, pDataArray->match, pDataArray->misMatch, longestBase); } - int num = 0; + pDataArray->count = 0; string thisffastafile = pDataArray->files[0]; string thisfqualfile = pDataArray->files[1]; string thisrfastafile = pDataArray->files[2]; @@ -335,6 +338,7 @@ static DWORD WINAPI MyContigsThreadFunction(LPVOID lpParam){ } if(trashCode.length() == 0){ + bool ignore = false; if (pDataArray->createGroup) { if(pDataArray->barcodes.size() != 0){ string thisGroup = pDataArray->barcodeNameVector[barcodeIndex]; @@ -350,16 +354,18 @@ static DWORD WINAPI MyContigsThreadFunction(LPVOID lpParam){ if (pDataArray->m->debug) { pDataArray->m->mothurOut(", group= " + thisGroup + "\n"); } - pDataArray->groupMap[fSeq.getName()] = thisGroup; - - map::iterator it = pDataArray->groupCounts.find(thisGroup); - if (it == pDataArray->groupCounts.end()) { pDataArray->groupCounts[thisGroup] = 1; } - else { pDataArray->groupCounts[it->first] ++; } + int pos = thisGroup.find("ignore"); + if (pos == string::npos) { + pDataArray->groupMap[fSeq.getName()] = thisGroup; + map::iterator it = pDataArray->groupCounts.find(thisGroup); + if (it == pDataArray->groupCounts.end()) { pDataArray->groupCounts[thisGroup] = 1; } + else { pDataArray->groupCounts[it->first] ++; } + }else { ignore = true; } } } - if(pDataArray->allFiles){ + if(pDataArray->allFiles && !ignore){ ofstream output; pDataArray->m->openOutputFileAppend(pDataArray->fastaFileNames[barcodeIndex][primerIndex], output); output << ">" << fSeq.getName() << endl << contig << endl; @@ -391,14 +397,14 @@ static DWORD WINAPI MyContigsThreadFunction(LPVOID lpParam){ outScrapQual << endl; } } - num++; + pDataArray->count++; //report progress - if((num) % 1000 == 0){ pDataArray->m->mothurOut(toString(num)); pDataArray->m->mothurOutEndLine(); } + if((pDataArray->count) % 1000 == 0){ pDataArray->m->mothurOut(toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); } } //report progress - if((num) % 1000 != 0){ pDataArray->m->mothurOut(toString(num)); pDataArray->m->mothurOutEndLine(); } + if((pDataArray->count) % 1000 != 0){ pDataArray->m->mothurOut(toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); } inFFasta.close(); inRFasta.close(); @@ -413,6 +419,7 @@ static DWORD WINAPI MyContigsThreadFunction(LPVOID lpParam){ } delete alignment; + pDataArray->done = true; if (pDataArray->m->control_pressed) { pDataArray->m->mothurRemove(pDataArray->outputFasta); pDataArray->m->mothurRemove(pDataArray->outputMisMatches); pDataArray->m->mothurRemove(pDataArray->outputScrapFasta); if (thisfqualfile != "") { pDataArray->m->mothurRemove(pDataArray->outputQual); pDataArray->m->mothurRemove(pDataArray->outputScrapQual); } } return 0;