X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=getgroupscommand.cpp;h=432894b06fe9d5ffa6982fdaaa49474a44c403e0;hb=8dd3c225255d7084e3aff8740aa4f1f1cabb367a;hp=d3470f16ad990d7285e51e534ad059666a03d097;hpb=8742edef7a51b82834289e570d336f5a81ba1f2b;p=mothur.git diff --git a/getgroupscommand.cpp b/getgroupscommand.cpp index d3470f1..432894b 100644 --- a/getgroupscommand.cpp +++ b/getgroupscommand.cpp @@ -16,12 +16,12 @@ //********************************************************************************************************************** vector GetGroupsCommand::setParameters(){ try { - CommandParameter pfasta("fasta", "InputTypes", "", "", "none", "FNGLT", "none",false,false); parameters.push_back(pfasta); - CommandParameter pshared("shared", "InputTypes", "", "", "none", "FNGLT-sharedGroup", "none",false,false); parameters.push_back(pshared); - CommandParameter pname("name", "InputTypes", "", "", "none", "FNGLT", "none",false,false); parameters.push_back(pname); - CommandParameter pgroup("group", "InputTypes", "", "", "none", "FNGLT-sharedGroup", "none",false,false); parameters.push_back(pgroup); - CommandParameter plist("list", "InputTypes", "", "", "none", "FNGLT", "none",false,false); parameters.push_back(plist); - CommandParameter ptaxonomy("taxonomy", "InputTypes", "", "", "none", "FNGLT", "none",false,false); parameters.push_back(ptaxonomy); + CommandParameter pfasta("fasta", "InputTypes", "", "", "none", "none", "FNGLT",false,false); parameters.push_back(pfasta); + CommandParameter pshared("shared", "InputTypes", "", "", "none", "sharedGroup", "none",false,false); parameters.push_back(pshared); + CommandParameter pname("name", "InputTypes", "", "", "none", "none", "none",false,false); parameters.push_back(pname); + CommandParameter pgroup("group", "InputTypes", "", "", "none", "sharedGroup", "FNGLT",false,false); parameters.push_back(pgroup); + CommandParameter plist("list", "InputTypes", "", "", "none", "none", "FNGLT",false,false); parameters.push_back(plist); + CommandParameter ptaxonomy("taxonomy", "InputTypes", "", "", "none", "none", "FNGLT",false,false); parameters.push_back(ptaxonomy); CommandParameter paccnos("accnos", "InputTypes", "", "", "none", "none", "none",false,false); parameters.push_back(paccnos); CommandParameter pgroups("groups", "String", "", "", "", "", "",false,false); parameters.push_back(pgroups); CommandParameter pinputdir("inputdir", "String", "", "", "", "", "",false,false); parameters.push_back(pinputdir); @@ -180,22 +180,27 @@ GetGroupsCommand::GetGroupsCommand(string option) { else { m->setAccnosFile(accnosfile); } fastafile = validParameter.validFile(parameters, "fasta", true); - if (fastafile == "not open") { abort = true; } + if (fastafile == "not open") { fastafile = ""; abort = true; } else if (fastafile == "not found") { fastafile = ""; } else { m->setFastaFile(fastafile); } namefile = validParameter.validFile(parameters, "name", true); - if (namefile == "not open") { abort = true; } + if (namefile == "not open") { namefile = ""; abort = true; } 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") { abort = true; } else if (listfile == "not found") { listfile = ""; } else { m->setListFile(listfile); } taxfile = validParameter.validFile(parameters, "taxonomy", true); - if (taxfile == "not open") { abort = true; } + if (taxfile == "not open") { taxfile = ""; abort = true; } else if (taxfile == "not found") { taxfile = ""; } else { m->setTaxonomyFile(taxfile); } @@ -203,7 +208,7 @@ GetGroupsCommand::GetGroupsCommand(string option) { if (groups == "not found") { groups = ""; } else { m->splitAtDash(groups, Groups); - m->Groups = Groups; + m->setGroups(Groups); } sharedfile = validParameter.validFile(parameters, "shared", true); @@ -248,6 +253,10 @@ GetGroupsCommand::GetGroupsCommand(string option) { if ((fastafile == "") && (namefile == "") && (groupfile == "") && (sharedfile == "") && (listfile == "") && (taxfile == "")) { m->mothurOut("You must provide at least one of the following: fasta, name, taxonomy, group, shared or list."); m->mothurOutEndLine(); abort = true; } if ((groupfile == "") && ((namefile != "") || (fastafile != "") || (listfile != "") || (taxfile != ""))) { m->mothurOut("If using a fasta, name, taxonomy, group or list, then you must provide a group file."); m->mothurOutEndLine(); abort = true; } + if ((namefile == "") && ((fastafile != "") || (taxfile != ""))){ + vector files; files.push_back(fastafile); files.push_back(taxfile); + parser.getNameFile(files); + } } } @@ -273,7 +282,9 @@ int GetGroupsCommand::execute(){ //make sure groups are valid //takes care of user setting groupNames that are invalid or setting groups=all SharedUtil* util = new SharedUtil(); - util->setGroups(Groups, groupMap->namesOfGroups); + vector gNamesOfGroups = groupMap->getNamesOfGroups(); + util->setGroups(Groups, gNamesOfGroups); + groupMap->setNamesOfGroups(gNamesOfGroups); delete util; //fill names with names of sequences that are from the groups we want to remove @@ -373,6 +384,15 @@ int GetGroupsCommand::readFasta(){ currSeq.printSequence(out); selectedCount++; + }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); + selectedCount++; + } } } m->gobble(in); @@ -488,10 +508,26 @@ int GetGroupsCommand::readList(){ //if that name is in the .accnos file, add it if (names.count(name) != 0) { newNames += name + ","; selectedCount++; } + 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 + ","; + selectedCount++; + } + } } //get last name if (names.count(binnames) != 0) { newNames += binnames + ","; selectedCount++; } + 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 + ","; + selectedCount++; + } + } //if there are names in this bin add to new list if (newNames != "") { @@ -583,6 +619,7 @@ int GetGroupsCommand::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]; } } @@ -676,6 +713,13 @@ int GetGroupsCommand::readTax(){ if (names.count(name) != 0) { wroteSomething = true; out << name << '\t' << tax << endl; + }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; + } } m->gobble(in); @@ -711,7 +755,7 @@ void GetGroupsCommand::readAccnos(){ } in.close(); - m->Groups = Groups; + m->setGroups(Groups); } catch(exception& e) {