- u = abs(u * t->tree[i].getBranchLength());
-
- nodePcountSize[i] = pcountSize;
-
- //if you are a leaf from a users group add to total
- if (i < numLeaves) {
- if ((t->tree[i].getBranchLength() != -1) && pcountSize != 0) {
- //cout << "added to total" << endl;
- WScore[(groupA+groupB)] += u;
- }
- tempTotals[i] = 0.0; //we don't care about you, or we have already added you
- }else{ //if you are not a leaf
- //do both your chidren have have descendants from the users groups?
- int lc = t->tree[i].getLChild();
- int rc = t->tree[i].getRChild();
-
- //if yes, add your childrens tempTotals
- if ((nodePcountSize[lc] != 0) && (nodePcountSize[rc] != 0)) {
- WScore[(groupA+groupB)] += tempTotals[lc] + tempTotals[rc];
- //cout << "added to total " << tempTotals[lc] << '\t' << tempTotals[rc] << endl;
- if (t->tree[i].getBranchLength() != -1) {
- tempTotals[i] = u;
- }else {
- tempTotals[i] = 0.0;
- }
- }else if ((nodePcountSize[lc] == 0) && (nodePcountSize[rc] == 0)) { tempTotals[i] = 0.0; //we don't care about you
- }else { //if no, your tempTotal is your childrens temp totals + your branch length
- tempTotals[i] = tempTotals[lc] + tempTotals[rc] + u;
- }
- //cout << "temptotal = "<< tempTotals[i] << endl;
+ //if this is not the root then add it
+ if (rootForGrouping[namesOfGroupCombos[h]].count(i) == 0) {
+ u = abs(u * t->tree[i].getBranchLength());
+ WScore[(groupA+groupB)] += u;