X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=counttable.cpp;h=c16bf9227a51580cac00de78a215b89e2a93e001;hb=e946299389ed49b4afc4262a4e8070ee3d804769;hp=2ab0e345dbd110cc5c0402d0caa36becc1820bd2;hpb=90708fe9701e3827e477c82fb3652539c3bf2a0d;p=mothur.git diff --git a/counttable.cpp b/counttable.cpp index 2ab0e34..c16bf92 100644 --- a/counttable.cpp +++ b/counttable.cpp @@ -131,6 +131,9 @@ int CountTable::createTable(string namefile, string groupfile, bool createGroup) string firstCol, secondCol; in >> firstCol; m->gobble(in); in >> secondCol; m->gobble(in); + m->checkName(firstCol); + m->checkName(secondCol); + vector names; m->splitAtChar(secondCol, names, ','); @@ -280,7 +283,23 @@ int CountTable::printTable(string file) { for (int i = 0; i < groups.size(); i++) { out << groups[i] << '\t'; } out << endl; - for (map::iterator itNames = indexNameMap.begin(); itNames != indexNameMap.end(); itNames++) { + map reverse; //use this to preserve order + for (map::iterator it = indexNameMap.begin(); it !=indexNameMap.end(); it++) { reverse[it->second] = it->first; } + + for (int i = 0; i < totals.size(); i++) { + map::iterator itR = reverse.find(i); + + if (itR != reverse.end()) { //will equal end if seqs were removed because remove just removes from indexNameMap + out << itR->second << '\t' << totals[i] << '\t'; + if (hasGroups) { + for (int j = 0; j < groups.size(); j++) { + out << counts[i][j] << '\t'; + } + } + out << endl; + } + } + /*for (map::iterator itNames = indexNameMap.begin(); itNames != indexNameMap.end(); itNames++) { out << itNames->first << '\t' << totals[itNames->second] << '\t'; if (hasGroups) { @@ -289,7 +308,7 @@ int CountTable::printTable(string file) { } } out << endl; - } + }*/ out.close(); return 0; } @@ -361,7 +380,7 @@ int CountTable::getGroupCount(string groupName) { if (hasGroups) { map::iterator it = indexGroupMap.find(groupName); if (it == indexGroupMap.end()) { - m->mothurOut("[ERROR]: " + groupName + " is not in your count table. Please correct.\n"); m->control_pressed = true; + m->mothurOut("[ERROR]: group " + groupName + " is not in your count table. Please correct.\n"); m->control_pressed = true; }else { return totalGroups[it->second]; } @@ -381,11 +400,11 @@ int CountTable::getGroupCount(string seqName, string groupName) { if (hasGroups) { map::iterator it = indexGroupMap.find(groupName); if (it == indexGroupMap.end()) { - m->mothurOut("[ERROR]: " + groupName + " is not in your count table. Please correct.\n"); m->control_pressed = true; + m->mothurOut("[ERROR]: group " + groupName + " is not in your count table. Please correct.\n"); m->control_pressed = true; }else { map::iterator it2 = indexNameMap.find(seqName); if (it2 == indexNameMap.end()) { - m->mothurOut("[ERROR]: " + seqName + " is not in your count table. Please correct.\n"); m->control_pressed = true; + m->mothurOut("[ERROR]: seq " + seqName + " is not in your count table. Please correct.\n"); m->control_pressed = true; }else { return counts[it2->second][it->second]; }