*/
#include "command.hpp"
-#include "inputdata.h"
-#include "readotu.h"
#include "sharedrabundvector.h"
+#include "listvector.hpp"
+#include "rabundvector.hpp"
+#include "inputdata.h"
+#include "sequence.hpp"
+#include "counttable.h"
-class GlobalData;
class SubSampleCommand : public Command {
public:
SubSampleCommand(string);
SubSampleCommand();
- ~SubSampleCommand();
- vector<string> getRequiredParameters();
- vector<string> getValidParameters();
- vector<string> getRequiredFiles();
- map<string, vector<string> > getOutputFiles() { return outputTypes; }
- int execute();
- void help();
+ ~SubSampleCommand() {}
-private:
- GlobalData* globaldata;
- ReadOTUFile* read;
- InputData* input;
- vector<SharedRAbundVector*> lookup;
- ListVector* list;
- RAbundVector* rabund;
- SAbundVector* sabund;
+ vector<string> setParameters();
+ string getCommandName() { return "sub.sample"; }
+ string getCommandCategory() { return "Sequence Processing"; }
- bool abort, allLines, pickedGroups;
+ string getHelpString();
+ string getOutputPattern(string);
+ string getCitation() { return "http://www.mothur.org/wiki/Sub.sample"; }
+ string getDescription() { return "get a sampling of sequences from a list, shared, rabund, sabund or fasta file"; }
+
+ int execute();
+ void help() { m->mothurOut(getHelpString()); }
+
+private:
+ bool abort, pickedGroups, allLines, persample;
+ string listfile, groupfile, countfile, sharedfile, rabundfile, sabundfile, fastafile, namefile, taxonomyfile;
set<string> labels; //holds labels to be used
string groups, label, outputDir;
vector<string> Groups, outputNames;
- map<string, vector<string> > outputTypes;
+ int size;
+ vector<string> names;
+ map<string, vector<string> > nameMap;
+ CountTable ct;
+
+ int getSubSampleShared();
+ int getSubSampleList();
+ int getSubSampleRabund();
+ int getSubSampleSabund();
+ int getSubSampleFasta();
+ int processShared(vector<SharedRAbundVector*>&);
+ int processRabund(RAbundVector*&, ofstream&);
+ int processSabund(SAbundVector*&, ofstream&);
+ int processList(ListVector*&, ofstream&, set<string>&);
+ int getNames();
+ int readNames();
+ int getTax(set<string>&);
- int eliminateZeroOTUS(vector<SharedRAbundVector*>&);
- int getSubSampleShared(vector<SharedRAbundVector*>&, ofstream&);
};
#endif