m->openOutputFile(outputFileName, out);
outputNames.push_back(outputFileName); outputTypes["summary"].push_back(outputFileName);
out.setf(ios::fixed, ios::floatfield); out.setf(ios::showpoint);
- out << "metric\tlabel\tScore\tpValue\n";
+ out << "metric\tlabel\tScore\tzScore\tstandardDeviation\n";
//as long as you are not at the end of the file or done wih the lines you want
while((lookup[0] != NULL) && ((allLines == 1) || (userLabels.size() != 0))) {
int CooccurrenceCommand::getCooccurrence(vector<SharedRAbundVector*>& thisLookUp, ofstream& out){
try {
int numOTUS = thisLookUp[0]->getNumBins();
+
+ if(numOTUS < 2) {
+ m->mothurOut("Not enough OTUs for co-occurrence analysis, skipping"); m->mothurOutEndLine();
+ return 0;
+ }
+
vector< vector<int> > co_matrix; co_matrix.resize(thisLookUp[0]->getNumBins());
for (int i = 0; i < thisLookUp[0]->getNumBins(); i++) { co_matrix[i].resize((thisLookUp.size()), 0); }
vector<int> columntotal; columntotal.resize(thisLookUp.size(), 0);
m->mothurOutEndLine(); m->mothurOut("average metric score: " + toString(nullMean)); m->mothurOutEndLine();
+ //calc_p_value is not a statistical p-value, it's just the average that are either > or < the initscore.
+ //All it does is show what is expected in a competitively structured community
+ //zscore is output so p-value can be looked up in a ztable
double pvalue = 0.0;
if (metric == "cscore" || metric == "checker") { pvalue = trial.calc_pvalue_greaterthan (stats, initscore); }
else{ pvalue = trial.calc_pvalue_lessthan (stats, initscore); }
+
+ double sd = trial.getSD(runs, stats, nullMean);
+
+ double zscore = trial.get_zscore(sd, nullMean, initscore);
- m->mothurOut("pvalue: " + toString(pvalue)); m->mothurOutEndLine();
- out << metric << '\t' << thisLookUp[0]->getLabel() << '\t' << nullMean << '\t' << pvalue << endl;
+ m->mothurOut("zscore: " + toString(zscore)); m->mothurOutEndLine();
+ m->mothurOut("standard deviation: " + toString(sd)); m->mothurOutEndLine();
+ out << metric << '\t' << thisLookUp[0]->getLabel() << '\t' << nullMean << '\t' << zscore '\t' << sd << endl;
return 0;
}
}
}
/**************************************************************************************************/
+double TrialSwap2::getSD (int runs, vector<double> scorevec, double nullMean)
+{
+ try{
+ double sum = 0;
+ for(int i=0;i<runs;i++)
+ {
+ if (m->control_pressed) { return 0; }
+ sum += pow((scorevec[i] - nullMean),2);
+ }
+ return sqrt( (1/double(runs)) * sum );
+ }
+ catch(exception& e) {
+ m->errorOut(e, "TrialSwap2", "getSD");
+ exit(1);
+ }
+}
+/**************************************************************************************************/
+double TrialSwap2::get_zscore (double sd, double nullMean, double initscore)
+{
+ try {
+ return (initscore - nullMean) / sd;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "TrialSwap2", "get_zscore");
+ exit(1);
+ }
+}
+/**************************************************************************************************/
int TrialSwap2::print_matrix(vector<vector<int> > &matrix, int nrows, int ncols)
{
try {
double calc_vratio (int, int, vector<int>, vector<int>);
int calc_checker (vector<vector<int> > &, vector<int>, int, int);
double calc_c_score (vector<vector<int> > &, vector<int>, int, int);
+ double get_zscore (double, double, double);
+ double getSD (int, vector<double>, double);
private:
int print_matrix(vector<vector<int> > &, int, int);
-
+
};
#endif