X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=removegroupscommand.cpp;h=e5a3bb2edc7fc97dacb89393ef3a2968b64247b4;hb=1b0bddfbf4ac5df7e2dad03c8a5350e71b052f78;hp=81722dd3e4047fc2505d64372a2ca539978c9445;hpb=55386dddad84cc1140d736cabaf4dd0ae16f2e01;p=mothur.git diff --git a/removegroupscommand.cpp b/removegroupscommand.cpp index 81722dd..e5a3bb2 100644 --- a/removegroupscommand.cpp +++ b/removegroupscommand.cpp @@ -190,6 +190,11 @@ RemoveGroupsCommand::RemoveGroupsCommand(string option) { else if (namefile == "not found") { namefile = ""; } else { m->setNameFile(namefile); } + groupfile = validParameter.validFile(parameters, "group", true); + if (groupfile == "not open") { groupfile = ""; abort = true; } + else if (groupfile == "not found") { groupfile = ""; } + else { m->setGroupFile(groupfile); } + listfile = validParameter.validFile(parameters, "list", true); if (listfile == "not open") { listfile = ""; abort = true; } else if (listfile == "not found") { listfile = ""; } @@ -370,9 +375,16 @@ int RemoveGroupsCommand::readFasta(){ //if this name is in the accnos file if (names.count(name) == 0) { wroteSomething = true; - - currSeq.printSequence(out); - }else { removedCount++; } + currSeq.printSequence(out); + }else { + //if you are not in the accnos file check if you are a name that needs to be changed + map::iterator it = uniqueToRedundant.find(name); + if (it != uniqueToRedundant.end()) { + wroteSomething = true; + currSeq.setName(it->second); + currSeq.printSequence(out); + }else { removedCount++; } + } } m->gobble(in); } @@ -518,12 +530,23 @@ int RemoveGroupsCommand::readList(){ //if that name is in the .accnos file, add it if (names.count(name) == 0) { newNames += name + ","; } - else { removedCount++; } + else { + //if you are not in the accnos file check if you are a name that needs to be changed + map::iterator it = uniqueToRedundant.find(name); + if (it != uniqueToRedundant.end()) { + newNames += it->second + ","; + }else { removedCount++; } + } } //get last name if (names.count(binnames) == 0) { newNames += binnames + ","; } - else { removedCount++; } + else { //if you are not in the accnos file check if you are a name that needs to be changed + map::iterator it = uniqueToRedundant.find(binnames); + if (it != uniqueToRedundant.end()) { + newNames += it->second + ","; + }else { removedCount++; } + } //if there are names in this bin add to new list if (newNames != "") { @@ -615,6 +638,7 @@ int RemoveGroupsCommand::readName(){ //you know you have at least one valid second since first column is valid for (int i = 0; i < validSecond.size()-1; i++) { out << validSecond[i] << ','; } out << validSecond[validSecond.size()-1] << endl; + uniqueToRedundant[firstCol] = validSecond[0]; } } @@ -709,7 +733,12 @@ int RemoveGroupsCommand::readTax(){ if (names.count(name) == 0) { wroteSomething = true; out << name << '\t' << tax << endl; - }else { removedCount++; } + }else { //if you are not in the accnos file check if you are a name that needs to be changed + map::iterator it = uniqueToRedundant.find(name); + if (it != uniqueToRedundant.end()) { + wroteSomething = true; + out << it->second << '\t' << tax << endl; + }else { removedCount++; } } m->gobble(in); }