]> git.donarmstrong.com Git - mothur.git/blobdiff - metastatscommand.h
moved mothur's source into a folder to make grabbing just the source easier on github
[mothur.git] / metastatscommand.h
diff --git a/metastatscommand.h b/metastatscommand.h
deleted file mode 100644 (file)
index b4800b7..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#ifndef METASTATSCOMMAND_H
-#define METASTATSCOMMAND_H
-
-/*
- *  metastatscommand.h
- *  Mothur
- *
- *  Created by westcott on 9/16/10.
- *  Copyright 2010 Schloss Lab. All rights reserved.
- *
- */
-#include "command.hpp"
-#include "inputdata.h"
-#include "sharedrabundvector.h"
-#include "mothurmetastats.h"
-
-class MetaStatsCommand : public Command {
-
-public:
-       MetaStatsCommand(string);
-       MetaStatsCommand();
-       ~MetaStatsCommand() {}
-       
-       vector<string> setParameters();
-       string getCommandName()                 { return "metastats";                           }
-       string getCommandCategory()             { return "OTU-Based Approaches";        }
-       string getHelpString(); 
-       string getCitation() { return "White JR, Nagarajan N, Pop M (2009). Statistical methods for detecting differentially abundant features in clinical metagenomic samples. PLoS Comput Biol 5: e1000352. \nhttp://www.mothur.org/wiki/Metastats"; }
-       string getDescription()         { return "detects differentially abundant features in clinical metagenomic samples"; }
-
-       int execute(); 
-       void help() { m->mothurOut(getHelpString()); }  
-       
-private:
-       struct linePair {
-               int start;
-               int num;
-               linePair(int i, int j) : start(i), num(j) {}
-       };
-       vector<linePair> lines;
-       
-       GroupMap* designMap;
-       InputData* input;
-       vector<SharedRAbundVector*> lookup;
-               
-       bool abort, allLines, pickedGroups;
-       set<string> labels; //holds labels to be used
-       string groups, label, outputDir, inputDir, designfile, sets, sharedfile;
-       vector<string> Groups, outputNames, Sets;
-       vector< vector<string> > namesOfGroupCombos;
-       int iters, processors;
-       float threshold;
-       
-       int process(vector<SharedRAbundVector*>&);
-       int driver(int, int, vector<SharedRAbundVector*>&);
-};
-
-/**************************************************************************************************/
-//custom data structure for threads to use.
-// This is passed by void pointer so it can be any data type
-// that can be passed using a single void pointer (LPVOID).
-struct metastatsData {
-    vector<SharedRAbundVector*> thisLookUp;
-    vector< vector<string> > namesOfGroupCombos;
-    vector<string> designMapGroups;
-    vector<string> outputNames;
-       int start;
-       int num, iters;
-       float threshold;
-       MothurOut* m;
-       string sharedfile;
-    string outputDir;
-       
-       metastatsData(){}
-       metastatsData(string sf, string oDir, MothurOut* mout, int st, int en, vector< vector<string> > ns, vector<SharedRAbundVector*> lu, vector<string> dg, int i, float thr) {
-               sharedfile = sf;
-        outputDir = oDir;
-               m = mout;
-               start = st;
-               num = en;
-        namesOfGroupCombos = ns;
-        thisLookUp = lu;
-        designMapGroups = dg;
-        iters = i;
-        threshold = thr;
-       }
-};
-/**************************************************************************************************/
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
-#else
-static DWORD WINAPI MyMetastatsThreadFunction(LPVOID lpParam){ 
-       metastatsData* pDataArray;
-       pDataArray = (metastatsData*)lpParam;
-       
-       try {
-               
-        //for each combo
-               for (int c = pDataArray->start; c < (pDataArray->start+pDataArray->num); c++) {
-                       
-                       //get set names
-                       string setA = pDataArray->namesOfGroupCombos[c][0]; 
-                       string setB = pDataArray->namesOfGroupCombos[c][1];
-            
-                       //get filename
-                       string outputFileName = pDataArray->outputDir +  pDataArray->m->getRootName(pDataArray->m->getSimpleName(pDataArray->sharedfile)) + pDataArray->thisLookUp[0]->getLabel() + "." + setA + "-" + setB + ".metastats";
-                       pDataArray->outputNames.push_back(outputFileName); 
-                       
-                       vector< vector<double> > data2; data2.resize(pDataArray->thisLookUp[0]->getNumBins());
-                       
-                       vector<SharedRAbundVector*> subset;
-                       int setACount = 0;
-                       int setBCount = 0;
-                       for (int i = 0; i < pDataArray->thisLookUp.size(); i++) {
-                               //is this group for a set we want to compare??
-                               //sorting the sets by putting setB at the back and setA in the front
-                               if (pDataArray->designMapGroups[i] == setB) {  
-                                       subset.push_back(pDataArray->thisLookUp[i]);
-                                       setBCount++;
-                               }else if (pDataArray->designMapGroups[i] == setA) {
-                                       subset.insert(subset.begin()+setACount, pDataArray->thisLookUp[i]);
-                                       setACount++;
-                               }
-                       }
-            
-                       if ((setACount == 0) || (setBCount == 0))  { 
-                               pDataArray->m->mothurOut("Missing shared info for " + setA + " or " + setB + ". Skipping comparison."); pDataArray->m->mothurOutEndLine(); 
-                               pDataArray->outputNames.pop_back();
-                       }else {
-                               //fill data
-                               for (int j = 0; j < pDataArray->thisLookUp[0]->getNumBins(); j++) {
-                                       data2[j].resize(subset.size(), 0.0);
-                                       for (int i = 0; i < subset.size(); i++) {
-                                               data2[j][i] = (subset[i]->getAbundance(j));
-                                       }
-                               }
-                               
-                               pDataArray->m->mothurOut("Comparing " + setA + " and " + setB + "..."); pDataArray->m->mothurOutEndLine(); 
-                               
-                               pDataArray->m->mothurOutEndLine();
-                               MothurMetastats mothurMeta(pDataArray->threshold, pDataArray->iters);
-                               mothurMeta.runMetastats(outputFileName, data2, setACount);
-                               pDataArray->m->mothurOutEndLine();
-                               pDataArray->m->mothurOutEndLine(); 
-                       }
-        }
-               
-               return 0;
-               
-       }
-       catch(exception& e) {
-               pDataArray->m->errorOut(e, "MetaStatsCommand", "MyMetastatsThreadFunction");
-               exit(1);
-       }
-} 
-#endif
-
-
-
-#endif
-