X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=treemap.cpp;h=1fc5c01b796a67bd948a70147fa4dead9320ea08;hb=2bb9267aa4b4ecdf8488b06605cc9f3f36fa4332;hp=52a90031d380fedddd275bd5ebbb6a3f8600964c;hpb=e03de8796670a0c747aed63483daa09c8b86aea0;p=mothur.git diff --git a/treemap.cpp b/treemap.cpp index 52a9003..1fc5c01 100644 --- a/treemap.cpp +++ b/treemap.cpp @@ -12,6 +12,7 @@ /************************************************************/ TreeMap::TreeMap(string filename) { + m = MothurOut::getInstance(); groupFileName = filename; m->openInputFile(filename, fileHandle); } @@ -20,28 +21,38 @@ TreeMap::~TreeMap(){} /************************************************************/ -void TreeMap::readMap() { +int TreeMap::readMap() { string seqName, seqGroup; - + int error = 0; + while(fileHandle){ - fileHandle >> seqName; //read from first column + fileHandle >> seqName; //read from first column fileHandle >> seqGroup; //read from second column - - namesOfSeqs.push_back(seqName); + + if (m->control_pressed) { fileHandle.close(); return 1; } + 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]++; + map::iterator itCheck = treemap.find(seqName); + if (itCheck != treemap.end()) { error = 1; m->mothurOut("[WARNING]: Your groupfile contains more than 1 sequence named " + seqName + ", sequence names must be unique. Please correct."); m->mothurOutEndLine(); } + else { + namesOfSeqs.push_back(seqName); + 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]++; + } } - + m->gobble(fileHandle); } fileHandle.close(); + + + return error; } /************************************************************/ void TreeMap::addSeq(string seqName, string seqGroup) { @@ -170,13 +181,13 @@ void TreeMap::print(ostream& output){ } /************************************************************/ -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++) {