]> git.donarmstrong.com Git - mothur.git/blobdiff - calculator.h
added concensus command and updated calcs
[mothur.git] / calculator.h
index 06c3a2425a2a56cbfce3ac3b19b83591dd288c7c..127c835e13318dbc8c0e853d510add1ddbc9c8a7 100644 (file)
@@ -3,21 +3,13 @@
 
 using namespace std;
 
-#include <vector>
-#include <cmath>
-#include <iostream>
-#include <fstream>
-#include <math.h>
-#include <string>
-#include <map>
-#include <algorithm>
-#include "utilities.hpp"
+#include "mothur.h"
 #include "sabundvector.hpp"
 #include "sharedsabundvector.h"
 #include "rabundvector.hpp"
 #include "uvest.h"
 
-/* The calculator class is the parent class for all the different estimators implemented in mothur.
+/* The calculator class is the parent class for all the different estimators implemented in mothur except the tree calculators.
 It has 2 pure functions EstOutput getValues(SAbundVector*), which works on a single group, and 
 EstOutput getValues(SharedRAbundVector* shared1, SharedRAbundVector* shared2), which compares 2 groups. */ 
 
@@ -31,17 +23,19 @@ class Calculator {
 
 public:
        Calculator(){};
-       Calculator(string n, int c) : name(n), cols(c) {};
+       Calculator(string n, int c, bool m) : name(n), cols(c), multiple(m) {};
        virtual EstOutput getValues(SAbundVector*) = 0; 
-       virtual EstOutput getValues(SharedRAbundVector* shared1, SharedRAbundVector* shared2) = 0;
+       virtual EstOutput getValues(vector<SharedRAbundVector*>) = 0;
        virtual void print(ostream& f)  { f.setf(ios::fixed, ios::floatfield); f.setf(ios::showpoint);
                                                                          f << data[0]; for(int i=1;i<data.size();i++){ f << '\t' << data[i];   }}
        virtual string getName()                {       return name;    }
        virtual int getCols()           {       return cols;    }
+       virtual bool getMultiple()  {   return multiple;   }
 protected:
        EstOutput data;
        string name;
        int cols;
+       bool multiple;
 
 };
 
@@ -54,14 +48,18 @@ class VecCalc
 {
        // The methods seen in the order here is how they are ordered throughout the class.
        public:
+               VecCalc(){};
                void printElements(vector<double>); //This prints the values of the vector on one line with a space between each value.
                void printElements(vector<string>); //This prints the values of the vector on one line with a space between each value.
                int findString(vector<string>, string);//This returns the index of the given string in the given <string> vector, if the string does not exist in the vector it returns -1.
                double mean(vector<double>); //This returns the mean value of the vector.
                double stError(vector<double>); //This returns the standard error of the vector.
+               int sumElements(vector<int>, int);
+               int sumElements(vector<int>);
                double sumElements(vector<double>); //This returns the sum of all the values in the vector.
                double sumElements(vector<double>, int); //This returns the sum of all the values in the vector excluding those whose index is before the given index.  
                double findMax(vector<double>); //This returns the maximum value in the vector.
+               int numNZ(vector<int>); //This returns the number of non-zero values in the vector.
                double numNZ(vector<double>); //This returns the number of non-zero values in the vector.
                double numPos(vector<double>); //This returns the number of positive values in the vector.
                double findMaxDiff(vector<double>, vector<double>); //This returns the absolute value of the maximum difference between the two vectors.
@@ -83,27 +81,6 @@ class VecCalc
                vector<string> getSData(char[]);//This takes a file name as a parameter and reads all of the data in the file into a <string> vector.
 };
 
-/**************************************************************************************************/
-/*This Class contains methods that return the B Diverstiy of two sets
-of data. The four methods are the Whittaker's measure, the Marczewski-Stainhaus distance,
-the Sorensen quantitative index, and the Morisita-Horn index.
-The main method takes a number of columns of data and performs all 4 methods on each
-combination of columns. It prints a table for every method that shows the B Diverstiy for 
-each combination. It also calculates the overall diversity for Whittaker's measure and 
-the Marczewski-Steinhaus distance.*/
-
-
-class BDiversity
-{
-       public:
-               void doBD(vector<double>, double);//Main method
-               double getWhitt(vector<double>,vector<double>);//Whittacker's measure
-               double getMS(vector<double>, vector<double>);//Marczewski-Stainhaus distance
-               double getSor(vector<double>, vector<double>);//Sorensen quantitative index
-               double getMor(vector<double>, vector<double>);//Morisita-Horn index
-               void printD(vector<vector<double> >, int);//This prints a table that represents the given 2D vector, the second paramter specifies which method is to be used (1 for Whitt, 2 for MS, 3 for Sor, and 4 for Mor)
-};
-
 /**************************************************************************************************/
 
 /*This Class is similar to the GeometricSeries.h class. It calculates
@@ -122,11 +99,11 @@ class BrokenStick
 It prints the D-Statistic and the critical values for the Kolmogorov-Smirnov
 1-sample test at the 95% confidence interval.*/
 
-class GeometricSeries
+/*class GeometricSeries
 {
        public:
                void doGeomTest(vector<double>);
-};
+};*/
 
 /**************************************************************************************************/
 //This Class calculates the jackknifed estimate of the data and
@@ -147,16 +124,6 @@ class KS2SampleTest
        public:
                void doKSTest(vector<double>, vector<double>);
 };
-/**************************************************************************************************/
-/*This Class calculates the Log Series Distribution for the data.
-It then generates a D-Statistic and prints the D-Statistic and
-the critical values for the Kolmogorov-Smirnov 1 sample test.*/
-
-class LogSD
-{
-       public:
-               void doLogSD(vector<double>, vector<double>);
-};
 
 /**************************************************************************************************/
 //This Class calculates and prints the Q-Statistic for the data.
@@ -182,6 +149,14 @@ class TDTable
                double getConfLimit(int,int);
 };
 
+/**************************************************************************************************/
+//This Class stores the table of the confidence limits of the One-Sample Kolmogorov-Smirnov Test.
+class KOSTable
+{
+       public:
+               double getConfLimit(int);
+};
+
 /**************************************************************************************************/
 /*This Class calculates the truncated lognormal for the data.
 It then prints the D-Statistic and the critical values for the