X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=unweighted.cpp;h=687786a71e783bdb4df476eb17d6864e07238974;hb=6e63c5ff52bd2830b689417df8ba3db831e63a96;hp=16a2203274f325ffc8d8b5febfea903597340093;hpb=38922fcff5a03abfedffda3e06a45fad2270a044;p=mothur.git diff --git a/unweighted.cpp b/unweighted.cpp index 16a2203..687786a 100644 --- a/unweighted.cpp +++ b/unweighted.cpp @@ -64,11 +64,11 @@ EstOutput Unweighted::getValues(Tree* t) { //if i's children are from the same group then i's pcount size will be 1 //if copyIpcount.size() = 0 they are from a branch that is entirely from a group the user doesn't want if (copyIpcount.size() == 0) { } - else if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { UniqueBL += t->tree[i].getBranchLength(); } + else if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { UniqueBL += abs(t->tree[i].getBranchLength()); } //add i's BL to total if it is from the groups the user wants if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() != 0)) { - totalBL += t->tree[i].getBranchLength(); + totalBL += abs(t->tree[i].getBranchLength()); } /**********************************************************************/ @@ -78,16 +78,16 @@ EstOutput Unweighted::getValues(Tree* t) { if (t->tree[rc].getRChild() == -1) { //if rc is a valid group and rc has a BL if ((inUsersGroups(t->tree[rc].getGroup(), groups) == true) && (t->tree[rc].getBranchLength() != -1)) { - UniqueBL += t->tree[rc].getBranchLength(); - totalBL += t->tree[rc].getBranchLength(); + UniqueBL += abs(t->tree[rc].getBranchLength()); + totalBL += abs(t->tree[rc].getBranchLength()); } } if (t->tree[lc].getLChild() == -1) { //if lc is a valid group and lc has a BL if ((inUsersGroups(t->tree[lc].getGroup(), groups) == true) && (t->tree[lc].getBranchLength() != -1)) { - UniqueBL += t->tree[lc].getBranchLength(); - totalBL += t->tree[lc].getBranchLength(); + UniqueBL += abs(t->tree[lc].getBranchLength()); + totalBL += abs(t->tree[lc].getBranchLength()); } } @@ -109,7 +109,9 @@ EstOutput Unweighted::getValues(Tree* t) { if (numGroups == 0) { //get score for all users groups for (int i = 0; i < tmap->namesOfGroups.size(); i++) { - groups.push_back(tmap->namesOfGroups[i]); + if (tmap->namesOfGroups[i] != "xxx") { + groups.push_back(tmap->namesOfGroups[i]); + } } }else { for (int i = 0; i < globaldata->Groups.size(); i++) { @@ -138,11 +140,11 @@ EstOutput Unweighted::getValues(Tree* t) { //if i's children are from the same group then i's pcount size will be 1 //if copyIpcount.size() = 0 they are from a branch that is entirely from a group the user doesn't want if (copyIpcount.size() == 0) { } - else if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { UniqueBL += t->tree[i].getBranchLength(); } + else if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { UniqueBL += abs(t->tree[i].getBranchLength()); } //add i's BL to total if it is from the groups the user wants if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() != 0)) { - totalBL += t->tree[i].getBranchLength(); + totalBL += abs(t->tree[i].getBranchLength()); } /**********************************************************************/ @@ -152,16 +154,16 @@ EstOutput Unweighted::getValues(Tree* t) { if (t->tree[rc].getRChild() == -1) { //if rc is a valid group and rc has a BL if ((inUsersGroups(t->tree[rc].getGroup(), groups) == true) && (t->tree[rc].getBranchLength() != -1)) { - UniqueBL += t->tree[rc].getBranchLength(); - totalBL += t->tree[rc].getBranchLength(); + UniqueBL += abs(t->tree[rc].getBranchLength()); + totalBL += abs(t->tree[rc].getBranchLength()); } } if (t->tree[lc].getLChild() == -1) { //if lc is a valid group and lc has a BL if ((inUsersGroups(t->tree[lc].getGroup(), groups) == true) && (t->tree[lc].getBranchLength() != -1)) { - UniqueBL += t->tree[lc].getBranchLength(); - totalBL += t->tree[lc].getBranchLength(); + UniqueBL += abs(t->tree[lc].getBranchLength()); + totalBL += abs(t->tree[lc].getBranchLength()); } } @@ -179,14 +181,9 @@ EstOutput Unweighted::getValues(Tree* t) { } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the Unweighted class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the Unweighted class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + errorOut(e, "Unweighted", "getValues"); exit(1); } - } /**************************************************************************************************/ @@ -205,7 +202,7 @@ EstOutput Unweighted::getValues(Tree* t, string groupA, string groupB) { //if the users enters no groups then give them the score of all groups int numGroups = globaldata->Groups.size(); -cout << "NumGroups = " << numGroups << endl; + //calculate number of comparsions int numComp = 0; for (int r=0; rgetNumLeaves();igetNumNodes();i++){ + for(int i=copyTree->getNumLeaves();igetNumNodes();i++){ - int lc = t->tree[i].getLChild(); //lc = vector index of left child - int rc = t->tree[i].getRChild(); //rc = vector index of right child + int lc = copyTree->tree[i].getLChild(); //lc = vector index of left child + int rc = copyTree->tree[i].getRChild(); //rc = vector index of right child /**********************************************************************/ //This section adds in all lengths that are non leaf - copyIpcount = t->tree[i].pcount; + copyIpcount = copyTree->tree[i].pcount; for (it = copyIpcount.begin(); it != copyIpcount.end(); it++) { if (inUsersGroups(it->first, groups) != true) { copyIpcount.erase(it->first); } } @@ -251,30 +249,30 @@ cout << "NumGroups = " << numGroups << endl; //if i's children are from the same group then i's pcount size will be 1 //if copyIpcount.size() = 0 they are from a branch that is entirely from a group the user doesn't want if (copyIpcount.size() == 0) { } - else if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { UniqueBL += t->tree[i].getBranchLength(); } + else if ((copyTree->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { UniqueBL += abs(copyTree->tree[i].getBranchLength()); } //add i's BL to total if it is from the groups the user wants - if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() != 0)) { - totalBL += t->tree[i].getBranchLength(); + if ((copyTree->tree[i].getBranchLength() != -1) && (copyIpcount.size() != 0)) { + totalBL += abs(copyTree->tree[i].getBranchLength()); } /**********************************************************************/ //This section adds in all lengths that are leaf //if i's chidren are leaves - if (t->tree[rc].getRChild() == -1) { + if (copyTree->tree[rc].getRChild() == -1) { //if rc is a valid group and rc has a BL - if ((inUsersGroups(t->tree[rc].getGroup(), groups) == true) && (t->tree[rc].getBranchLength() != -1)) { - UniqueBL += t->tree[rc].getBranchLength(); - totalBL += t->tree[rc].getBranchLength(); + if ((inUsersGroups(copyTree->tree[rc].getGroup(), groups) == true) && (copyTree->tree[rc].getBranchLength() != -1)) { + UniqueBL += abs(copyTree->tree[rc].getBranchLength()); + totalBL += abs(copyTree->tree[rc].getBranchLength()); } } - if (t->tree[lc].getLChild() == -1) { + if (copyTree->tree[lc].getLChild() == -1) { //if lc is a valid group and lc has a BL - if ((inUsersGroups(t->tree[lc].getGroup(), groups) == true) && (t->tree[lc].getBranchLength() != -1)) { - UniqueBL += t->tree[lc].getBranchLength(); - totalBL += t->tree[lc].getBranchLength(); + if ((inUsersGroups(copyTree->tree[lc].getGroup(), groups) == true) && (copyTree->tree[lc].getBranchLength() != -1)) { + UniqueBL += abs(copyTree->tree[lc].getBranchLength()); + totalBL += abs(copyTree->tree[lc].getBranchLength()); } } @@ -296,7 +294,9 @@ cout << "NumGroups = " << numGroups << endl; if (numGroups == 0) { //get score for all users groups for (int i = 0; i < tmap->namesOfGroups.size(); i++) { - groups.push_back(tmap->namesOfGroups[i]); + if (tmap->namesOfGroups[i] != "xxx") { + groups.push_back(tmap->namesOfGroups[i]); + } } }else { for (int i = 0; i < globaldata->Groups.size(); i++) { @@ -315,15 +315,15 @@ cout << "NumGroups = " << numGroups << endl; //swap labels in all the groups you want to compare copyTree->assembleRandomUnifracTree(groups); - for(int i=t->getNumLeaves();igetNumNodes();i++){ + for(int i=copyTree->getNumLeaves();igetNumNodes();i++){ - int lc = t->tree[i].getLChild(); //lc = vector index of left child - int rc = t->tree[i].getRChild(); //rc = vector index of right child + int lc = copyTree->tree[i].getLChild(); //lc = vector index of left child + int rc = copyTree->tree[i].getRChild(); //rc = vector index of right child /**********************************************************************/ //This section adds in all lengths that are non leaf - copyIpcount = t->tree[i].pcount; + copyIpcount = copyTree->tree[i].pcount; for (it = copyIpcount.begin(); it != copyIpcount.end(); it++) { if (inUsersGroups(it->first, groups) != true) { copyIpcount.erase(it->first); } } @@ -331,30 +331,30 @@ cout << "NumGroups = " << numGroups << endl; //if i's children are from the same group then i's pcount size will be 1 //if copyIpcount.size() = 0 they are from a branch that is entirely from a group the user doesn't want if (copyIpcount.size() == 0) { } - else if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { UniqueBL += t->tree[i].getBranchLength(); } + else if ((copyTree->tree[i].getBranchLength() != -1) && (copyIpcount.size() == 1)) { abs(UniqueBL += copyTree->tree[i].getBranchLength()); } //add i's BL to total if it is from the groups the user wants - if ((t->tree[i].getBranchLength() != -1) && (copyIpcount.size() != 0)) { - totalBL += t->tree[i].getBranchLength(); + if ((copyTree->tree[i].getBranchLength() != -1) && (copyIpcount.size() != 0)) { + totalBL += abs(copyTree->tree[i].getBranchLength()); } /**********************************************************************/ //This section adds in all lengths that are leaf //if i's chidren are leaves - if (t->tree[rc].getRChild() == -1) { + if (copyTree->tree[rc].getRChild() == -1) { //if rc is a valid group and rc has a BL - if ((inUsersGroups(t->tree[rc].getGroup(), groups) == true) && (t->tree[rc].getBranchLength() != -1)) { - UniqueBL += t->tree[rc].getBranchLength(); - totalBL += t->tree[rc].getBranchLength(); + if ((inUsersGroups(copyTree->tree[rc].getGroup(), groups) == true) && (copyTree->tree[rc].getBranchLength() != -1)) { + UniqueBL += abs(copyTree->tree[rc].getBranchLength()); + totalBL += abs(copyTree->tree[rc].getBranchLength()); } } - if (t->tree[lc].getLChild() == -1) { + if (copyTree->tree[lc].getLChild() == -1) { //if lc is a valid group and lc has a BL - if ((inUsersGroups(t->tree[lc].getGroup(), groups) == true) && (t->tree[lc].getBranchLength() != -1)) { - UniqueBL += t->tree[lc].getBranchLength(); - totalBL += t->tree[lc].getBranchLength(); + if ((inUsersGroups(copyTree->tree[lc].getGroup(), groups) == true) && (copyTree->tree[lc].getBranchLength() != -1)) { + UniqueBL += abs(copyTree->tree[lc].getBranchLength()); + totalBL += abs(copyTree->tree[lc].getBranchLength()); } } @@ -367,16 +367,14 @@ cout << "NumGroups = " << numGroups << endl; data[count] = UW; } - + + delete copyTree; + return data; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the Unweighted class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the Unweighted class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + errorOut(e, "Unweighted", "getValues"); exit(1); } }