X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=treemap.cpp;fp=treemap.cpp;h=7b9fd32a43cbfa8b2ef213889c3a1d4add7661a8;hb=28bcfc4a41b8b82f66636587e0d4d355d07cbdd1;hp=42ec336dd53d9da3c0ac44b997cdc7509a89c9cf;hpb=4d3ecf0d35c014b176345d21383343e7a58d2445;p=mothur.git diff --git a/treemap.cpp b/treemap.cpp index 42ec336..7b9fd32 100644 --- a/treemap.cpp +++ b/treemap.cpp @@ -13,6 +13,9 @@ TreeMap::TreeMap(string filename) { m = MothurOut::getInstance(); + ofstream out2; + m->openOutputFileAppend(filename, out2); + out2 << endl; out2.close(); groupFileName = filename; m->openInputFile(filename, fileHandle); } @@ -22,6 +25,10 @@ /************************************************************/ int TreeMap::readMap(string gf) { try { + ofstream out2; + m->openOutputFileAppend(gf, out2); + out2 << endl; out2.close(); + groupFileName = gf; m->openInputFile(gf, fileHandle); @@ -65,6 +72,34 @@ int TreeMap::readMap(string gf) { } fileHandle.close(); + if (rest != "") { + vector pieces = m->splitWhiteSpace(rest); + + for (int i = 0; i < pieces.size(); i++) { + if (columnOne) { seqName = pieces[i]; columnOne=false; } + else { seqGroup = pieces[i]; pairDone = true; columnOne=true; } + + if (pairDone) { + setNamesOfGroups(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]++; + } + } + pairDone = false; + } + } + } + return error; } catch(exception& e) { @@ -116,6 +151,34 @@ int TreeMap::readMap() { } fileHandle.close(); + if (rest != "") { + vector pieces = m->splitWhiteSpace(rest); + + for (int i = 0; i < pieces.size(); i++) { + if (columnOne) { seqName = pieces[i]; columnOne=false; } + else { seqGroup = pieces[i]; pairDone = true; columnOne=true; } + + if (pairDone) { + setNamesOfGroups(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]++; + } + } + pairDone = false; + } + } + } + return error; } catch(exception& e) {