//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
num += pDataArray[i]->count;
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
inFASTA.seekg(pDataArray->start-1); pDataArray->m->gobble(inFASTA);
}
- pDataArray->count = pDataArray->end;
-
AlignmentDB* templateDB = new AlignmentDB(pDataArray->templateFileName, pDataArray->search, pDataArray->kmerSize, pDataArray->gapOpen, pDataArray->gapExtend, pDataArray->match, pDataArray->misMatch, pDataArray->threadID);
//moved this into driver to avoid deep copies in windows paralellized version
alignment = new NeedlemanOverlap(pDataArray->gapOpen, pDataArray->match, pDataArray->misMatch, longestBase);
}
- int count = 0;
+ pDataArray->count = 0;
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process
if (pDataArray->m->control_pressed) { break; }
delete nast;
if (needToDeleteCopy) { delete copy; }
- count++;
+ pDataArray->count++;
}
delete candidateSeq;
//report progress
- if((count) % 100 == 0){ pDataArray->m->mothurOut(toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 100 == 0){ pDataArray->m->mothurOut(toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
}
//report progress
- if((count) % 100 != 0){ pDataArray->m->mothurOut(toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 100 != 0){ pDataArray->m->mothurOut(toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
delete alignment;
delete templateDB;
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
num += pDataArray[i]->count;
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
num += pDataArray[i]->count;
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
inFASTA.seekg(pDataArray->start-1); pDataArray->m->gobble(inFASTA);
}
- pDataArray->count = pDataArray->end;
-
if (pDataArray->m->control_pressed) { out.close(); out2.close(); if (pDataArray->trim) { out3.close(); } inFASTA.close(); delete chimera; return 0; }
if (chimera->getUnaligned()) {
if (pDataArray->start == 0) { chimera->printHeader(out); }
- int count = 0;
+ pDataArray->count = 0;
for(int i = 0; i < pDataArray->end; i++){
if (pDataArray->m->control_pressed) { out.close(); out2.close(); if (pDataArray->trim) { out3.close(); } inFASTA.close(); delete chimera; return 1; }
}
- count++;
+ pDataArray->count++;
}
delete candidateSeq;
//report progress
- if((count) % 100 == 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 100 == 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
}
//report progress
- if((count) % 100 != 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 100 != 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
pDataArray->numNoParents = chimera->getNumNoParents();
- if (pDataArray->numNoParents == count) { pDataArray->m->mothurOut("[WARNING]: megablast returned 0 potential parents for all your sequences. This could be due to formatdb.exe not being setup properly, please check formatdb.log for errors.\n"); }
+ if (pDataArray->numNoParents == pDataArray->count) { pDataArray->m->mothurOut("[WARNING]: megablast returned 0 potential parents for all your sequences. This could be due to formatdb.exe not being setup properly, please check formatdb.log for errors.\n"); }
out.close();
out2.close();
ofstream out23;
pDataArray->m->openOutputFile(outputFileName, out23);
+ int fcount = 0;
while (!in23.eof()) {
if (pDataArray->m->control_pressed) { break; }
Sequence seq(in23); pDataArray->m->gobble(in23);
- if (seq.getName() != "") { seq.printSequence(out23); }
+ if (seq.getName() != "") { seq.printSequence(out23); fcount++; }
}
in23.close();
out23.close();
in.close();
out.close();
+ if (fcount != totalSeqs) { pDataArray->m->mothurOut("[ERROR]: process " + toString(pDataArray->threadID) + " only processed " + toString(pDataArray->count) + " of " + toString(pDataArray->end) + " sequences assigned to it, quitting. \n"); pDataArray->m->control_pressed = true; }
+
if (pDataArray->m->control_pressed) { return 0; }
pDataArray->m->mothurOutEndLine(); pDataArray->m->mothurOut("It took " + toString(time(NULL) - start) + " secs to check " + toString(totalSeqs) + " sequences."); pDataArray->m->mothurOutEndLine();
pDataArray->count = totalSeqs;
pDataArray->numChimeras = numChimeras;
+
return totalSeqs;
}
for(int i=0; i < pDataArray.size(); i++){
if (pDataArray[i]->wroteAccnos) { wroteAccnos = pDataArray[i]->wroteAccnos; nonBlankAccnosFiles.push_back(outAccnos + toString(processIDS[i]) + ".temp"); }
else { m->mothurRemove((outAccnos + toString(processIDS[i]) + ".temp")); }
+ //check to make sure the process finished
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
}
string outFasta, outAccnos, keep;
unsigned long long start;
unsigned long long end;
- int numbases;
+ int numbases, count;
bool countGaps, Short, wroteAccnos;
MothurOut* m;
string namefile;
bool done = false;
bool wroteAccnos = false;
- int count = 0;
+ pDataArray->count = 0;
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process
outAcc << seq.getName() << endl;
pDataArray->wroteAccnos = true;
}
- count++;
+ pDataArray->count++;
}
//report progress
- if((count) % 1000 == 0){ pDataArray->m->mothurOut(toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 1000 == 0){ pDataArray->m->mothurOut(toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
}
//report progress
- if((count) % 1000 != 0){ pDataArray->m->mothurOut(toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 1000 != 0){ pDataArray->m->mothurOut(toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
in.close();
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
}
inFASTA.seekg(pDataArray->start-1); pDataArray->m->gobble(inFASTA);
}
- pDataArray->count = pDataArray->end;
-
//make classify
Classify* myclassify;
string outputMethodTag = pDataArray->method + ".";
if (pDataArray->m->control_pressed) { delete myclassify; return 0; }
- int count = 0;
+ pDataArray->count = 0;
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process
if (pDataArray->m->control_pressed) { delete myclassify; return 0; }
if (myclassify->getFlipped()) { outAcc << candidateSeq->getName() << endl; }
- count++;
+ pDataArray->count++;
}
delete candidateSeq;
//report progress
- if((count) % 100 == 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 100 == 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
}
//report progress
- if((count) % 100 != 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(count)); pDataArray->m->mothurOutEndLine(); }
+ if((pDataArray->count) % 100 != 0){ pDataArray->m->mothurOut("Processing sequence: " + toString(pDataArray->count)); pDataArray->m->mothurOutEndLine(); }
delete myclassify;
inFASTA.close();
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->endLine-pDataArray[i]->startLine)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->endLine-pDataArray[i]->startLine) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
}
vector<string> Estimators;
MothurOut* m;
string output;
- int numNewFasta;
+ int numNewFasta, count;
string countends;
distanceData(){}
ofstream outFile(pDataArray->dFileName.c_str(), ios::trunc);
outFile.setf(ios::fixed, ios::showpoint);
outFile << setprecision(4);
-
+ pDataArray->count = 0;
if (pDataArray->output != "square") {
if((pDataArray->output == "lt") && (pDataArray->startLine == 0)){ outFile << pDataArray->alignDB.getNumSeqs() << endl; }
if(i % 100 == 0){
pDataArray->m->mothurOut(toString(i) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
}
-
+ pDataArray->count++;
}
- pDataArray->m->mothurOut(toString(pDataArray->endLine-1) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
+ pDataArray->m->mothurOut(toString(pDataArray->count) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
}else{
if(pDataArray->startLine == 0){ outFile << pDataArray->alignDB.getNumSeqs() << endl; }
if(i % 100 == 0){
pDataArray->m->mothurOut(toString(i) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
}
-
+ pDataArray->count++;
}
- pDataArray->m->mothurOut(toString(pDataArray->endLine-1) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
+ pDataArray->m->mothurOut(toString(pDataArray->count) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
}
outFile.close();
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
}
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
F.mergeFilter(pDataArray[i]->F.getFilter());
for (int k = 0; k < alignmentLength; k++) { F.a[k] += pDataArray[i]->F.a[k]; }
in.seekg(pDataArray->start-1); pDataArray->m->gobble(in); \r
}\r
\r
- pDataArray->count = pDataArray->end;\r
+ pDataArray->count = 0;\r
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process\r
\r
if (pDataArray->m->control_pressed) { in.close(); pDataArray->count = 1; return 1; }\r
if(pDataArray->trump != '*') { pDataArray->F.doTrump(current); }\r
if(pDataArray->m->isTrue(pDataArray->vertical) || pDataArray->soft != 0) { pDataArray->F.getFreqs(current); }\r
}\r
- \r
+ pDataArray->count++;\r
//report progress\r
if((i) % 100 == 0){ pDataArray->m->mothurOut(toString(i)); pDataArray->m->mothurOutEndLine(); }\r
}\r
in.seekg(pDataArray->start-1); pDataArray->m->gobble(in); \r
}\r
\r
- pDataArray->count = pDataArray->end;\r
+ pDataArray->count = 0;\r
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process\r
\r
if (pDataArray->m->control_pressed) { in.close(); out.close(); pDataArray->count = 1; return 1; }\r
\r
out << '>' << seq.getName() << endl << filterSeq << endl;\r
}\r
- \r
+ pDataArray->count++;\r
//report progress\r
if((i) % 100 == 0){ pDataArray->m->mothurOut(toString(i)); pDataArray->m->mothurOutEndLine(); }\r
}\r
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (!pDataArray[i]->done) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (map<string, int>::iterator it = pDataArray[i]->groupCounts.begin(); it != pDataArray[i]->groupCounts.end(); it++) {
map<string, int>::iterator it2 = groupCounts.find(it->first);
if (it2 == groupCounts.end()) { groupCounts[it->first] = it->second; }
MothurOut* m;
float match, misMatch, gapOpen, gapExtend;
int count, threshold, threadID, pdiffs, bdiffs, tdiffs;
- bool allFiles, createGroup;
+ bool allFiles, createGroup, done;
map<string, int> groupCounts;
map<string, string> groupMap;
vector<string> primerNameVector;
allFiles = all;
createGroup = cg;
threadID = tid;
+ done=false;
}
};
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];
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();
}
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;
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->end-pDataArray[i]->start)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end-pDataArray[i]->start) + " groups assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (int j = 0; j < pDataArray[i]->thisLookup.size(); j++) { delete pDataArray[i]->thisLookup[j]; }
for (int k = 0; k < calcDists.size(); k++) {
unsigned long long start;
unsigned long long end;
MothurOut* m;
+ int count;
distSharedData(){}
distSharedData(MothurOut* mout, unsigned long long st, unsigned long long en, vector<string> est, vector<SharedRAbundVector*> lu) {
end = en;
Estimators = est;
thisLookup = lu;
+ count = 0;
}
};
/**************************************************************************************************/
vector<SharedRAbundVector*> subset;
for (int k = pDataArray->start; k < pDataArray->end; k++) { // pass cdd each set of groups to compare
-
+ pDataArray->count++;
for (int l = 0; l < k; l++) {
if (k != l) { //we dont need to similiarity of a groups to itself
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->num)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->num) + " groups assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (int j = 0; j < pDataArray[i]->thisLookUp.size(); j++) { delete pDataArray[i]->thisLookUp[j]; }
for (int j = 0; j < pDataArray[i]->outputNames.size(); j++) {
outputNames.push_back(pDataArray[i]->outputNames[j]);
vector<string> designMapGroups;
vector<string> outputNames;
int start;
- int num, iters;
+ int num, iters, count;
float threshold;
MothurOut* m;
string sharedfile;
designMapGroups = dg;
iters = i;
threshold = thr;
+ count=0;
}
};
/**************************************************************************************************/
//for each combo
for (int c = pDataArray->start; c < (pDataArray->start+pDataArray->num); c++) {
-
+ pDataArray->count++;
//get set names
string setA = pDataArray->namesOfGroupCombos[c][0];
string setB = pDataArray->namesOfGroupCombos[c][1];
//double vm, rss;
//mem_usage(vm, rss);
- mothurOut("[ERROR]: ");
- mothurOut(toString(e.what()));
- mothurOut(" has occurred in the " + object + " class function " + function + ". Please contact Pat Schloss at mothur.bugs@gmail.com, and be sure to include the mothur.logFile with your inquiry.");
- mothurOutEndLine();
+ string errorType = toString(e.what());
+
+ int pos = errorType.find("bad_alloc");
+ mothurOut("[ERROR]: ");
+ mothurOut(errorType);
+
+ if (pos == string::npos) { //not bad_alloc
+ mothurOut(" has occurred in the " + object + " class function " + function + ". Please contact Pat Schloss at mothur.bugs@gmail.com, and be sure to include the mothur.logFile with your inquiry.");
+ mothurOutEndLine();
+ }else { //bad alloc
+ if (object == "cluster"){
+ mothurOut(" has occurred in the " + object + " class function " + function + ". This error indicates your computer is running out of memory. There are two common causes for this, file size and format.\n\nFile Size:\nThe cluster command loads your distance matrix into RAM, and your distance file is most likely too large to fit in RAM. There are two options to help with this. The first is to use a cutoff. By using a cutoff mothur will only load distances that are below the cutoff. If that is still not enough, there is a command called cluster.split, http://www.mothur.org/wiki/cluster.split which divides the distance matrix, and clusters the smaller pieces separately. You may also be able to reduce the size of the original distance matrix by using the commands outlined in the Schloss SOP, http://www.mothur.org/wiki/Schloss_SOP. \n\nWrong Format:\nThis error can be caused by trying to read a column formatted distance matrix using the phylip parameter. By default, the dist.seqs command generates a column formatted distance matrix. To make a phylip formatted matrix set the dist.seqs command parameter output to lt. \n\nIf you are uable to resolve the issue, please contact Pat Schloss at mothur.bugs@gmail.com, and be sure to include the mothur.logFile with your inquiry.");
+ }else {
+ mothurOut(" has occurred in the " + object + " class function " + function + ". This error indicates your computer is running out of memory. This is most commonly caused by trying to process a dataset too large, or a file format issue. If you are running our 32bit version, your memory usage is limited to 4G. If you have more than 4G of RAM and are running a 64bit OS, using our 64bit version may resolve your issue. Also, you may be able to reduce the size of your dataset by using the commands outlined in the Schloss SOP, http://www.mothur.org/wiki/Schloss_SOP. If you are uable to resolve the issue, please contact Pat Schloss at mothur.bugs@gmail.com, and be sure to include the mothur.logFile with your inquiry.");
+ }
+ }
}
/*********************************************************************************************/
//The following was originally from http://stackoverflow.com/questions/669438/how-to-get-memory-usage-at-run-time-in-c
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->end-pDataArray[i]->start)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end-pDataArray[i]->start) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
}
outFile.setf(ios::fixed, ios::showpoint);
outFile << setprecision(4);
- pDataArray->count = pDataArray->end;
+ pDataArray->count = 0;
int startTime = time(NULL);
if(pDataArray->start == 0){ outFile << pDataArray->alignDB.getNumSeqs() << endl; }
for(int i=pDataArray->start;i<pDataArray->end;i++){
+ pDataArray->count++;
string name = pDataArray->alignDB.get(i).getName();
//pad with spaces to make compatible
}
}
- pDataArray->m->mothurOut(toString(pDataArray->end-1) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
+ pDataArray->m->mothurOut(toString(pDataArray->count) + "\t" + toString(time(NULL) - startTime)); pDataArray->m->mothurOutEndLine();
outFile.close();
delete alignment;
}
set<int> lengths;
- pDataArray->count = pDataArray->fend;
+
for(int i = 0; i < pDataArray->fend; i++){ //end is the number of sequences to process
-
+ pDataArray->count++;
if (pDataArray->m->control_pressed) { break; }
Sequence currSeq(inFASTA); pDataArray->m->gobble(inFASTA);
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (pDataArray[i]->count != pDataArray[i]->fend) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->fend) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (set<string>::iterator it = pDataArray[i]->badSeqNames.begin(); it != pDataArray[i]->badSeqNames.end(); it++) { badSeqNames.insert(*it); }
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->end-pDataArray[i]->start)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end-pDataArray[i]->start) + " groups assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (int j = 0; j < pDataArray[i]->mapFileNames.size(); j++) {
outputNames.push_back(pDataArray[i]->mapFileNames[j]); outputTypes["map"].push_back(pDataArray[i]->mapFileNames[j]);
}
string newFName, newNName, newMName;
MothurOut* m;
int start;
- int end;
+ int end, count;
int diffs, threadID;
vector<string> groups;
vector<string> mapFileNames;
groups = gr;
countfile = c;
topdown = td;
+ count=0;
}
};
//precluster each group
for (int k = pDataArray->start; k < pDataArray->end; k++) {
+ pDataArray->count++;
+
int start = time(NULL);
if (pDataArray->m->control_pressed) { delete parser; return 0; }
#else
- counts = driverGetCounts(nameMap, fastaCount, otuCounts, 0, 1000);
+ unsigned long long start = 0;
+ unsigned long long end = 1000;
+ counts = driverGetCounts(nameMap, fastaCount, otuCounts, start, end);
#endif
//you will have a nameMap error if there is a namefile or countfile, but if those aren't given we want to make sure the fasta and list file match.
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (int k = 0; k < pDataArray[i]->startPosition.size(); k++) { startPosition.push_back(pDataArray[i]->startPosition[k]); }
for (int k = 0; k < pDataArray[i]->endPosition.size(); k++) { endPosition.push_back(pDataArray[i]->endPosition[k]); }
for (int k = 0; k < pDataArray[i]->seqLength.size(); k++) { seqLength.push_back(pDataArray[i]->seqLength[k]); }
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (set<string>::iterator it = pDataArray[i]->badSeqNames.begin(); it != pDataArray[i]->badSeqNames.end(); it++) { badSeqNames.insert(*it); }
CloseHandle(hThreadArray[i]);
delete pDataArray[i];
in.seekg(pDataArray->start-1); pDataArray->m->gobble(in);
}
- pDataArray->count = pDataArray->end;
+
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process
+ pDataArray->count++;
+
if (pDataArray->m->control_pressed) { in.close(); pDataArray->count = 1; return 1; }
Sequence current(in); pDataArray->m->gobble(in);
in.seekg(pDataArray->start-1); pDataArray->m->gobble(in);
}
- pDataArray->count = pDataArray->end;
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process
+ pDataArray->count++;
+
if (pDataArray->m->control_pressed) { in.close(); badAccnosFile.close(); goodFile.close(); pDataArray->count = 1; return 1; }
Sequence currSeq(in); pDataArray->m->gobble(in);
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
num += pDataArray[i]->count;
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (int k = 0; k < pDataArray[i]->startPosition.size(); k++) { startPosition.push_back(pDataArray[i]->startPosition[k]); }
for (int k = 0; k < pDataArray[i]->endPosition.size(); k++) { endPosition.push_back(pDataArray[i]->endPosition[k]); }
for (int k = 0; k < pDataArray[i]->seqLength.size(); k++) { seqLength.push_back(pDataArray[i]->seqLength[k]); }
in.seekg(pDataArray->start-1); pDataArray->m->gobble(in);
}
- pDataArray->count = pDataArray->end;
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process
+ pDataArray->count++;
+
if (pDataArray->m->control_pressed) { in.close(); outSummary.close(); pDataArray->count = 1; return 1; }
Sequence current(in); pDataArray->m->gobble(in);
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->end-pDataArray[i]->start)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end-pDataArray[i]->start) + " groups assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (int j = 0; j < pDataArray[i]->mapfileNames.size(); j++) {
mapfileNames.push_back(pDataArray[i]->mapfileNames[j]);
}
MothurOut* m;
int start;
int end;
- int sigma, threadID;
+ int sigma, threadID, count;
vector<string> groups;
vector<string> mapfileNames;
sigma = s;
threadID = tid;
groups = gr;
+ count=0;
}
};
//precluster each group
for (int k = pDataArray->start; k < pDataArray->end; k++) {
+ pDataArray->count++;
+
int start = time(NULL);
if (pDataArray->m->control_pressed) { return 0; }
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
- numSeqs += pDataArray[i]->count;
+ numSeqs += pDataArray[i]->numSeqs;
+ if (pDataArray[i]->count != pDataArray[i]->end) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
int tempNum = pDataArray[i]->position.size();
if (position.size() < tempNum) { position.resize(tempNum, 0); }
if (averageQ.size() < tempNum) { averageQ.resize(tempNum, 0); }
string filename;
unsigned long long start;
unsigned long long end;
- int count;
+ int count, numSeqs;
MothurOut* m;
bool hasNameMap;
map<string, int> nameMap;
in.seekg(pDataArray->start-1); pDataArray->m->gobble(in);
}
- int count = 0;
+ pDataArray->count = 0;
+ pDataArray->numSeqs = 0;
for(int i = 0; i < pDataArray->end; i++){ //end is the number of sequences to process
if (pDataArray->m->control_pressed) { in.close(); pDataArray->count = 1; return 1; }
else { pDataArray->scores.at(i)[thisScores[i]] += num; }
}
- count += num;
+ pDataArray->numSeqs += num;
+ pDataArray->count++;
}
}
- pDataArray->count = count;
in.close();
return 0;
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->end-pDataArray[i]->start)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end-pDataArray[i]->start) + " groups assigned to it, quitting. \n"); m->control_pressed = true;
+ }
m->appendFiles((sumFileName + toString(processIDS[i]) + ".temp"), sumFileName);
m->mothurRemove((sumFileName + toString(processIDS[i]) + ".temp"));
unsigned long long end;
MothurOut* m;
string sumFile;
+ int count;
summarySharedData(){}
summarySharedData(string sf, MothurOut* mout, unsigned long long st, unsigned long long en, vector<string> est, vector<SharedRAbundVector*> lu) {
end = en;
Estimators = est;
thisLookup = lu;
+ count=0;
}
};
/**************************************************************************************************/
vector<SharedRAbundVector*> subset;
for (int k = pDataArray->start; k < pDataArray->end; k++) { // pass cdd each set of groups to compare
-
+ pDataArray->count++;
for (int l = 0; l < k; l++) {
outputFileHandle << pDataArray->thisLookup[0]->getLabel() << '\t';
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != (pDataArray[i]->end-pDataArray[i]->start)) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->end-pDataArray[i]->start) + " groups assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (int j = 0; j < pDataArray[i]->thisLookup.size(); j++) { delete pDataArray[i]->thisLookup[j]; }
for (int k = 0; k < calcDists.size(); k++) {
unsigned long long start;
unsigned long long end;
MothurOut* m;
+ int count;
treeSharedData(){}
treeSharedData(MothurOut* mout, unsigned long long st, unsigned long long en, vector<string> est, vector<SharedRAbundVector*> lu) {
end = en;
Estimators = est;
thisLookup = lu;
+ count=0;
}
};
/**************************************************************************************************/
vector<SharedRAbundVector*> subset;
for (int k = pDataArray->start; k < pDataArray->end; k++) { // pass cdd each set of groups to compare
+ pDataArray->count++;
+
for (int l = 0; l < k; l++) {
if (k != l) { //we dont need to similiarity of a groups to itself
//Close all thread handles and free memory allocations.
for(int i=0; i < pDataArray.size(); i++){
+ if (pDataArray[i]->count != pDataArray[i]->lineEnd) {
+ m->mothurOut("[ERROR]: process " + toString(i) + " only processed " + toString(pDataArray[i]->count) + " of " + toString(pDataArray[i]->lineEnd) + " sequences assigned to it, quitting. \n"); m->control_pressed = true;
+ }
for (map<string, int>::iterator it = pDataArray[i]->groupCounts.begin(); it != pDataArray[i]->groupCounts.end(); it++) {
map<string, int>::iterator it2 = groupCounts.find(it->first);
if (it2 == groupCounts.end()) { groupCounts[it->first] = it->second; }
TrimOligos trimOligos(pDataArray->pdiffs, pDataArray->bdiffs, pDataArray->ldiffs, pDataArray->sdiffs, pDataArray->primers, pDataArray->barcodes, pDataArray->revPrimer, pDataArray->linker, pDataArray->spacer);
- pDataArray->count = pDataArray->lineEnd;
+ pDataArray->count = 0;
for(int i = 0; i < pDataArray->lineEnd; i++){ //end is the number of sequences to process
if (pDataArray->m->control_pressed) {
string origSeq = currSeq.getUnaligned();
if (origSeq != "") {
+ pDataArray->count++;
int barcodeIndex = 0;
int primerIndex = 0;