//**********************************************************************************************************************
RemoveLineageCommand::RemoveLineageCommand(){
try {
- abort = true;
- //initialize outputTypes
+ abort = true; calledHelp = true;
vector<string> tempOutNames;
outputTypes["fasta"] = tempOutNames;
outputTypes["taxonomy"] = tempOutNames;
//**********************************************************************************************************************
RemoveLineageCommand::RemoveLineageCommand(string option) {
try {
- abort = false;
+ abort = false; calledHelp = false;
//allow user to run help
- if(option == "help") { help(); abort = true; }
+ if(option == "help") { help(); abort = true; calledHelp = true; }
else {
//valid paramters for this command
int RemoveLineageCommand::execute(){
try {
- if (abort == true) { return 0; }
+ if (abort == true) { if (calledHelp) { return 0; } return 2; }
if (m->control_pressed) { return 0; }
m->mothurOut("Output File Names: "); m->mothurOutEndLine();
for (int i = 0; i < outputNames.size(); i++) { m->mothurOut(outputNames[i]); m->mothurOutEndLine(); }
m->mothurOutEndLine();
+
+ //set fasta file as new current fastafile
+ string current = "";
+ itTypes = outputTypes.find("fasta");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setFastaFile(current); }
+ }
+
+ itTypes = outputTypes.find("name");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setNameFile(current); }
+ }
+
+ itTypes = outputTypes.find("group");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setGroupFile(current); }
+ }
+
+ itTypes = outputTypes.find("list");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setListFile(current); }
+ }
+
+ itTypes = outputTypes.find("taxonomy");
+ if (itTypes != outputTypes.end()) {
+ if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setTaxonomyFile(current); }
+ }
}
return 0;
bool wroteSomething = false;
bool taxonsHasConfidence = false;
- vector< map<string, int> > searchTaxons;
+ vector< map<string, float> > searchTaxons;
string noConfidenceTaxons = taxons;
int hasConPos = taxons.find_first_of('(');
if (hasConPos != string::npos) {
//if the users file contains confidence scores we want to ignore them when searching for the taxons, unless the taxon has them
if (!taxonsHasConfidence) {
+
int hasConfidences = tax.find_first_of('(');
if (hasConfidences != string::npos) {
newtax = removeConfidences(tax);
}else{//if taxons has them and you don't them remove taxons
int hasConfidences = tax.find_first_of('(');
if (hasConfidences == string::npos) {
-
+
int pos = newtax.find(noConfidenceTaxons);
if (pos == string::npos) {
}
}else { //both have confidences so we want to make sure the users confidences are greater then or equal to the taxons
//first remove confidences from both and see if the taxonomy exists
-
+
string noNewTax = tax;
int hasConfidences = tax.find_first_of('(');
if (hasConfidences != string::npos) {
if (pos != string::npos) { //if yes, then are the confidences okay
bool remove = false;
- vector< map<string, int> > usersTaxon = getTaxons(newtax);
+ vector< map<string, float> > usersTaxon = getTaxons(newtax);
//the usersTaxon is most likely longer than the searchTaxons, and searchTaxon[0] may relate to userTaxon[4]
//we want to "line them up", so we will find the the index where the searchstring starts
}
}
/**************************************************************************************************/
-vector< map<string, int> > RemoveLineageCommand::getTaxons(string tax) {
+vector< map<string, float> > RemoveLineageCommand::getTaxons(string tax) {
try {
- vector< map<string, int> > t;
+ vector< map<string, float> > t;
string taxon = "";
int taxLength = tax.length();
for(int i=0;i<taxLength;i++){
int openParen = taxon.find_first_of('(');
int closeParen = taxon.find_last_of(')');
- string newtaxon = taxon.substr(0, openParen); //rip off confidence
- string confidence = taxon.substr((openParen+1), (closeParen-openParen-1));
- int con = 0;
+ string newtaxon, confidence;
+ if ((openParen != string::npos) && (closeParen != string::npos)) {
+ newtaxon = taxon.substr(0, openParen); //rip off confidence
+ confidence = taxon.substr((openParen+1), (closeParen-openParen-1));
+ }else{
+ newtaxon = taxon;
+ confidence = "0";
+ }
+ float con = 0;
convert(confidence, con);
- map<string, int> temp;
+ map<string, float> temp;
temp[newtaxon] = con;
t.push_back(temp);