X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=collectdisplay.h;h=781cea1824dc77cb445819c94aed3173786baa94;hp=af97c756d6a813959cabf5ce8f13f9e70f206806;hb=cf9987b67aa49777a4c91c2d21f96e58bf17aa82;hpb=c5c7502f435e1413c19e373dab1dfebcaa67588d diff --git a/collectdisplay.h b/collectdisplay.h index af97c75..781cea1 100644 --- a/collectdisplay.h +++ b/collectdisplay.h @@ -8,8 +8,6 @@ #include "display.h" -using namespace std; - /***********************************************************************/ class CollectDisplay : public Display { @@ -17,21 +15,27 @@ class CollectDisplay : public Display { public: CollectDisplay(Calculator* calc, FileOutput* file) : estimate(calc), output(file) {timesCalled = 0;}; ~CollectDisplay() { delete estimate; delete output; } + + void update(SAbundVector* rank){ nSeqs=rank->getNumSeqs(); data = estimate->getValues(rank); output->output(nSeqs, data); }; - void update(SharedRAbundVector* shared1, SharedRAbundVector* shared2, int numSeqs, int numGroups){ + void update(vector shared, int numSeqs, int numGroups){ timesCalled++; - data = estimate->getValues(shared1, shared2); //passes estimators a shared vector from each group to be compared + data = estimate->getValues(shared); //passes estimators a shared vector from each group to be compared //figure out what groups are being compared in getValues - //because the jumble parameter randomizes the order we need to put the results in the correct column in the output file + //because we randomizes the order we need to put the results in the correct column in the output file int group1Index, group2Index, pos; - group1Index = shared1->getGroupIndex(); - group2Index = shared2->getGroupIndex(); + + vector mGroups = m->getGroups(); + for (int i = 0; i < mGroups.size(); i++) { + if (shared[0]->getGroup() == mGroups[i]) { group1Index = i; } + if (shared[1]->getGroup() == mGroups[i]) { group2Index = i; } + } numGroupComb = 0; int n = 1; @@ -46,12 +50,25 @@ public: } n++; } - - groupData.resize((numGroupComb*data.size()), 0); - - //fills groupdata with datas info - for (int i = 0; i < data.size(); i++) { - groupData[pos+i] = data[i]; + + if ((estimate->getMultiple() == true) && all) { + numGroupComb++; + groupData.resize((numGroupComb*data.size()), 0); + //is this the time its called with all values + if ((timesCalled % numGroupComb) == 0) { + //last spot + pos = ((groupData.size()-1) * data.size()); + } + //fills groupdata with datas info + for (int i = 0; i < data.size(); i++) { + groupData[pos+i] = data[i]; + } + }else { + groupData.resize((numGroupComb*data.size()), 0); + //fills groupdata with datas info + for (int i = 0; i < data.size(); i++) { + groupData[pos+i] = data[i]; + } } //when you get all your groups info then output @@ -59,17 +76,33 @@ public: output->output(numSeqs, groupData); } }; - + void init(string s) { output->initFile(s); }; void reset() { output->resetFile(); }; void close() { output->resetFile(); }; + void setAll(bool a) { all = a; } + bool getAll() { return all; } + + + bool isCalcMultiple() { return estimate->getMultiple(); } + bool calcNeedsAll() { return estimate->getNeedsAll(); } + bool hasLciHci() { + if (estimate->getCols() == 3) { return true; } + else{ return false; } + } + + string getName() { return estimate->getName(); } + private: + Calculator* estimate; FileOutput* output; int nSeqs, timesCalled, numGroupComb; vector data; vector groupData; + bool all; + }; /***********************************************************************/