5 * Created by Sarah Westcott on 1/26/09.
6 * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
10 #include "parsimony.h"
12 /**************************************************************************************************/
13 EstOutput Parsimony::getValues(Tree* t) {
15 globaldata = GlobalData::getInstance();
21 for(int i=t->getNumLeaves();i<t->getNumNodes();i++){
22 int lc = t->tree[i].getLChild();
23 int rc = t->tree[i].getRChild();
29 //add in all the groups the users wanted
30 for (it = t->tree[i].pGroups.begin(); it != t->tree[i].pGroups.end(); it++) {
31 if (inUsersGroups(it->first) == true) { iSize++; }
34 //if that leaves no groups give it 1 so it will cause no change to parent
35 if (iSize == 0) { iSize++; }
37 //add in all the groups the users wanted
38 for (it = t->tree[rc].pGroups.begin(); it != t->tree[rc].pGroups.end(); it++) {
40 if (inUsersGroups(it->first) == true) { rcSize++; }
43 //if that leaves no groups give it 1 so it will cause no change to parent
44 if (rcSize == 0) { rcSize++; }
47 //add in all the groups the users wanted
48 for (it = t->tree[lc].pGroups.begin(); it != t->tree[lc].pGroups.end(); it++) {
50 if (inUsersGroups(it->first) == true) { lcSize++; }
53 //if that leaves no groups give it 1 so it will cause no change to parent
54 if (lcSize == 0) { lcSize++; }
57 //if you have more groups than either of your kids then theres been a change.
58 if(iSize > rcSize || iSize > lcSize){
69 cout << "Standard Error: " << e.what() << " has occurred in the Parsimony class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
73 cout << "An unknown error has occurred in the Parsimony class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
78 /**************************************************************************************************/
80 bool Parsimony::inUsersGroups(string groupname) {
82 for (int i = 0; i < globaldata->Groups.size(); i++) {
83 if (groupname == globaldata->Groups[i]) { return true; }
88 cout << "Standard Error: " << e.what() << " has occurred in the Parsimony class Function inUsersGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
92 cout << "An unknown error has occurred in the Parsimony class function inUsersGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
96 /**************************************************************************************************/