/**************************************************************************************************/
EstOutput Parsimony::getValues(Tree* t) {
try {
+ globaldata = GlobalData::getInstance();
+
data.resize(1,0);
int score = 0;
int lc = t->tree[i].getLChild();
int rc = t->tree[i].getRChild();
- if(t->tree[i].pGroups.size() > t->tree[rc].pGroups.size() || t->tree[i].pGroups.size() > t->tree[lc].pGroups.size()){
+ int iSize = 0;
+ int rcSize = 0;
+ int lcSize = 0;
+
+ //add in all the groups the users wanted
+ for (it = t->tree[i].pGroups.begin(); it != t->tree[i].pGroups.end(); it++) {
+ if (inUsersGroups(it->first, globaldata->Groups) == true) { iSize++; }
+ }
+
+ //if that leaves no groups give it 1 so it will cause no change to parent
+ if (iSize == 0) { iSize++; }
+
+ //add in all the groups the users wanted
+ for (it = t->tree[rc].pGroups.begin(); it != t->tree[rc].pGroups.end(); it++) {
+
+ if (inUsersGroups(it->first, globaldata->Groups) == true) { rcSize++; }
+ }
+
+ //if that leaves no groups give it 1 so it will cause no change to parent
+ if (rcSize == 0) { rcSize++; }
+
+
+ //add in all the groups the users wanted
+ for (it = t->tree[lc].pGroups.begin(); it != t->tree[lc].pGroups.end(); it++) {
+
+ if (inUsersGroups(it->first, globaldata->Groups) == true) { lcSize++; }
+ }
+
+ //if that leaves no groups give it 1 so it will cause no change to parent
+ if (lcSize == 0) { lcSize++; }
+
+
+ //if you have more groups than either of your kids then theres been a change.
+ if(iSize > rcSize || iSize > lcSize){
score++;
+
}
}
}
}
-/**************************************************************************************************/
+