From b0997605981902442138b9309e9c43d95c3ba10a Mon Sep 17 00:00:00 2001 From: SarahsWork Date: Mon, 1 Apr 2013 07:43:39 -0400 Subject: [PATCH] added end of file character to some type type reads. fixes while testing. --- Mothur.xcodeproj/project.pbxproj | 5 +- chimeraperseuscommand.cpp | 5 +- chimeraslayercommand.cpp | 7 +-- chimerauchimecommand.cpp | 5 +- getseqscommand.cpp | 2 +- makecontigscommand.cpp | 4 +- phylotypecommand.cpp | 93 ++++++++++++++++++++------------ phylotypecommand.h | 2 +- prcseqscommand.cpp | 2 +- removeseqscommand.cpp | 2 +- screenseqscommand.cpp | 2 +- sequence.cpp | 2 +- sffinfocommand.cpp | 2 +- trimflowscommand.cpp | 4 +- trimseqscommand.cpp | 2 +- 15 files changed, 76 insertions(+), 63 deletions(-) diff --git a/Mothur.xcodeproj/project.pbxproj b/Mothur.xcodeproj/project.pbxproj index 3c14d55..ce07a03 100644 --- a/Mothur.xcodeproj/project.pbxproj +++ b/Mothur.xcodeproj/project.pbxproj @@ -2353,7 +2353,6 @@ GCC_OPTIMIZATION_LEVEL = 3; "INSTALL_PATH[sdk=*]" = TARGET_BUILD_DIR; PRODUCT_NAME = mothur; - SDKROOT = macosx; SDKROOT = macosx10.8; SKIP_INSTALL = NO; }; @@ -2423,8 +2422,8 @@ GCC_MODEL_TUNING = ""; GCC_OPTIMIZATION_LEVEL = 3; GCC_PREPROCESSOR_DEFINITIONS = ( - "VERSION=\"\\\"1.29.2\\\"\"", - "RELEASE_DATE=\"\\\"2/12/2013\\\"\"", + "VERSION=\"\\\"1.30.0\\\"\"", + "RELEASE_DATE=\"\\\"4/01/2013\\\"\"", ); GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; diff --git a/chimeraperseuscommand.cpp b/chimeraperseuscommand.cpp index 842a65e..f7dc597 100644 --- a/chimeraperseuscommand.cpp +++ b/chimeraperseuscommand.cpp @@ -469,10 +469,7 @@ ChimeraPerseusCommand::ChimeraPerseusCommand(string option) { m->mothurConvert(temp, beta); temp = validParameter.validFile(parameters, "dereplicate", false); - if (temp == "not found") { - if (groupfile != "") { temp = "false"; } - else { temp = "true"; } - } + if (temp == "not found") { temp = "false"; } dups = m->isTrue(temp); } } diff --git a/chimeraslayercommand.cpp b/chimeraslayercommand.cpp index fceef21..d16843c 100644 --- a/chimeraslayercommand.cpp +++ b/chimeraslayercommand.cpp @@ -603,10 +603,7 @@ ChimeraSlayerCommand::ChimeraSlayerCommand(string option) { m->mothurConvert(temp, numwanted); temp = validParameter.validFile(parameters, "dereplicate", false); - if (temp == "not found") { - if (groupfile != "") { temp = "false"; } - else { temp = "true"; } - } + if (temp == "not found") { temp = "false"; } dups = m->isTrue(temp); blastlocation = validParameter.validFile(parameters, "blastlocation", false); @@ -1631,7 +1628,7 @@ int ChimeraSlayerCommand::createProcessesGroups(string outputFName, string accno //Create processor worker threads. for(int i=1; iisTrue(temp); diff --git a/getseqscommand.cpp b/getseqscommand.cpp index 480bde3..287f5a6 100644 --- a/getseqscommand.cpp +++ b/getseqscommand.cpp @@ -501,7 +501,7 @@ int GetSeqsCommand::readQual(){ saveName = name.substr(1); while (!in.eof()) { char c = in.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else { name += c; } } m->gobble(in); diff --git a/makecontigscommand.cpp b/makecontigscommand.cpp index c8f20f1..85b6a8f 100644 --- a/makecontigscommand.cpp +++ b/makecontigscommand.cpp @@ -1681,7 +1681,7 @@ bool MakeContigsCommand::getOligos(vector >& fastaFileNames, stri // get rest of line in case there is a primer name while (!in.eof()) { char c = in.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else if (c == 32 || c == 9){;} //space or tab else { group += c; } } @@ -1713,7 +1713,7 @@ bool MakeContigsCommand::getOligos(vector >& fastaFileNames, stri group = ""; while (!in.eof()) { char c = in.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else if (c == 32 || c == 9){;} //space or tab else { group += c; } } diff --git a/phylotypecommand.cpp b/phylotypecommand.cpp index fbc7c60..1611705 100644 --- a/phylotypecommand.cpp +++ b/phylotypecommand.cpp @@ -17,7 +17,8 @@ vector PhylotypeCommand::setParameters(){ try { CommandParameter ptaxonomy("taxonomy", "InputTypes", "", "", "none", "none", "none","list-rabund-sabund",false,true,true); parameters.push_back(ptaxonomy); - CommandParameter pname("name", "InputTypes", "", "", "none", "none", "none","",false,false,true); parameters.push_back(pname); + CommandParameter pname("name", "InputTypes", "", "", "NameCount", "none", "ColumnName","rabund-sabund",false,false,true); parameters.push_back(pname); + CommandParameter pcount("count", "InputTypes", "", "", "NameCount", "none", "none","",false,false,true); parameters.push_back(pcount); CommandParameter pcutoff("cutoff", "Number", "", "-1", "", "", "","",false,false,true); parameters.push_back(pcutoff); CommandParameter plabel("label", "String", "", "", "", "", "","",false,false); parameters.push_back(plabel); CommandParameter pinputdir("inputdir", "String", "", "", "", "", "","",false,false); parameters.push_back(pinputdir); @@ -37,7 +38,7 @@ string PhylotypeCommand::getHelpString(){ try { string helpString = ""; helpString += "The phylotype command reads a taxonomy file and outputs a .list, .rabund and .sabund file. \n"; - helpString += "The phylotype command parameter options are taxonomy, cutoff and label. The taxonomy parameter is required.\n"; + helpString += "The phylotype command parameter options are taxonomy, name, count, cutoff and label. The taxonomy parameter is required.\n"; helpString += "The cutoff parameter allows you to specify the level you want to stop at. The default is the highest level in your taxonomy file. \n"; helpString += "For example: taxonomy = Bacteria;Bacteroidetes-Chlorobi;Bacteroidetes; - cutoff=2, would truncate the taxonomy to Bacteria;Bacteroidetes-Chlorobi; \n"; helpString += "For the cutoff parameter levels count up from the root of the phylotree. This enables you to look at the grouping down to a specific resolution, say the genus level.\n"; @@ -58,9 +59,9 @@ string PhylotypeCommand::getOutputPattern(string type) { try { string pattern = ""; - if (type == "list") { pattern = "[filename],[tag],list"; } - else if (type == "rabund") { pattern = "[filename],[tag],rabund"; } - else if (type == "sabund") { pattern = "[filename],[tag],sabund"; } + if (type == "list") { pattern = "[filename],[clustertag],list-[filename],[clustertag],[tag2],list"; } + else if (type == "rabund") { pattern = "[filename],[clustertag],rabund"; } + else if (type == "sabund") { pattern = "[filename],[clustertag],sabund"; } else { m->mothurOut("[ERROR]: No definition for type " + type + " output pattern.\n"); m->control_pressed = true; } return pattern; @@ -134,6 +135,14 @@ PhylotypeCommand::PhylotypeCommand(string option) { //if the user has not given a path then, add inputdir. else leave path alone. if (path == "") { parameters["name"] = inputDir + it->second; } } + + it = parameters.find("count"); + //user has given a template file + if(it != parameters.end()){ + path = m->hasPath(it->second); + //if the user has not given a path then, add inputdir. else leave path alone. + if (path == "") { parameters["count"] = inputDir + it->second; } + } } taxonomyFileName = validParameter.validFile(parameters, "taxonomy", true); @@ -150,7 +159,12 @@ PhylotypeCommand::PhylotypeCommand(string option) { namefile = validParameter.validFile(parameters, "name", true); if (namefile == "not open") { namefile = ""; abort = true; } else if (namefile == "not found") { namefile = ""; } - else { readNamesFile(); m->setNameFile(namefile); } + else { readNamesFile(); m->setNameFile(namefile); } + + countfile = validParameter.validFile(parameters, "count", true); + if (countfile == "not open") { abort = true; countfile = ""; } + else if (countfile == "not found") { countfile = ""; } + else { m->setCountTableFile(countfile); } //if the user changes the output directory command factory will send this info to us in the output parameter outputDir = validParameter.validFile(parameters, "outputdir", false); if (outputDir == "not found"){ @@ -158,6 +172,8 @@ PhylotypeCommand::PhylotypeCommand(string option) { outputDir += m->hasPath(taxonomyFileName); //if user entered a file with a path then preserve it } + if ((countfile != "") && (namefile != "")) { m->mothurOut("You must enter ONLY ONE of the following: count or name."); m->mothurOutEndLine(); abort = true; } + string temp = validParameter.validFile(parameters, "cutoff", false); if (temp == "not found") { temp = "-1"; } m->mothurConvert(temp, cutoff); @@ -169,11 +185,12 @@ PhylotypeCommand::PhylotypeCommand(string option) { else { allLines = 1; } } - if (namefile == "") { - vector files; files.push_back(taxonomyFileName); - parser.getNameFile(files); + if (countfile == "") { + if (namefile == "") { + vector files; files.push_back(taxonomyFileName); + parser.getNameFile(files); + } } - } } catch(exception& e) { @@ -211,24 +228,27 @@ int PhylotypeCommand::execute(){ if (m->control_pressed) { delete tree; return 0; } - string fileroot = outputDir + m->getRootName(m->getSimpleName(taxonomyFileName)); - map variables; + ofstream outList, outRabund, outSabund; + map variables; + string fileroot = outputDir + m->getRootName(m->getSimpleName(taxonomyFileName)); variables["[filename]"] = fileroot; - variables["[tag]"] = "tx"; - ofstream outList; - string outputListFile = getOutputFileName("list",variables); - m->openOutputFile(outputListFile, outList); - ofstream outSabund; - string outputSabundFile = getOutputFileName("sabund",variables); - m->openOutputFile(outputSabundFile, outSabund); - ofstream outRabund; - string outputRabundFile = getOutputFileName("rabund",variables); - m->openOutputFile(outputRabundFile, outRabund); - - outputNames.push_back(outputListFile); outputTypes["list"].push_back(outputListFile); - outputNames.push_back(outputSabundFile); outputTypes["sabund"].push_back(outputSabundFile); - outputNames.push_back(outputRabundFile); outputTypes["rabund"].push_back(outputRabundFile); - + variables["[clustertag]"] = "tx"; + string sabundFileName = getOutputFileName("sabund", variables); + string rabundFileName = getOutputFileName("rabund", variables); + if (countfile != "") { variables["[tag2]"] = "unique_list"; } + string listFileName = getOutputFileName("list", variables); + + if (countfile == "") { + m->openOutputFile(sabundFileName, outSabund); + m->openOutputFile(rabundFileName, outRabund); + outputNames.push_back(sabundFileName); outputTypes["sabund"].push_back(sabundFileName); + outputNames.push_back(rabundFileName); outputTypes["rabund"].push_back(rabundFileName); + + } + m->openOutputFile(listFileName, outList); + outputNames.push_back(listFileName); outputTypes["list"].push_back(listFileName); + + int count = 1; //start at leaves of tree and work towards root, processing the labels the user wants while((!done) && ((allLines == 1) || (labels.size() != 0))) { @@ -237,7 +257,7 @@ int PhylotypeCommand::execute(){ count++; if (m->control_pressed) { - outRabund.close(); outSabund.close(); outList.close(); + if (countfile == "") { outRabund.close(); outSabund.close(); } outList.close(); for (int i = 0; i < outputNames.size(); i++) { m->mothurRemove(outputNames[i]); } delete tree; return 0; } @@ -284,11 +304,12 @@ int PhylotypeCommand::execute(){ //print listvector list.print(outList); - //print rabund - list.getRAbundVector().print(outRabund); - //print sabund - list.getSAbundVector().print(outSabund); - + if (countfile == "") { + //print rabund + list.getRAbundVector().print(outRabund); + //print sabund + list.getSAbundVector().print(outSabund); + } labels.erase(level); }else { @@ -309,8 +330,10 @@ int PhylotypeCommand::execute(){ } outList.close(); - outSabund.close(); - outRabund.close(); + if (countfile == "") { + outSabund.close(); + outRabund.close(); + } delete tree; diff --git a/phylotypecommand.h b/phylotypecommand.h index 534dc8e..ef8b8f1 100644 --- a/phylotypecommand.h +++ b/phylotypecommand.h @@ -37,7 +37,7 @@ public: private: bool abort, allLines; - string taxonomyFileName, label, outputDir, namefile; + string taxonomyFileName, label, outputDir, namefile, countfile; set labels; //holds labels to be used int cutoff; map namemap; diff --git a/prcseqscommand.cpp b/prcseqscommand.cpp index 5fa71be..cf93cb7 100644 --- a/prcseqscommand.cpp +++ b/prcseqscommand.cpp @@ -804,7 +804,7 @@ bool PcrSeqsCommand::readOligos(){ // get rest of line in case there is a primer name while (!inOligos.eof()) { char c = inOligos.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else if (c == 32 || c == 9){;} //space or tab } primers[oligo] = primerCount; primerCount++; diff --git a/removeseqscommand.cpp b/removeseqscommand.cpp index b4fb467..c7af108 100644 --- a/removeseqscommand.cpp +++ b/removeseqscommand.cpp @@ -469,7 +469,7 @@ int RemoveSeqsCommand::readQual(){ saveName = name.substr(1); while (!in.eof()) { char c = in.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else { name += c; } } m->gobble(in); diff --git a/screenseqscommand.cpp b/screenseqscommand.cpp index 29e5413..033fbca 100644 --- a/screenseqscommand.cpp +++ b/screenseqscommand.cpp @@ -2301,7 +2301,7 @@ int ScreenSeqsCommand::screenQual(map badSeqNames){ saveName = name.substr(1); while (!in.eof()) { char c = in.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else { name += c; } } m->gobble(in); diff --git a/sequence.cpp b/sequence.cpp index 4c631a2..d1cf729 100644 --- a/sequence.cpp +++ b/sequence.cpp @@ -220,7 +220,7 @@ Sequence::Sequence(ifstream& fastaFile, string& extraInfo, bool getInfo){ //read info after sequence name while (!fastaFile.eof()) { char c = fastaFile.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } extraInfo += c; } diff --git a/sffinfocommand.cpp b/sffinfocommand.cpp index 0148ab1..9110099 100644 --- a/sffinfocommand.cpp +++ b/sffinfocommand.cpp @@ -1656,7 +1656,7 @@ bool SffInfoCommand::readOligos(string oligoFile){ // get rest of line in case there is a primer name while (!inOligos.eof()) { char c = inOligos.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else if (c == 32 || c == 9){;} //space or tab else { group += c; } } diff --git a/trimflowscommand.cpp b/trimflowscommand.cpp index 1bab57f..2da240e 100644 --- a/trimflowscommand.cpp +++ b/trimflowscommand.cpp @@ -28,7 +28,7 @@ vector TrimFlowsCommand::setParameters(){ CommandParameter psignal("signal", "Number", "", "0.50", "", "", "","",false,false); parameters.push_back(psignal); CommandParameter pnoise("noise", "Number", "", "0.70", "", "", "","",false,false); parameters.push_back(pnoise); CommandParameter pallfiles("allfiles", "Boolean", "", "t", "", "", "","",false,false); parameters.push_back(pallfiles); - CommandParameter porder("order", "Multiple", "A-B", "A", "", "", "","",false,false, true); parameters.push_back(porder); + CommandParameter porder("order", "Multiple", "A-B-I", "A", "", "", "","",false,false, true); parameters.push_back(porder); CommandParameter pfasta("fasta", "Boolean", "", "F", "", "", "","",false,false); parameters.push_back(pfasta); CommandParameter pinputdir("inputdir", "String", "", "", "", "", "","",false,false); parameters.push_back(pinputdir); CommandParameter poutputdir("outputdir", "String", "", "", "", "", "","",false,false); parameters.push_back(poutputdir); @@ -578,7 +578,7 @@ void TrimFlowsCommand::getOligos(vector >& outFlowFileNames){ while (!oligosFile.eof()) { // get rest of line in case there is a primer name = will have the name of the primer char c = oligosFile.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else if (c == 32 || c == 9){;} //space or tab else { group += c; } } diff --git a/trimseqscommand.cpp b/trimseqscommand.cpp index a103626..2c88bef 100644 --- a/trimseqscommand.cpp +++ b/trimseqscommand.cpp @@ -1533,7 +1533,7 @@ bool TrimSeqsCommand::getOligos(vector >& fastaFileNames, vector< // get rest of line in case there is a primer name while (!inOligos.eof()) { char c = inOligos.get(); - if (c == 10 || c == 13){ break; } + if (c == 10 || c == 13 || c == -1){ break; } else if (c == 32 || c == 9){;} //space or tab else { group += c; } } -- 2.39.2