X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=summaryqualcommand.cpp;h=5d7971349656d4400e5d41a24c15e576ccdf57f7;hb=957d67f7d8bbadfd2930de061e89fd9b149270fd;hp=a0d786f47518290bd71b88d15f386326d61acd64;hpb=b302d221847b504388ec044c6929e9dde42f9bb1;p=mothur.git diff --git a/summaryqualcommand.cpp b/summaryqualcommand.cpp index a0d786f..5d79713 100644 --- a/summaryqualcommand.cpp +++ b/summaryqualcommand.cpp @@ -45,7 +45,26 @@ string SummaryQualCommand::getHelpString(){ exit(1); } } - +//********************************************************************************************************************** +string SummaryQualCommand::getOutputFileNameTag(string type, string inputName=""){ + try { + string outputFileName = ""; + map >::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 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& position, vector& 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& 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) {