X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sharedutilities.cpp;h=de627c643c9ff277854a1d8b8ffcb595004d0a85;hb=753dc84cf289b1d5dc0ca5b0c043640927aa951a;hp=454b7d4073396f74c804ad1bba68cbea57ac5f57;hpb=9653c9f8c1b63ecb1a63b45e781c303713d5b5df;p=mothur.git diff --git a/sharedutilities.cpp b/sharedutilities.cpp index 454b7d4..de627c6 100644 --- a/sharedutilities.cpp +++ b/sharedutilities.cpp @@ -66,7 +66,6 @@ void SharedUtil::getSharedVectorswithReplacement(vector Groups, vector Groups, vector& userGroups, vector& allGroups, string mode) { +void SharedUtil::setGroups(vector& userGroups, vector& allGroups) { try { if (userGroups.size() != 0) { if (userGroups[0] != "all") { @@ -122,6 +121,14 @@ void SharedUtil::setGroups(vector& userGroups, vector& allGroups i--; } } + + //if the user only entered invalid groups + if (userGroups.size() == 0) { + cout << "You provided no valid groups. I will run the command using all the groups in your groupfile." << endl; + for (int i = 0; i < allGroups.size(); i++) { + userGroups.push_back(allGroups[i]); + } + } }else{//user has enter "all" and wants the default groups userGroups.clear(); @@ -135,38 +142,46 @@ void SharedUtil::setGroups(vector& userGroups, vector& allGroups } } - if (mode == "venn") { - //if the user only entered invalid groups - if (userGroups.size() == 0) { - if (allGroups.size() > 4) { - cout << "When using the groups parameter you must have at least 1 valid group. I will run the command using the first four groups in your groupfile." << endl; - for (int i = 0; i < 4; i++) { - userGroups.push_back(allGroups[i]); - } - }else { - cout << "When using the groups parameter you must have at least 1 valid group. I will run the command using all the groups in your groupfile." << endl; - for (int i = 0; i < allGroups.size(); i++) { - userGroups.push_back(allGroups[i]); - } - } - } - - //check to make sure their are only 4 groups - if (userGroups.size() > 4) { - cout << "You may only use up to 4 groups at a time with this command. I will choose the first four and disregard the rest." << endl; - for (int i = 4; i < userGroups.size(); i++) { + } + catch(exception& e) { + cout << "Standard Error: " << e.what() << " has occurred in the SharedUtil class Function setGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + catch(...) { + cout << "An unknown error has occurred in the SharedUtil class function setGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + +} +/**************************************************************************************************/ +//need to have mode because different commands require different number of valid groups +void SharedUtil::setGroups(vector& userGroups, vector& allGroups, string mode) { + try { + if (userGroups.size() != 0) { + if (userGroups[0] != "all") { + //check that groups are valid + for (int i = 0; i < userGroups.size(); i++) { + if (isValidGroup(userGroups[i], allGroups) != true) { + cout << userGroups[i] << " is not a valid group, and will be disregarded." << endl; + // erase the invalid group from userGroups userGroups.erase(userGroups.begin()+i); + i--; } } - }else if (mode == "heat") { - //if the user only entered invalid groups - if (userGroups.size() == 0) { - cout << "When using the groups parameter you must have at least 1 valid groups. I will run the command using all the groups in your groupfile." << endl; - for (int i = 0; i < allGroups.size(); i++) { - userGroups.push_back(allGroups[i]); - } + + }else{//user has enter "all" and wants the default groups + userGroups.clear(); + for (int i = 0; i < allGroups.size(); i++) { + userGroups.push_back(allGroups[i]); } - }else if ((mode == "collect") || (mode == "rarefact") || (mode == "summary") || (mode == "treegroup")) { + } + }else { //the user has not entered groups + for (int i = 0; i < allGroups.size(); i++) { + userGroups.push_back(allGroups[i]); + } + } + + if ((mode == "collect") || (mode == "rarefact") || (mode == "summary") || (mode == "treegroup")) { //if the user only entered invalid groups if ((userGroups.size() == 0) || (userGroups.size() == 1)) { cout << "When using the groups parameter you must have at least 2 valid groups. I will run the command using all the groups in your groupfile." << endl; @@ -188,12 +203,14 @@ void SharedUtil::setGroups(vector& userGroups, vector& allGroups } + /**************************************************************************************/ //for parsimony and unifrac commands you set pairwise groups as well as an allgroups in calc void SharedUtil::setGroups(vector& userGroups, vector& allGroups, string& label, int& numGroups, string mode){ //globaldata->Groups, your tree or group map, allgroups, mode try { numGroups = 0; label = ""; + //if the user has not entered specific groups to analyze then do them all if (userGroups.size() != 0) { if (userGroups[0] != "all") {