sumFile = globaldata->getTreeFile() + ".uwsummary";
openOutputFile(sumFile, outSum);
- setGroups(); //sets users groups to analyze
+ util = new SharedUtil();
+ util->setGroups(globaldata->Groups, tmap->namesOfGroups, allGroups, numGroups, "unweighted"); //sets the groups the user wants to analyze
+ util->getCombos(groupComb, globaldata->Groups, numComp);
+ globaldata->setGroups("");
+
+ //ABC
+ if (numComp != 1) {
+ groupComb.push_back(allGroups);
+ numComp++;
+ }
+
+
convert(globaldata->getIters(), iters); //how many random trees to generate
unweighted = new Unweighted(tmap);
UWScoreSig.clear();
}
//reset groups parameter
- globaldata->Groups.clear(); globaldata->setGroups("");
+ globaldata->Groups.clear();
outSum.close();
return 0;
exit(1);
}
}
-/***********************************************************/
-
-void UnifracUnweightedCommand::setGroups() {
- try {
- string allGroups = "";
- numGroups = 0;
- //if the user has not entered specific groups to analyze then do them all
- if (globaldata->Groups.size() != 0) {
- if (globaldata->Groups[0] != "all") {
- //check that groups are valid
- for (int i = 0; i < globaldata->Groups.size(); i++) {
- if (tmap->isValidGroup(globaldata->Groups[i]) != true) {
- cout << globaldata->Groups[i] << " is not a valid group, and will be disregarded." << endl;
- // erase the invalid group from globaldata->Groups
- globaldata->Groups.erase(globaldata->Groups.begin()+i);
- }
- }
-
- //if the user only entered invalid groups
- if (globaldata->Groups.size() == 0) {
- 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 < tmap->namesOfGroups.size(); i++) {
- globaldata->Groups.push_back(tmap->namesOfGroups[i]);
- numGroups++;
- allGroups += tmap->namesOfGroups[i] + "-";
- }
- allGroups = allGroups.substr(0, allGroups.length()-1);
- }else {
- for (int i = 0; i < globaldata->Groups.size(); i++) {
- allGroups += globaldata->Groups[i] + "-";
- numGroups++;
- }
- allGroups = allGroups.substr(0, allGroups.length()-1);
- }
- }else{//user has enter "all" and wants the default groups
- globaldata->Groups.clear();
- for (int i = 0; i < tmap->namesOfGroups.size(); i++) {
- globaldata->Groups.push_back(tmap->namesOfGroups[i]);
- numGroups++;
- allGroups += tmap->namesOfGroups[i] + "-";
- }
- allGroups = allGroups.substr(0, allGroups.length()-1);
- globaldata->setGroups("");
- }
- }else {
- for (int i = 0; i < tmap->namesOfGroups.size(); i++) {
- allGroups += tmap->namesOfGroups[i] + "-";
- }
- allGroups = allGroups.substr(0, allGroups.length()-1);
- numGroups = 1;
- }
-
- //calculate number of comparsions
- numComp = 0;
- for (int r=0; r<numGroups; r++) {
- for (int l = r+1; l < numGroups; l++) {
- groupComb.push_back(globaldata->Groups[r]+ "-" + globaldata->Groups[l]);
- numComp++;
- }
- }
-
- //ABC
- if (numComp != 1) {
- groupComb.push_back(allGroups);
- numComp++;
- }
- }
- catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the UnifracUnweightedCommand class Function setGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the UnifracUnweightedCommand class function setGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
-
-}
/*****************************************************************/
void UnifracUnweightedCommand::initFile(string label){