string ValidParameters::validFile(map<string, string>& container, string parameter, bool isFile) {
try {
int ableToOpen;
- ifstream in;
+
map<string, string>::iterator it;
it = container.find(parameter);
if(it != container.end()){ //no parameter given
if(isFile == true) {
+
+ int pos = (it->second).find(".tx.");
+ if (pos != string::npos) { m->sharedHeaderMode = "tax"; }
+ else { m->sharedHeaderMode = "otu"; }
#ifdef USE_MPI
int pid, processors;
if (pid == 0) {
#endif
-
+ ifstream in;
ableToOpen = m->openInputFile(it->second, in, "noerror");
+ in.close();
//if you can't open it, try default location
if (ableToOpen == 1) {
if (m->getDefaultPath() != "") { //default path is set
string tryPath = m->getDefaultPath() + m->getSimpleName(it->second);
m->mothurOut("Unable to open " + it->second + ". Trying default " + tryPath); m->mothurOutEndLine();
- ableToOpen = m->openInputFile(tryPath, in, "noerror");
+ ifstream in2;
+ ableToOpen = m->openInputFile(tryPath, in2, "noerror");
+ in2.close();
container[parameter] = tryPath;
}
}
- in.close();
+ //if you can't open it, try default location
+ if (ableToOpen == 1) {
+ if (m->getOutputDir() != "") { //default path is set
+ string tryPath = m->getOutputDir() + m->getSimpleName(it->second);
+ m->mothurOut("Unable to open " + it->second + ". Trying output directory " + tryPath); m->mothurOutEndLine();
+ ifstream in2;
+ ableToOpen = m->openInputFile(tryPath, in2, "noerror");
+ container[parameter] = tryPath;
+ in2.close();
+ }
+ }
+
+
#ifdef USE_MPI
for(int i = 1; i < processors; i++) {
m->mothurOut("Unable to open " + container[parameter]); m->mothurOutEndLine();
return "not open";
}
+
+ //check phylip file to make sure its really phylip and not column
+ if ((it->first == "phylip") && (ableToOpen != 1)) {
+ ifstream inPhylip;
+ m->openInputFile(it->second, inPhylip);
+
+ string numTest, name;
+ inPhylip >> numTest >> name;
+ inPhylip.close();
+
+ if (!m->isContainingOnlyDigits(numTest)) { m->mothurOut("[ERROR]: expected a number and got " + numTest + ". I suspect you entered a column formatted file as a phylip file, aborting."); m->mothurOutEndLine(); return "not found"; }
+ }
+
+ //check for blank file
+ if (ableToOpen != 1) {
+ if (m->isBlank(container[parameter])) {
+ m->mothurOut("[ERROR]: " + container[parameter] + " is blank, aborting."); m->mothurOutEndLine(); return "not found";
+ }
+ }
+
}
}else { return "not found"; }