From 0d714b1c40488d4c2f3a61a5ef861f21522d48b4 Mon Sep 17 00:00:00 2001 From: westcott Date: Wed, 2 Jun 2010 15:23:36 +0000 Subject: [PATCH] added sort parameter to get.otulist --- Mothur.xcodeproj/project.pbxproj | 4 ++-- binsequencecommand.cpp | 1 - getlistcountcommand.cpp | 31 +++++++++++++++++++++++-------- getlistcountcommand.h | 2 +- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/Mothur.xcodeproj/project.pbxproj b/Mothur.xcodeproj/project.pbxproj index 1736df4..ab546df 100644 --- a/Mothur.xcodeproj/project.pbxproj +++ b/Mothur.xcodeproj/project.pbxproj @@ -652,8 +652,8 @@ A7DA202B113FECD400BF472F /* command.hpp */, A7DA1FEF113FECD400BF472F /* aligncommand.h */, A7DA1FEE113FECD400BF472F /* aligncommand.cpp */, - A7DA1FFD113FECD400BF472F /* binsequencecommand.cpp */, A7DA1FFE113FECD400BF472F /* binsequencecommand.h */, + A7DA1FFD113FECD400BF472F /* binsequencecommand.cpp */, A7DA2007113FECD400BF472F /* bootstrapsharedcommand.cpp */, A7DA2008113FECD400BF472F /* bootstrapsharedcommand.h */, A7D216061199C47F00F13F13 /* catchallcommand.h */, @@ -698,8 +698,8 @@ A7DA205B113FECD400BF472F /* getgroupcommand.h */, A7DA205C113FECD400BF472F /* getlabelcommand.cpp */, A7DA205D113FECD400BF472F /* getlabelcommand.h */, - A7DA205E113FECD400BF472F /* getlistcountcommand.cpp */, A7DA205F113FECD400BF472F /* getlistcountcommand.h */, + A7DA205E113FECD400BF472F /* getlistcountcommand.cpp */, A7DA2061113FECD400BF472F /* getoturepcommand.h */, A7DA2060113FECD400BF472F /* getoturepcommand.cpp */, A7DA2062113FECD400BF472F /* getrabundcommand.cpp */, diff --git a/binsequencecommand.cpp b/binsequencecommand.cpp index 033cd52..1d4f8c6 100644 --- a/binsequencecommand.cpp +++ b/binsequencecommand.cpp @@ -181,7 +181,6 @@ int BinSeqCommand::execute(){ readNamesFile(); } - //read list file read = new ReadOTUFile(globaldata->getListFile()); read->read(&*globaldata); diff --git a/getlistcountcommand.cpp b/getlistcountcommand.cpp index 7757122..43280ed 100644 --- a/getlistcountcommand.cpp +++ b/getlistcountcommand.cpp @@ -22,7 +22,7 @@ GetListCountCommand::GetListCountCommand(string option) { else { //valid paramters for this command - string AlignArray[] = {"list","label","outputdir","inputdir"}; + string AlignArray[] = {"list","label","sort","outputdir","inputdir"}; vector myArray (AlignArray, AlignArray+(sizeof(AlignArray)/sizeof(string))); OptionParser parser(option); @@ -64,6 +64,8 @@ GetListCountCommand::GetListCountCommand(string option) { //check for optional parameter and set defaults // ...at some point should added some additional type checking... + sort = validParameter.validFile(parameters, "sort", false); if (sort == "not found") { sort = "otu"; } + if ((sort != "otu") && (sort != "name")) { m->mothurOut( sort + " is not a valid sort option. Options are otu and name. I will use otu."); m->mothurOutEndLine(); sort = "otu"; } label = validParameter.validFile(parameters, "label", false); if (label == "not found") { label = ""; } @@ -88,13 +90,16 @@ GetListCountCommand::GetListCountCommand(string option) { void GetListCountCommand::help(){ try { - m->mothurOut("The get.listcount command can only be executed after a successful read.otu command of a listfile or providing a list file using the list parameter.\n"); - m->mothurOut("The get.listcount command parameters are list and label. No parameters are required.\n"); + m->mothurOut("The get.otulist command can only be executed after a successful read.otu command of a listfile or providing a list file using the list parameter.\n"); + m->mothurOut("The get.otulist command parameters are list, sort and label. No parameters are required.\n"); m->mothurOut("The label parameter allows you to select what distance levels you would like a output files created for, and are separated by dashes.\n"); - m->mothurOut("The get.listcount command should be in the following format: get.listcount(list=yourlistFile, label=yourLabels).\n"); - m->mothurOut("Example get.listcount(list=amazon.fn.list, label=0.10).\n"); + m->mothurOut("The sort parameter allows you to select how you want the output displayed. Options are otu and name.\n"); + m->mothurOut("If otu is selected the output will be otu number followed by the list of names in that otu.\n"); + m->mothurOut("If name is selected the output will be a sequence name followed by its otu number.\n"); + m->mothurOut("The get.otulist command should be in the following format: get.otulist(list=yourlistFile, label=yourLabels).\n"); + m->mothurOut("Example get.otulist(list=amazon.fn.list, label=0.10).\n"); m->mothurOut("The default value for label is all lines in your inputfile.\n"); - m->mothurOut("The get.listcount command outputs a .otu file for each distance you specify listing the bin number and the names of the sequences in that bin.\n"); + m->mothurOut("The get.otulist command outputs a .otu file for each distance you specify listing the bin number and the names of the sequences in that bin.\n"); m->mothurOut("Note: No spaces between parameter labels (i.e. list), '=' and parameters (i.e.yourListFile).\n\n"); } catch(exception& e) { @@ -239,7 +244,7 @@ int GetListCountCommand::execute(){ //return 1 if error, 0 otherwise void GetListCountCommand::process(ListVector* list) { try { - string binnames, name, sequence; + string binnames; if (outputDir == "") { outputDir += hasPath(listfile); } string outputFileName = outputDir + getRootName(getSimpleName(listfile)) + list->getLabel() + ".otu"; openOutputFile(outputFileName, out); @@ -252,7 +257,17 @@ void GetListCountCommand::process(ListVector* list) { if (m->control_pressed) { break; } binnames = list->get(i); - out << i+1 << '\t' << binnames << endl; + + if (sort == "otu") { + out << i+1 << '\t' << binnames << endl; + }else{ //sort = name + vector names; + splitAtComma(binnames, names); + + for (int j = 0; j < names.size(); j++) { + out << names[j] << '\t' << i+1 << endl; + } + } } out.close(); diff --git a/getlistcountcommand.h b/getlistcountcommand.h index 196d245..e238cf5 100644 --- a/getlistcountcommand.h +++ b/getlistcountcommand.h @@ -34,7 +34,7 @@ private: bool abort, allLines; set labels; //holds labels to be used - string label, listfile, outputDir; + string label, listfile, outputDir, sort; ofstream out; vector outputNames; -- 2.39.2