- //initialize labels for output
- //makes 'uniqueAB uniqueAC uniqueBC' if your groups are A, B, C
- getGroupComb();
- groupLabel = "";
- for (int s = 0; s < groupComb.size(); s++) {
- groupLabel = groupLabel + label + groupComb[s] + "\t";
- }
-
- for(int i=0;i<displays.size();i++){
- ccd->registerDisplay(displays[i]); //adds a display[i] to cdd
- displays[i]->init(groupLabel);
- }
-
- //sample all the members
- for(int i=0;i<numSeqs;i++){
- //get first sample
- individual chosen = sharedorder->get(i);
- int abundance;
-
- //set info for sharedvector in chosens group
- for (int j = 0; j < lookup.size(); j++) {
- if (chosen.group == lookup[j]->getGroup()) {
- abundance = lookup[j]->getAbundance(chosen.bin);
- lookup[j]->set(chosen.bin, (abundance + 1), chosen.group);
- break;
- }
- }
-
- //calculate at 0 and the given increment
- if((i == 0) || (i+1) % increment == 0){
- //randomize group order
- if (globaldata->getJumble() == "1") { random_shuffle(lookup.begin(), lookup.end()); }
- //how many comparisons to make i.e. for group a, b, c = ab, ac, bc.
- int n = 1;
- for (int k = 0; k < (lookup.size() - 1); k++) { // pass cdd each set of groups to commpare
- for (int l = n; l < lookup.size(); l++) {
- ccd->updateSharedData(lookup[k], lookup[l], i+1, numGroupComb);
- }
- n++;
- }
- }
- totalNumSeq = i+1;
- }
-
- //calculate last line if you haven't already
- if(numSeqs % increment != 0){
- //how many comparisons to make i.e. for group a, b, c = ab, ac, bc.
- int n = 1;
- for (int k = 0; k < (lookup.size() - 1); k++) { // pass cdd each set of groups to commpare
- for (int l = n; l < lookup.size(); l++) {
- ccd->updateSharedData(lookup[k], lookup[l], totalNumSeq, numGroupComb);
+ SharedCollectorsCurveData* ccd = new SharedCollectorsCurveData();
+
+ //initialize labels for output
+ //makes 'uniqueAB uniqueAC uniqueBC' if your groups are A, B, C
+ getGroupComb();
+
+ for(int i=0;i<displays.size();i++){
+ ccd->registerDisplay(displays[i]); //adds a display[i] to cdd
+ bool hasLciHci = displays[i]->hasLciHci();
+ groupLabel = "";
+ for (int s = 0; s < groupComb.size(); s++) {
+ if (hasLciHci) { groupLabel = groupLabel + label + groupComb[s] + "\t" + label + groupComb[s] + "lci\t" + label + groupComb[s] + "hci\t"; }
+ else{ groupLabel = groupLabel + label + groupComb[s] + "\t"; }
+ }
+
+ string groupLabelAll = groupLabel + label + "all\t";
+ if ((displays[i]->isCalcMultiple() == true) && (displays[i]->getAll() == true)) { displays[i]->init(groupLabelAll); }
+ else { displays[i]->init(groupLabel); }
+ }
+
+ //convert freq percentage to number
+ int increment = 1;
+ if (percentFreq < 1.0) { increment = numSeqs * percentFreq; }
+ else { increment = percentFreq; }
+
+ //sample all the members
+ for(int i=0;i<numSeqs;i++){
+
+ if (m->control_pressed) { for (int j = 0; j < lookup.size(); j++) { delete lookup[j]; } delete ccd; return 1; }
+
+ //get first sample
+ individual chosen = sharedorder->get(i);
+ int abundance;
+
+ //set info for sharedvector in chosens group
+ for (int j = 0; j < lookup.size(); j++) {
+ if (chosen.group == lookup[j]->getGroup()) {
+ abundance = lookup[j]->getAbundance(chosen.bin);
+ lookup[j]->set(chosen.bin, (abundance + 1), chosen.group);
+ break;
+ }
+ }
+
+ //calculate at 0 and the given increment
+ if((i == 0) || (i+1) % increment == 0){
+
+ //how many comparisons to make i.e. for group a, b, c = ab, ac, bc.
+
+ int n = 1;
+ bool pair = true;
+ for (int k = 0; k < (lookup.size() - 1); k++) { // pass cdd each set of groups to commpare
+ for (int l = n; l < lookup.size(); l++) {
+ subset.clear(); //clear out old pair of sharedrabunds
+ //add new pair of sharedrabund vectors
+ subset.push_back(lookup[k]); subset.push_back(lookup[l]);
+
+ //load subset with rest of lookup for those calcs that need everyone to calc for a pair
+ for (int w = 0; w < lookup.size(); w++) {
+ if ((w != k) && (w != l)) { subset.push_back(lookup[w]); }
+ }
+
+ ccd->updateSharedData(subset, i+1, m->getNumGroups(), pair);
+ }
+ n++;
+ }
+
+ //if this is a calculator that can do multiples then do them
+ pair = false;
+ ccd->updateSharedData(lookup, i+1, m->getNumGroups(), pair);
+
+ }
+ totalNumSeq = i+1;
+ }
+
+ //calculate last label if you haven't already
+ if(numSeqs % increment != 0){
+ //how many comparisons to make i.e. for group a, b, c = ab, ac, bc.
+ int n = 1;
+ bool pair = true;
+ for (int k = 0; k < (lookup.size() - 1); k++) { // pass cdd each set of groups to commpare
+ for (int l = n; l < lookup.size(); l++) {
+ subset.clear(); //clear out old pair of sharedrabunds
+ //add new pair of sharedrabund vectors
+ subset.push_back(lookup[k]); subset.push_back(lookup[l]);
+
+ //load subset with rest of lookup for those calcs that need everyone to calc for a pair
+ for (int w = 0; w < lookup.size(); w++) {
+ if ((w != k) && (w != l)) { subset.push_back(lookup[w]); }
+ }
+
+ ccd->updateSharedData(subset, totalNumSeq, m->getNumGroups(), pair);
+ }
+ n++;
+ }
+ //if this is a calculator that can do multiples then do them
+ pair = false;
+ ccd->updateSharedData(lookup, totalNumSeq, m->getNumGroups(), pair);
+ }
+
+ //resets output files
+ for(int i=0;i<displays.size();i++){
+ displays[i]->reset();
+ }
+
+ //memory cleanup
+ delete ccd;
+ for (int i = 0; i < lookup.size(); i++) {
+ delete lookup[i];