X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sharedordervector.cpp;h=5231b3cd654ff6f1321bbc12f2cf4fe602a30553;hb=70491a12902e89b85cfa6b44a7b7fbe066ee2ac1;hp=37cd28315a5c1928e965f7be8eef7ae0ef408692;hpb=ca9ac1d80c62f57270b0dcd49410ebe08a8aecd6;p=mothur.git diff --git a/sharedordervector.cpp b/sharedordervector.cpp index 37cd283..5231b3c 100644 --- a/sharedordervector.cpp +++ b/sharedordervector.cpp @@ -38,12 +38,48 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() { //reads in a individual newguy; //read in first row since you know there is at least 1 group. - f >> label >> groupN >> num; + //are we at the beginning of the file?? + if (m->saveNextLabel == "") { + f >> label; + + //is this a shared file that has headers + if (label == "label") { + //gets "group" + f >> label; m->gobble(f); + + //gets "numOtus" + f >> label; m->gobble(f); + + //eat rest of line + label = m->getline(f); m->gobble(f); + + //parse labels to save + istringstream iStringStream(label); + m->binLabelsInFile.clear(); + while(!iStringStream.eof()){ + if (m->control_pressed) { break; } + string temp; + iStringStream >> temp; m->gobble(iStringStream); + + m->binLabelsInFile.push_back(temp); + } + + f >> label; + } + }else { label = m->saveNextLabel; } + + //reset labels, currentLabels may have gotten changed as otus were eliminated because of group choices or sampling + m->currentBinLabels = m->binLabelsInFile; + + //read in first row since you know there is at least 1 group. + f >> groupN >> num; + holdLabel = label; + vector allGroups; //save group in groupmap - groupmap->namesOfGroups.push_back(groupN); + allGroups.push_back(groupN); groupmap->groupIndex[groupN] = 0; @@ -58,7 +94,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() { //reads in a m->gobble(f); - if (f.eof() != true) { f >> nextLabel; } + if (!(f.eof())) { f >> nextLabel; } //read the rest of the groups info in while ((nextLabel == holdLabel) && (f.eof() != true)) { @@ -67,7 +103,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() { //reads in a //save group in groupmap - groupmap->namesOfGroups.push_back(groupN); + allGroups.push_back(groupN); groupmap->groupIndex[groupN] = count; @@ -86,10 +122,10 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() { //reads in a } - //put file pointer back since you are now at a new distance label - for (int i = 0; i < nextLabel.length(); i++) { f.unget(); } - - m->namesOfGroups = groupmap->namesOfGroups; + m->saveNextLabel = nextLabel; + + groupmap->setNamesOfGroups(allGroups); + m->setAllGroups(allGroups); updateStats(); @@ -285,8 +321,12 @@ vector SharedOrderVector::getSharedRAbundVector() { util = new SharedUtil(); vector lookup; - util->setGroups(m->Groups, m->namesOfGroups); - util->getSharedVectors(m->Groups, lookup, this); + vector Groups = m->getGroups(); + vector allGroups = m->getAllGroups(); + util->setGroups(Groups, allGroups); + util->getSharedVectors(Groups, lookup, this); + m->setGroups(Groups); + m->setAllGroups(allGroups); return lookup; }