- //if the user has not entered specific groups to analyze then do them all
- if (globaldata->Groups.size() == 0) {
- numGroups = tmap->getNumGroups();
- for (int i=0; i < numGroups; i++) {
- globaldata->Groups.push_back(tmap->namesOfGroups[i]);
- }
- }else {
- if (globaldata->getGroups() != "all") {
- //check that groups are valid
- for (int i = 0; i < globaldata->Groups.size(); i++) {
- if (tmap->isValidGroup(globaldata->Groups[i]) != true) {
- cout << globaldata->Groups[i] << " is not a valid group, and will be disregarded." << endl;
- // erase the invalid group from globaldata->Groups
- globaldata->Groups.erase (globaldata->Groups.begin()+i);
- }
- }
-
- //if the user only entered invalid groups
- if (globaldata->Groups.size() == 0) {
- numGroups = tmap->getNumGroups();
- for (int i=0; i < numGroups; i++) {
- globaldata->Groups.push_back(tmap->namesOfGroups[i]);
- }
- cout << "When using the groups parameter you must have at least 2 valid groups. I will run the command using all the groups in your groupfile." << endl;
- }else if (globaldata->Groups.size() == 1) {
- cout << "When using the groups parameter you must have at least 2 valid groups. I will run the command using all the groups in your groupfile." << endl;
- numGroups = tmap->getNumGroups();
- globaldata->Groups.clear();
- for (int i=0; i < numGroups; i++) {
- globaldata->Groups.push_back(tmap->namesOfGroups[i]);
- }
- }else { numGroups = globaldata->Groups.size(); }
- }else { //users wants all groups
- numGroups = tmap->getNumGroups();
- globaldata->Groups.clear();
- globaldata->setGroups("");
- for (int i=0; i < numGroups; i++) {
- globaldata->Groups.push_back(tmap->namesOfGroups[i]);
+ //clear out old tree values
+ rScoreFreq.clear();
+ rScoreFreq.resize(numComp);
+ rCumul.clear();
+ rCumul.resize(numComp);
+ validScores.clear();
+
+ //calculate frequency
+ for (int f = 0; f < numComp; f++) {
+ for (int i = 0; i < rScores[f].size(); i++) { //looks like 0,0,1,1,1,2,4,7... you want to make a map that say rScoreFreq[0] = 2, rScoreFreq[1] = 3...
+ validScores[rScores[f][i]] = rScores[f][i];
+ map<float,float>::iterator it = rScoreFreq[f].find(rScores[f][i]);
+ if (it != rScoreFreq[f].end()) {
+ rScoreFreq[f][rScores[f][i]]++;
+ }else{
+ rScoreFreq[f][rScores[f][i]] = 1;