+ \r
+ groupfile = validParameter.validFile(parameters, "group", false);\r
+ if (groupfile == "not found") { groupfile = ""; }\r
+ else {\r
+ hasGroup = true;\r
+ m->splitAtDash(groupfile, groupFileNames);\r
+ \r
+ //go through files and make sure they are good, if not, then disregard them\r
+ for (int i = 0; i < groupFileNames.size(); i++) {\r
+ bool ignore = false;\r
+ if (groupFileNames[i] == "current") {\r
+ groupFileNames[i] = m->getGroupFile();\r
+ if (groupFileNames[i] != "") { m->mothurOut("Using " + groupFileNames[i] + " as input file for the group parameter where you had given current."); m->mothurOutEndLine(); }\r
+ else {\r
+ m->mothurOut("You have no current group file, ignoring current."); m->mothurOutEndLine(); ignore=true;\r
+ //erase from file list\r
+ groupFileNames.erase(groupFileNames.begin()+i);\r
+ i--;\r
+ }\r
+ }\r
+ \r
+ if (!ignore) {\r
+ \r
+ if (inputDir != "") {\r
+ string path = m->hasPath(groupFileNames[i]);\r
+ //if the user has not given a path then, add inputdir. else leave path alone.\r
+ if (path == "") { groupFileNames[i] = inputDir + groupFileNames[i]; }\r
+ }\r
+ \r
+ ifstream in;\r
+ int ableToOpen = m->openInputFile(groupFileNames[i], in, "noerror");\r
+ \r
+ //if you can't open it, try default location\r
+ if (ableToOpen == 1) {\r
+ if (m->getDefaultPath() != "") { //default path is set\r
+ string tryPath = m->getDefaultPath() + m->getSimpleName(groupFileNames[i]);\r
+ m->mothurOut("Unable to open " + groupFileNames[i] + ". Trying default " + tryPath); m->mothurOutEndLine();\r
+ ifstream in2;\r
+ ableToOpen = m->openInputFile(tryPath, in2, "noerror");\r
+ in2.close();\r
+ groupFileNames[i] = tryPath;\r
+ }\r
+ }\r
+ //if you can't open it, try default location\r
+ if (ableToOpen == 1) {\r
+ if (m->getOutputDir() != "") { //default path is set\r
+ string tryPath = m->getOutputDir() + m->getSimpleName(groupFileNames[i]);\r
+ m->mothurOut("Unable to open " + groupFileNames[i] + ". Trying output directory " + tryPath); m->mothurOutEndLine();\r
+ ifstream in2;\r
+ ableToOpen = m->openInputFile(tryPath, in2, "noerror");\r
+ in2.close();\r
+ groupFileNames[i] = tryPath;\r
+ }\r
+ }\r
+ in.close();\r
+ \r
+ if (ableToOpen == 1) {\r
+ m->mothurOut("Unable to open " + groupFileNames[i] + ". It will be disregarded."); m->mothurOutEndLine();\r
+ //erase from file list\r
+ groupFileNames.erase(groupFileNames.begin()+i);\r
+ i--;\r
+ }\r
+ }\r
+ }\r
+ \r
+ //make sure there is at least one valid file left\r
+ if (groupFileNames.size() == 0) { m->mothurOut("no valid group files."); m->mothurOutEndLine(); abort = true; }\r
+ }\r