X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=treemap.cpp;h=75423855a7f583ae5ce62fc10118cf260589df6b;hb=fee6c80b2ca01d5efd0da8a70bdf07475b23e9da;hp=ad8a2af17ac2b8fe954c3bff402f6d1bb20381db;hpb=74c78f9abd9e733f0c2f812efec97a76632fcbf8;p=mothur.git diff --git a/treemap.cpp b/treemap.cpp index ad8a2af..7542385 100644 --- a/treemap.cpp +++ b/treemap.cpp @@ -13,7 +13,7 @@ TreeMap::TreeMap(string filename) { groupFileName = filename; - openInputFile(filename, fileHandle); + m->openInputFile(filename, fileHandle); } /************************************************************/ @@ -26,10 +26,10 @@ void TreeMap::readMap() { while(fileHandle){ fileHandle >> seqName; //read from first column fileHandle >> seqGroup; //read from second column - + namesOfSeqs.push_back(seqName); setNamesOfGroups(seqGroup); - + treemap[seqName].groupname = seqGroup; //store data in map it2 = seqsPerGroup.find(seqGroup); @@ -39,11 +39,45 @@ void TreeMap::readMap() { seqsPerGroup[seqGroup]++; } - gobble(fileHandle); + m->gobble(fileHandle); } fileHandle.close(); } /************************************************************/ +void TreeMap::addSeq(string seqName, string seqGroup) { + + namesOfSeqs.push_back(seqName); + setNamesOfGroups(seqGroup); + + treemap[seqName].groupname = seqGroup; //store data in map + + it2 = seqsPerGroup.find(seqGroup); + if (it2 == seqsPerGroup.end()) { //if it's a new group + seqsPerGroup[seqGroup] = 1; + }else {//it's a group we already have + seqsPerGroup[seqGroup]++; + } +} +/************************************************************/ +void TreeMap::removeSeq(string seqName) { + + //erase name from namesOfSeqs + for (int i = 0; i < namesOfSeqs.size(); i++) { + if (namesOfSeqs[i] == seqName) { + namesOfSeqs.erase(namesOfSeqs.begin()+i); + break; + } + } + + //decrement sequences in this group + string group = treemap[seqName].groupname; + seqsPerGroup[group]--; + + //remove seq from treemap + it = treemap.find(seqName); + treemap.erase(it); +} +/************************************************************/ int TreeMap::getNumGroups() { @@ -116,11 +150,7 @@ bool TreeMap::isValidGroup(string groupname) { return false; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the TreeMap class Function isValidGroup. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the TreeMap class function isValidGroup. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "TreeMap", "isValidGroup"); exit(1); } } @@ -134,23 +164,19 @@ void TreeMap::print(ostream& output){ } } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the TreeMap class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the TreeMap class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "TreeMap", "print"); exit(1); } } /************************************************************/ -void TreeMap::makeSim(GroupMap* groupmap) { +void TreeMap::makeSim(vector ThisnamesOfGroups) { try { //set names of groups - namesOfGroups = groupmap->namesOfGroups; + namesOfGroups = ThisnamesOfGroups; //set names of seqs to names of groups - namesOfSeqs = groupmap->namesOfGroups; + namesOfSeqs = ThisnamesOfGroups; // make map where key and value are both the group name since that what the tree.shared command wants for (int i = 0; i < namesOfGroups.size(); i++) { @@ -162,11 +188,7 @@ void TreeMap::makeSim(GroupMap* groupmap) { } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the TreeMap class Function makeSim. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the TreeMap class function makeSim. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "TreeMap", "makeSim"); exit(1); } } @@ -192,11 +214,7 @@ void TreeMap::makeSim(ListVector* list) { } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the TreeMap class Function makeSim. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the TreeMap class function makeSim. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "TreeMap", "makeSim"); exit(1); } }