vector<string> GetOTURepCommand::setParameters(){
try {
CommandParameter plist("list", "InputTypes", "", "", "none", "none", "none",false,true); parameters.push_back(plist);
- CommandParameter pfasta("fasta", "InputTypes", "", "", "none", "none", "none",false,true); parameters.push_back(pfasta);
+ CommandParameter pfasta("fasta", "InputTypes", "", "", "none", "none", "none",false,false); parameters.push_back(pfasta);
CommandParameter pgroup("group", "InputTypes", "", "", "none", "none", "none",false,false); parameters.push_back(pgroup);
CommandParameter pphylip("phylip", "InputTypes", "", "", "PhylipColumn", "PhylipColumn", "none",false,false); parameters.push_back(pphylip);
CommandParameter pname("name", "InputTypes", "", "", "none", "none", "ColumnName",false,false); parameters.push_back(pname);
string GetOTURepCommand::getHelpString(){
try {
string helpString = "";
- helpString += "The get.oturep command parameters are phylip, column, list, fasta, name, group, large, weighted, cutoff, precision, groups, sorted and label. The fasta and list parameters are required, as well as phylip or column and name, unless you have valid current files.\n";
+ helpString += "The get.oturep command parameters are phylip, column, list, fasta, name, group, large, weighted, cutoff, precision, groups, sorted and label. The list parameter is required, as well as phylip or column and name, unless you have valid current files.\n";
helpString += "The label parameter allows you to select what distance levels you would like a output files created for, and is separated by dashes.\n";
helpString += "The phylip or column parameter is required, but only one may be used. If you use a column file the name filename is required. \n";
helpString += "If you do not provide a cutoff value 10.00 is assumed. If you do not provide a precision value then 100 is assumed.\n";
//check for required parameters
fastafile = validParameter.validFile(parameters, "fasta", true);
- if (fastafile == "not found") {
- fastafile = m->getFastaFile();
- if (fastafile != "") { m->mothurOut("Using " + fastafile + " as input file for the fasta parameter."); m->mothurOutEndLine(); }
- else { m->mothurOut("You have no current fastafile and the fasta parameter is required."); m->mothurOutEndLine(); abort = true; }
- }
+ if (fastafile == "not found") { fastafile = ""; }
else if (fastafile == "not open") { abort = true; }
else { m->setFastaFile(fastafile); }
if ((phylipfile == "") && (columnfile == "")) { //is there are current file available for either of these?
//give priority to column, then phylip
columnfile = m->getColumnFile();
- if (columnfile != "") { m->mothurOut("Using " + columnfile + " as input file for the column parameter."); m->mothurOutEndLine(); }
+ if (columnfile != "") { distFile = columnfile; format = "column"; m->mothurOut("Using " + columnfile + " as input file for the column parameter."); m->mothurOutEndLine(); }
else {
phylipfile = m->getPhylipFile();
- if (phylipfile != "") { m->mothurOut("Using " + phylipfile + " as input file for the phylip parameter."); m->mothurOutEndLine(); }
+ if (phylipfile != "") { distFile = phylipfile; format = "phylip"; m->mothurOut("Using " + phylipfile + " as input file for the phylip parameter."); m->mothurOutEndLine(); }
else {
m->mothurOut("No valid current files. You must provide a phylip or column file before you can use the get.oturep command."); m->mothurOutEndLine();
abort = true;
m->splitAtDash(groups, Groups);
}
}
- m->Groups = Groups;
+ m->setGroups(Groups);
string temp = validParameter.validFile(parameters, "large", false); if (temp == "not found") { temp = "F"; }
large = m->isTrue(temp);
if ((weighted) && (namefile == "")) { m->mothurOut("You cannot set weighted to true unless you provide a namesfile."); m->mothurOutEndLine(); abort = true; }
temp = validParameter.validFile(parameters, "precision", false); if (temp == "not found") { temp = "100"; }
- convert(temp, precision);
+ m->mothurConvert(temp, precision);
temp = validParameter.validFile(parameters, "cutoff", false); if (temp == "not found") { temp = "10.0"; }
- convert(temp, cutoff);
+ m->mothurConvert(temp, cutoff);
cutoff += (5 / (precision * 10.0));
}
}
//openfile for getMap to use
m->openInputFile(distFile, inRow);
- if (m->control_pressed) { inRow.close(); remove(distFile.c_str()); return 0; }
+ if (m->control_pressed) { inRow.close(); m->mothurRemove(distFile); return 0; }
}
if (m->control_pressed) {
- if (large) { inRow.close(); remove(distFile.c_str()); }
+ if (large) { inRow.close(); m->mothurRemove(distFile); }
return 0;
}
if (Groups.size() != 0) {
SharedUtil* util = new SharedUtil();
- util->setGroups(Groups, groupMap->namesOfGroups, "getoturep");
+ vector<string> gNamesOfGroups = groupMap->getNamesOfGroups();
+ util->setGroups(Groups, gNamesOfGroups, "getoturep");
+ groupMap->setNamesOfGroups(gNamesOfGroups);
delete util;
}
}
set<string> userLabels = labels;
if (m->control_pressed) {
- if (large) { inRow.close(); remove(distFile.c_str()); }
+ if (large) { inRow.close(); m->mothurRemove(distFile); }
delete input; delete list; return 0;
}
if (error == 1) { return 0; } //there is an error in hte input files, abort command
if (m->control_pressed) {
- if (large) { inRow.close(); remove(distFile.c_str()); }
- for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } outputTypes.clear();
+ if (large) { inRow.close(); m->mothurRemove(distFile); }
+ for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } outputTypes.clear();
delete input; delete list; return 0;
}
if (error == 1) { return 0; } //there is an error in hte input files, abort command
if (m->control_pressed) {
- if (large) { inRow.close(); remove(distFile.c_str()); }
- for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } outputTypes.clear();
+ if (large) { inRow.close(); m->mothurRemove(distFile); }
+ for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } outputTypes.clear();
delete input; delete list; return 0;
}
if (error == 1) { return 0; } //there is an error in hte input files, abort command
if (m->control_pressed) {
- if (large) { inRow.close(); remove(distFile.c_str()); }
- for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); } outputTypes.clear();
+ if (large) { inRow.close(); m->mothurRemove(distFile); }
+ for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } outputTypes.clear();
delete input; delete list; return 0;
}
}
//close and remove formatted matrix file
if (large) {
inRow.close();
- remove(distFile.c_str());
+ m->mothurRemove(distFile);
}
delete input;
if (!weighted) { nameFileMap.clear(); }
- //read fastafile
- fasta = new FastaMap();
- fasta->readFastaFile(fastafile);
-
- //if user gave a namesfile then use it
- if (namefile != "") { readNamesFile(); }
-
- //output create and output the .rep.fasta files
- map<string, string>::iterator itNameFile;
- for (itNameFile = outputNameFiles.begin(); itNameFile != outputNameFiles.end(); itNameFile++) {
- processNames(itNameFile->first, itNameFile->second);
+
+ if (fastafile != "") {
+ //read fastafile
+ fasta = new FastaMap();
+ fasta->readFastaFile(fastafile);
+
+ //if user gave a namesfile then use it
+ if (namefile != "") { readNamesFile(); }
+
+ //output create and output the .rep.fasta files
+ map<string, string>::iterator itNameFile;
+ for (itNameFile = outputNameFiles.begin(); itNameFile != outputNameFiles.end(); itNameFile++) {
+ processFastaNames(itNameFile->first, itNameFile->second);
+ }
+ }else {
+ //output create and output the .rep.fasta files
+ map<string, string>::iterator itNameFile;
+ for (itNameFile = outputNameFiles.begin(); itNameFile != outputNameFiles.end(); itNameFile++) {
+ processNames(itNameFile->first, itNameFile->second);
+ }
}
- delete fasta;
- if (groupfile != "") { delete groupMap; }
+
+ if (groupfile != "") { delete groupMap; }
if (m->control_pressed) { return 0; }
}
}
//**********************************************************************************************************************
-int GetOTURepCommand::processNames(string filename, string label) {
+int GetOTURepCommand::processFastaNames(string filename, string label) {
try{
//create output file
out.close();
out2.close();
- remove(filename.c_str());
+ m->mothurRemove(filename);
rename(tempNameFile.c_str(), filename.c_str());
return 0;
}
+ catch(exception& e) {
+ m->errorOut(e, "GetOTURepCommand", "processFastaNames");
+ exit(1);
+ }
+}
+//**********************************************************************************************************************
+int GetOTURepCommand::processNames(string filename, string label) {
+ try{
+
+ //create output file
+ if (outputDir == "") { outputDir += m->hasPath(listfile); }
+
+ ofstream out2;
+ string tempNameFile = filename + ".temp";
+ m->openOutputFile(tempNameFile, out2);
+
+ ifstream in;
+ m->openInputFile(filename, in);
+
+ int i = 0;
+ string rep, binnames;
+ while (!in.eof()) {
+ if (m->control_pressed) { break; }
+ in >> i >> rep >> binnames; m->gobble(in);
+ out2 << rep << '\t' << binnames << endl;
+ }
+ in.close();
+ out2.close();
+
+ m->mothurRemove(filename);
+ rename(tempNameFile.c_str(), filename.c_str());
+
+ return 0;
+ }
catch(exception& e) {
m->errorOut(e, "GetOTURepCommand", "processNames");
exit(1);