//**********************************************************************************************************************
vector<string> CatchAllCommand::setParameters(){
try {
- CommandParameter plabel("label", "String", "", "", "", "", "",false,false); parameters.push_back(plabel);
+ CommandParameter plabel("label", "String", "", "", "", "", "","",false,false); parameters.push_back(plabel);
//can choose shared or sabund not both, so put them in the same chooseOnlyOneGroup
- CommandParameter pshared("shared", "InputTypes", "", "", "catchallInputs", "catchallInputs", "none",false,false); parameters.push_back(pshared);
- CommandParameter psabund("sabund", "InputTypes", "", "", "catchallInputs", "catchallInputs", "none",false,false); parameters.push_back(psabund);
- CommandParameter pinputdir("inputdir", "String", "", "", "", "", "",false,false); parameters.push_back(pinputdir);
- CommandParameter poutputdir("outputdir", "String", "", "", "", "", "",false,false); parameters.push_back(poutputdir);
+ CommandParameter pshared("shared", "InputTypes", "", "", "catchallInputs", "catchallInputs", "none","analysis-bestanalysis-models-bubble-summary",false,false,true); parameters.push_back(pshared);
+ CommandParameter psabund("sabund", "InputTypes", "", "", "catchallInputs", "catchallInputs", "none","analysis-bestanalysis-models-bubble-summary",false,false,true); parameters.push_back(psabund);
+ CommandParameter pinputdir("inputdir", "String", "", "", "", "", "","",false,false); parameters.push_back(pinputdir);
+ CommandParameter poutputdir("outputdir", "String", "", "", "", "", "","",false,false); parameters.push_back(poutputdir);
vector<string> myArray;
for (int i = 0; i < parameters.size(); i++) { myArray.push_back(parameters[i].name); }
}
}
//**********************************************************************************************************************
+string CatchAllCommand::getOutputPattern(string type) {
+ try {
+ string pattern = "";
+
+ if (type == "analysis") { pattern = "[filename],_Analysis.csv"; }
+ else if (type == "bestanalysis") { pattern = "[filename],_BestModelsAnalysis.csv"; }
+ else if (type == "models") { pattern = "[filename],_BestModelsAnalysis.csv"; }
+ else if (type == "bubble") { pattern = "[filename],_BubblePlot.csv"; }
+ else if (type == "summary") { pattern = "[filename],catchall.summary"; }
+ else if (type == "sabund") { pattern = "[filename],[distance],csv"; }
+ else { m->mothurOut("[ERROR]: No definition for type " + type + " output pattern.\n"); m->control_pressed = true; }
+
+ return pattern;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "CatchAllCommand", "getOutputPattern");
+ exit(1);
+ }
+}
+//**********************************************************************************************************************
CatchAllCommand::CatchAllCommand(){
try {
abort = true; calledHelp = true;
setParameters();
//initialize outputTypes
vector<string> tempOutNames;
- outputTypes["csv"] = tempOutNames;
+ outputTypes["analysis"] = tempOutNames;
+ outputTypes["bestanalysis"] = tempOutNames;
+ outputTypes["models"] = tempOutNames;
+ outputTypes["bubble"] = tempOutNames;
outputTypes["summary"] = tempOutNames;
}
catch(exception& e) {
//initialize outputTypes
vector<string> tempOutNames;
- outputTypes["csv"] = tempOutNames;
- outputTypes["summary"] = tempOutNames;
+ outputTypes["analysis"] = tempOutNames;
+ outputTypes["bestanalysis"] = tempOutNames;
+ outputTypes["models"] = tempOutNames;
+ outputTypes["bubble"] = tempOutNames;
+ outputTypes["summary"] = tempOutNames;
+
//if the user changes the input directory command factory will send this info to us in the output parameter
string inputDir = validParameter.validFile(parameters, "inputdir", false);
path = m->getFullPathName(path);
if (m->debug) { m->mothurOut("[DEBUG]: mothur's path = " + path + "\n"); }
-
+
savedOutputDir = outputDir;
string catchAllCommandExe = "";
string catchAllTest = "";
#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
- catchAllCommandExe += "mono " + path + "CatchAllcmdL.exe ";
if (outputDir == "") { outputDir = "./"; } //force full pathname to be created for catchall, this is necessary because if catchall is in the path it will look for input file whereever the exe is and not the cwd.
catchAllTest = path + "CatchAllcmdL.exe";
#else
- catchAllCommandExe += "\"" + path + "CatchAllcmdW.exe\"" + " ";
if (outputDir == "") { outputDir = ".\\"; } //force full pathname to be created for catchall, this is necessary because if catchall is in the path it will look for input file whereever the exe is and not the cwd.
catchAllTest = path + "CatchAllcmdW.exe";
#endif
ifstream in;
catchAllTest = m->getFullPathName(catchAllTest);
int ableToOpen = m->openInputFile(catchAllTest, in, "no error"); in.close();
- if(ableToOpen == 1) { m->mothurOut("[ERROR]: " + catchAllTest + " file does not exist. mothur requires the catchall executable to run the catchall command."); m->mothurOutEndLine(); m->control_pressed = true; return 0; }
+ if(ableToOpen == 1) {
+ m->mothurOut(catchAllTest + " file does not exist. Checking path... \n");
+ //check to see if uchime is in the path??
+
+ string programName = "CatchAllcmdW.exe";
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
+ programName = "CatchAllcmdL.exe";
+#endif
+ string cLocation = m->findProgramPath(programName);
+
+ ifstream in2;
+ ableToOpen = m->openInputFile(cLocation, in2, "no error"); in2.close();
+
+ if(ableToOpen == 1) { m->mothurOut("[ERROR]: " + cLocation + " file does not exist. mothur requires the catchall executable."); m->mothurOutEndLine(); return 0; }
+ else { m->mothurOut("Found catchall in your path, using " + cLocation + "\n"); catchAllTest = cLocation; }
+ }
+ catchAllTest = m->getFullPathName(catchAllTest);
+
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
+ catchAllCommandExe += "mono " + catchAllTest + " ";
+#else
+ catchAllCommandExe += "\"" + catchAllTest + "\" ";
+#endif
//prepare full output directory
outputDir = m->getFullPathName(outputDir);
- if (m->debug) { m->mothurOut("[DEBUG]: catchall location = " + catchAllCommandExe + ".\n [DEBUG]: outputDir = " + outputDir + ".\n"); }
+ if (m->debug) { m->mothurOut("[DEBUG]: catchall location = " + catchAllCommandExe + "\n[DEBUG]: outputDir = " + outputDir + "\n"); }
vector<string> inputFileNames;
if (sharedfile != "") { inputFileNames = parseSharedFile(sharedfile); }
set<string> processedLabels;
set<string> userLabels = labels;
- string summaryfilename = outputDir + m->getRootName(m->getSimpleName(inputFileNames[p])) + "catchall.summary";
+ map<string, string> variables;
+ variables["[filename]"] = outputDir + m->getRootName(m->getSimpleName(inputFileNames[p]));
+ string summaryfilename = getOutputFileName("summary", variables);
summaryfilename = m->getFullPathName(summaryfilename);
- if (m->debug) { m->mothurOut("[DEBUG]: Input File = " + inputFileNames[p] + ".\n [DEBUG]: inputdata address = " + toString(&input) + ".\n [DEBUG]: sabund address = " + toString(&sabund) + ".\n"); }
+ if (m->debug) { m->mothurOut("[DEBUG]: Input File = " + inputFileNames[p] + ".\n[DEBUG]: inputdata address = " + toString(&input) + ".\n[DEBUG]: sabund address = " + toString(&sabund) + ".\n"); }
ofstream out;
m->openOutputFile(summaryfilename, out);
#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
catchAllCommand += catchAllCommandExe + filename + " " + outputPath + " 1";
#else
- if (outputPath.length() > 0) { outputPath = outputPath.substr(0, outputPath.length()-1); }
- catchAllCommand += catchAllCommandExe + "\"" + filename + "\" \"" + outputPath + "\" 1";
- //wrap entire string in ""
- catchAllCommand = "\"" + catchAllCommand + "\"";
+ //removes extra '\\' catchall doesnt like that
+ vector<string> tempNames;
+ string tempFilename = filename;
+ m->splitAtDash(tempFilename, tempNames);
+ tempFilename = tempNames[0];
+ tempNames.clear();
+ string tempOutputPath = outputPath;
+ m->splitAtDash(tempOutputPath, tempNames);
+ tempOutputPath = tempNames[0];
+ if (tempOutputPath.length() > 0) { tempOutputPath = tempOutputPath.substr(0, tempOutputPath.length()-1); }
+ catchAllCommand += catchAllCommandExe + "\"" + tempFilename + "\" \"" + tempOutputPath + "\" 1";
+ catchAllCommand = "\"" + catchAllCommand + "\"";
#endif
if (m->debug) { m->mothurOut("[DEBUG]: catchall command = " + catchAllCommand + ". About to call system.\n"); }
filename = m->getRootName(filename); filename = filename.substr(0, filename.length()-1); //rip off extra .
if (savedOutputDir == "") { filename = m->getSimpleName(filename); }
- outputNames.push_back(filename + "_Analysis.csv"); outputTypes["csv"].push_back(filename + "_Analysis.csv");
- outputNames.push_back(filename + "_BestModelsAnalysis.csv"); outputTypes["csv"].push_back(filename + "_BestModelsAnalysis.csv");
- outputNames.push_back(filename + "_BestModelsFits.csv"); outputTypes["csv"].push_back(filename + "_BestModelsFits.csv");
- outputNames.push_back(filename + "_BubblePlot.csv"); outputTypes["csv"].push_back(filename + "_BubblePlot.csv");
+ variables["[filename]"] = filename;
+ outputNames.push_back(getOutputFileName("analysis", variables)); outputTypes["analysis"].push_back(getOutputFileName("analysis", variables));
+ outputNames.push_back(getOutputFileName("bestanalysis", variables)); outputTypes["bestanalysis"].push_back(getOutputFileName("bestanalysis", variables));
+ outputNames.push_back(getOutputFileName("models", variables)); outputTypes["models"].push_back(getOutputFileName("models", variables));
+ outputNames.push_back(getOutputFileName("bubble", variables)); outputTypes["bubble"].push_back(getOutputFileName("bubble", variables));
if (m->debug) { m->mothurOut("[DEBUG]: About to create summary file for: " + filename + ".\n[DEBUG]: sabund label = " + sabund->getLabel() + ".\n"); }
#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
catchAllCommand += catchAllCommandExe + filename + " " + outputPath + " 1";
#else
- if (outputPath.length() > 0) { outputPath = outputPath.substr(0, outputPath.length()-1); }
- catchAllCommand += catchAllCommandExe + "\"" + filename + "\" \"" + outputPath + "\" 1";
+ //removes extra '\\' catchall doesnt like that
+ vector<string> tempNames;
+ string tempFilename = filename;
+ m->splitAtDash(tempFilename, tempNames);
+ tempFilename = tempNames[0];
+ tempNames.clear();
+ string tempOutputPath = outputPath;
+ m->splitAtDash(tempOutputPath, tempNames);
+ tempOutputPath = tempNames[0];
+ if (tempOutputPath.length() > 0) { tempOutputPath = tempOutputPath.substr(0, tempOutputPath.length()-1); }
+ catchAllCommand += catchAllCommandExe + "\"" + tempFilename + "\" \"" + tempOutputPath + "\" 1";
catchAllCommand = "\"" + catchAllCommand + "\"";
#endif
filename = m->getRootName(filename); filename = filename.substr(0, filename.length()-1); //rip off extra .
if (savedOutputDir == "") { filename = m->getSimpleName(filename); }
- outputNames.push_back(filename + "_Analysis.csv"); outputTypes["csv"].push_back(filename + "_Analysis.csv");
- outputNames.push_back(filename + "_BestModelsAnalysis.csv"); outputTypes["csv"].push_back(filename + "_BestModelsAnalysis.csv");
- outputNames.push_back(filename + "_BestModelsFits.csv"); outputTypes["csv"].push_back(filename + "_BestModelsFits.csv");
- outputNames.push_back(filename + "_BubblePlot.csv"); outputTypes["csv"].push_back(filename + "_BubblePlot.csv");
+ variables["[filename]"] = filename;
+ outputNames.push_back(getOutputFileName("analysis", variables)); outputTypes["analysis"].push_back(getOutputFileName("analysis", variables));
+ outputNames.push_back(getOutputFileName("bestanalysis", variables)); outputTypes["bestanalysis"].push_back(getOutputFileName("bestanalysis", variables));
+ outputNames.push_back(getOutputFileName("models", variables)); outputTypes["models"].push_back(getOutputFileName("models", variables));
+ outputNames.push_back(getOutputFileName("bubble", variables)); outputTypes["bubble"].push_back(getOutputFileName("bubble", variables));
if (m->debug) { m->mothurOut("[DEBUG]: About to create summary file for: " + filename + ".\n[DEBUG]: sabund label = " + sabund->getLabel() + ".\n"); }
#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
catchAllCommand += catchAllCommandExe + filename + " " + outputPath + " 1";
#else
- if (outputPath.length() > 0) { outputPath = outputPath.substr(0, outputPath.length()-1); }
- catchAllCommand += catchAllCommandExe + "\"" + filename + "\" \"" + outputPath + "\" 1";
- catchAllCommand = "\"" + catchAllCommand + "\"";
+ //removes extra '\\' catchall doesnt like that
+ vector<string> tempNames;
+ string tempFilename = filename;
+ m->splitAtDash(tempFilename, tempNames);
+ tempFilename = tempNames[0];
+ tempNames.clear();
+ string tempOutputPath = outputPath;
+ m->splitAtDash(tempOutputPath, tempNames);
+ tempOutputPath = tempNames[0];
+ if (tempOutputPath.length() > 0) { tempOutputPath = tempOutputPath.substr(0, tempOutputPath.length()-1); }
+ catchAllCommand += catchAllCommandExe + "\"" + tempFilename + "\" \"" + tempOutputPath + "\" 1";
+ catchAllCommand = "\"" + catchAllCommand + "\"";
#endif
if (m->debug) { m->mothurOut("[DEBUG]: catchall command = " + catchAllCommand + ". About to call system.\n"); }
filename = m->getRootName(filename); filename = filename.substr(0, filename.length()-1); //rip off extra .
if (savedOutputDir == "") { filename = m->getSimpleName(filename); }
- outputNames.push_back(filename + "_Analysis.csv"); outputTypes["csv"].push_back(filename + "_Analysis.csv");
- outputNames.push_back(filename + "_BestModelsAnalysis.csv"); outputTypes["csv"].push_back(filename + "_BestModelsAnalysis.csv");
- outputNames.push_back(filename + "_BestModelsFits.csv"); outputTypes["csv"].push_back(filename + "_BestModelsFits.csv");
- outputNames.push_back(filename + "_BubblePlot.csv"); outputTypes["csv"].push_back(filename + "_BubblePlot.csv");
- if (m->debug) { m->mothurOut("[DEBUG]: About to create summary file for: " + filename + ".\n[DEBUG]: sabund label = " + sabund->getLabel() + ".\n"); }
+ variables["[filename]"] = filename;
+ outputNames.push_back(getOutputFileName("analysis", variables)); outputTypes["analysis"].push_back(getOutputFileName("analysis", variables));
+ outputNames.push_back(getOutputFileName("bestanalysis", variables)); outputTypes["bestanalysis"].push_back(getOutputFileName("bestanalysis", variables));
+ outputNames.push_back(getOutputFileName("models", variables)); outputTypes["models"].push_back(getOutputFileName("models", variables));
+ outputNames.push_back(getOutputFileName("bubble", variables)); outputTypes["bubble"].push_back(getOutputFileName("bubble", variables));
+ if (m->debug) { m->mothurOut("[DEBUG]: About to create summary file for: " + filename + ".\n[DEBUG]: sabund label = " + sabund->getLabel() + ".\n"); }
createSummaryFile(filename + "_BestModelsAnalysis.csv", sabund->getLabel(), out);
//**********************************************************************************************************************
string CatchAllCommand::process(SAbundVector* sabund, string file1) {
try {
- string filename = outputDir + m->getRootName(m->getSimpleName(file1)) + sabund->getLabel() + ".csv";
+ map<string, string> variables;
+ variables["[filename]"] = outputDir + m->getRootName(m->getSimpleName(file1));
+ variables["[distance]"] = sabund->getLabel();
+ string filename = getOutputFileName("sabund", variables);
filename = m->getFullPathName(filename);
ofstream out;
try {
ofstream out;
- string combineFileName = savedOutputDir + m->getRootName(m->getSimpleName(sharedfile)) + "catchall.summary";
+ map<string, string> variables;
+ variables["[filename]"] = savedOutputDir + m->getRootName(m->getSimpleName(sharedfile));
+ string combineFileName = getOutputFileName("summary", variables);
//open combined file
m->openOutputFile(combineFileName, out);