- for(int i=t->getNumLeaves();i<t->getNumNodes();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
-
- /**********************************************************************/
- //This section adds in all lengths that are non leaf
-
- copyIpcount = t->tree[i].pcount;
- for (it = copyIpcount.begin(); it != copyIpcount.end(); it++) {
- if (inUsersGroups(it->first, groups) != true) { copyIpcount.erase(it->first); }
- }
-
- //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(); }
-
- //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();
- }
-
- /**********************************************************************/
- //This section adds in all lengths that are leaf
-
- //if i's chidren are leaves
- if (t->tree[rc].getRChild() == -1) {
- //if rc is a valid group and rc has a BL
- if ((inUsersGroups(t->tree[rc].getGroup(), globaldata->Groups) == true) && (t->tree[rc].getBranchLength() != -1)) {
- UniqueBL += t->tree[rc].getBranchLength();
- totalBL += t->tree[rc].getBranchLength();
- }
+ for(int i=0;i<t->getNumNodes();i++){
+ if (m->control_pressed) { return data; }
+
+ //pcountSize = 0, they are from a branch that is entirely from a group the user doesn't want
+ //pcountSize = 2, not unique to one group
+ //pcountSize = 1, unique to one group
+
+ int pcountSize = 0;
+ for (int j = 0; j < groups.size(); j++) {
+ map<string, int>::iterator itGroup = t->tree[i].pcount.find(groups[j]);
+ if (itGroup != t->tree[i].pcount.end()) { pcountSize++; }