X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=sharedordervector.cpp;h=80b8fb9bd45a8596e91afe30fdec3984b2411de6;hp=76eeafa4b519c02b25c8364e19d3d0397ffdcd96;hb=499f4ac6e321f9f03d4c3aa25c3b6880892c8b83;hpb=510b1cfc25cd79391d6973ca20c5ec25fb1bb3b2 diff --git a/sharedordervector.cpp b/sharedordervector.cpp index 76eeafa..80b8fb9 100644 --- a/sharedordervector.cpp +++ b/sharedordervector.cpp @@ -28,10 +28,9 @@ SharedOrderVector::SharedOrderVector(string id, vector ov) : SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() { //reads in a shared file try { - globaldata = GlobalData::getInstance(); maxRank = 0; numBins = 0; numSeqs = 0; - - if (globaldata->gGroupmap == NULL) { groupmap = new GroupMap(); } + + groupmap = new GroupMap(); int num, inputData, count; count = 0; numSeqs = 0; @@ -39,14 +38,50 @@ 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->sharedBinLabelsInFile.clear(); + while(!iStringStream.eof()){ + if (m->control_pressed) { break; } + string temp; + iStringStream >> temp; m->gobble(iStringStream); + + m->sharedBinLabelsInFile.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->currentSharedBinLabels = m->sharedBinLabelsInFile; + + //read in first row since you know there is at least 1 group. + f >> groupN >> num; + holdLabel = label; - if (globaldata->gGroupmap == NULL) { - //save group in groupmap - groupmap->namesOfGroups.push_back(groupN); - groupmap->groupIndex[groupN] = 0; - } + + vector allGroups; + //save group in groupmap + allGroups.push_back(groupN); + groupmap->groupIndex[groupN] = 0; + for(int i=0;i> inputData; @@ -57,18 +92,20 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() { //reads in a } } - if (f.eof() != true) { f >> nextLabel; } + m->gobble(f); + + if (!(f.eof())) { f >> nextLabel; } //read the rest of the groups info in while ((nextLabel == holdLabel) && (f.eof() != true)) { f >> groupN >> num; count++; - if (globaldata->gGroupmap == NULL) { - //save group in groupmap - groupmap->namesOfGroups.push_back(groupN); - groupmap->groupIndex[groupN] = count; - } + + //save group in groupmap + allGroups.push_back(groupN); + groupmap->groupIndex[groupN] = count; + for(int i=0;i> inputData; @@ -79,21 +116,22 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() { //reads in a } } + m->gobble(f); if (f.eof() != true) { f >> nextLabel; } } - //put file pointer back since you are now at a new distance label - for (int i = 0; i < nextLabel.length(); i++) { f.unget(); } - - if (globaldata->gGroupmap == NULL) { globaldata->gGroupmap = groupmap; } + m->saveNextLabel = nextLabel; + + groupmap->setNamesOfGroups(allGroups); + m->setAllGroups(allGroups); updateStats(); } catch(exception& e) { - errorOut(e, "SharedOrderVector", "SharedOrderVector"); + m->errorOut(e, "SharedOrderVector", "SharedOrderVector"); exit(1); } } @@ -163,16 +201,23 @@ void SharedOrderVector::print(ostream& output){ output << endl; } catch(exception& e) { - errorOut(e, "SharedOrderVector", "print"); + m->errorOut(e, "SharedOrderVector", "print"); exit(1); } } +/***********************************************************************/ +void SharedOrderVector::clear(){ + numBins = 0; + maxRank = 0; + numSeqs = 0; + data.clear(); +} /***********************************************************************/ void SharedOrderVector::resize(int){ - mothurOut("resize() did nothing in class SharedOrderVector"); + m->mothurOut("resize() did nothing in class SharedOrderVector"); } /***********************************************************************/ @@ -215,7 +260,7 @@ RAbundVector SharedOrderVector::getRAbundVector(){ return rav; } catch(exception& e) { - errorOut(e, "SharedOrderVector", "getRAbundVector"); + m->errorOut(e, "SharedOrderVector", "getRAbundVector"); exit(1); } } @@ -235,7 +280,7 @@ OrderVector SharedOrderVector::getOrderVector(map* nameMap = NULL) { return ov; } catch(exception& e) { - errorOut(e, "SharedOrderVector", "getOrderVector"); + m->errorOut(e, "SharedOrderVector", "getOrderVector"); exit(1); } } @@ -265,7 +310,7 @@ SharedRAbundVector SharedOrderVector::getSharedRAbundVector(string group) { return sharedRav; } catch(exception& e) { - errorOut(e, "SharedOrderVector", "getSharedRAbundVector"); + m->errorOut(e, "SharedOrderVector", "getSharedRAbundVector"); exit(1); } } @@ -276,13 +321,17 @@ vector SharedOrderVector::getSharedRAbundVector() { util = new SharedUtil(); vector lookup; - util->setGroups(globaldata->Groups, globaldata->gGroupmap->namesOfGroups); - util->getSharedVectors(globaldata->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; } catch(exception& e) { - errorOut(e, "SharedOrderVector", "getSharedRAbundVector"); + m->errorOut(e, "SharedOrderVector", "getSharedRAbundVector"); exit(1); } } @@ -295,7 +344,7 @@ SharedSAbundVector SharedOrderVector::getSharedSAbundVector(string group) { } catch(exception& e) { - errorOut(e, "SharedOrderVector", "getSharedSAbundVector"); + m->errorOut(e, "SharedOrderVector", "getSharedSAbundVector"); exit(1); } } @@ -330,7 +379,7 @@ void SharedOrderVector::updateStats(){ } catch(exception& e) { - errorOut(e, "SharedOrderVector", "updateStats"); + m->errorOut(e, "SharedOrderVector", "updateStats"); exit(1); } }