]> git.donarmstrong.com Git - mothur.git/blobdiff - summaryqualcommand.cpp
added load.logfile command. changed summary.single output for subsample=t.
[mothur.git] / summaryqualcommand.cpp
index a0d786f47518290bd71b88d15f386326d61acd64..5d7971349656d4400e5d41a24c15e576ccdf57f7 100644 (file)
@@ -45,7 +45,26 @@ string SummaryQualCommand::getHelpString(){
                exit(1);
        }
 }
-
+//**********************************************************************************************************************
+string SummaryQualCommand::getOutputFileNameTag(string type, string inputName=""){     
+       try {
+        string outputFileName = "";
+               map<string, vector<string> >::iterator it;
+        
+        //is this a type this command creates
+        it = outputTypes.find(type);
+        if (it == outputTypes.end()) {  m->mothurOut("[ERROR]: this command doesn't create a " + type + " output file.\n"); }
+        else {
+            if (type == "summary")            {   outputFileName =  "qual.summary";   }
+            else { m->mothurOut("[ERROR]: No definition for type " + type + " output file tag.\n"); m->control_pressed = true;  }
+        }
+        return outputFileName;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "SummaryQualCommand", "getOutputFileNameTag");
+               exit(1);
+       }
+}
 //**********************************************************************************************************************
 SummaryQualCommand::SummaryQualCommand(){      
        try {
@@ -162,7 +181,7 @@ int SummaryQualCommand::execute(){
                if (namefile != "") { nameMap = m->readNames(namefile); }
                
                vector<unsigned long long> positions; 
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                positions = m->divideFile(qualfile, processors);
                for (int i = 0; i < (positions.size()-1); i++) {        lines.push_back(linePair(positions[i], positions[(i+1)]));      }
 #else  
@@ -170,6 +189,7 @@ int SummaryQualCommand::execute(){
                        lines.push_back(linePair(0, 1000)); 
                }else {
                        positions = m->setFilePosFasta(qualfile, numSeqs); 
+            if (positions.size() < processors) { processors = positions.size(); }
                        
                        //figure out how many sequences you have to process
                        int numSeqsPerProcessor = numSeqs / processors;
@@ -188,7 +208,7 @@ int SummaryQualCommand::execute(){
                if (m->control_pressed) {  return 0; }
                
                //print summary file
-               string summaryFile = outputDir + m->getRootName(m->getSimpleName(qualfile)) + "qual.summary";
+               string summaryFile = outputDir + m->getRootName(m->getSimpleName(qualfile)) + getOutputFileNameTag("summary");
                printQual(summaryFile, position, averageQ, scores);
                
                if (m->control_pressed) {  m->mothurRemove(summaryFile); return 0; }
@@ -267,7 +287,7 @@ int SummaryQualCommand::driverCreateSummary(vector<int>& position, vector<int>&
                                count += num;
                        }
                        
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                        unsigned long long pos = in.tellg();
                        if ((pos == -1) || (pos >= filePos.end)) { break; }
 #else
@@ -291,7 +311,7 @@ int SummaryQualCommand::createProcessesCreateSummary(vector<int>& position, vect
                int numSeqs = 0;
                processIDS.clear();
                
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
                
                //loop through and create all the processes you want
                while (process != processors) {