]> git.donarmstrong.com Git - mothur.git/blobdiff - screenseqscommand.cpp
added checks to make sure windows processes completed their tasks.
[mothur.git] / screenseqscommand.cpp
index 5a9c0c8320b7305834cdf4bb544effd515728417..1e6b5a36786a58ce9ca44de8703a620554d89732 100644 (file)
@@ -588,7 +588,7 @@ int ScreenSeqsCommand::screenNameGroupFile(set<string> badSeqNames){
                while(!inputNames.eof()){
                        if (m->control_pressed) { goodNameOut.close();  inputNames.close(); m->mothurRemove(goodNameFile);  return 0; }
 
-                       inputNames >> seqName >> seqList;
+                       inputNames >> seqName; m->gobble(inputNames); inputNames >> seqList;
                        it = badSeqNames.find(seqName);
                                
                        if(it != badSeqNames.end()){
@@ -636,7 +636,7 @@ int ScreenSeqsCommand::screenNameGroupFile(set<string> badSeqNames){
                        while(!inputGroups.eof()){
                                if (m->control_pressed) { goodGroupOut.close(); inputGroups.close(); m->mothurRemove(goodNameFile);  m->mothurRemove(goodGroupFile); return 0; }
 
-                               inputGroups >> seqName >> group;
+                               inputGroups >> seqName; m->gobble(inputGroups); inputGroups >> group;
                                
                                it = badSeqGroups.find(seqName);
                                
@@ -934,6 +934,9 @@ int ScreenSeqsCommand::createProcessesCreateSummary(vector<int>& startPosition,
                //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]);       }
@@ -970,7 +973,7 @@ int ScreenSeqsCommand::screenGroupFile(set<string> badSeqNames){
                while(!inputGroups.eof()){
                        if (m->control_pressed) { goodGroupOut.close(); inputGroups.close(); m->mothurRemove(goodGroupFile); return 0; }
 
-                       inputGroups >> seqName >> group;
+                       inputGroups >> seqName; m->gobble(inputGroups); inputGroups >> group;
                        it = badSeqNames.find(seqName);
                        
                        if(it != badSeqNames.end()){
@@ -1157,7 +1160,7 @@ int ScreenSeqsCommand::screenTaxonomy(set<string> badSeqNames){
                while(!input.eof()){
                        if (m->control_pressed) { goodTaxOut.close(); input.close(); m->mothurRemove(goodTaxFile); return 0; }
                        
-                       input >> seqName >> tax;
+                       input >> seqName; m->gobble(input); input >> tax;
                        it = badSeqNames.find(seqName);
                        
                        if(it != badSeqNames.end()){ badSeqNames.erase(it); }
@@ -1518,6 +1521,9 @@ int ScreenSeqsCommand::createProcesses(string goodFileName, string badAccnos, st
                //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];