X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=cooccurrencecommand.cpp;h=75b87fae4303f161a1f75fb632e831672a80e29d;hb=f67ace597e7147f3ca35201e3623abe6440a9d24;hp=f9db5be5691f424f70874f0f318b968c186df7bb;hpb=a3e570dffa9ccc939a170e5cff1285d5b266b4cc;p=mothur.git diff --git a/cooccurrencecommand.cpp b/cooccurrencecommand.cpp index f9db5be..75b87fa 100644 --- a/cooccurrencecommand.cpp +++ b/cooccurrencecommand.cpp @@ -277,8 +277,8 @@ int CooccurrenceCommand::getCooccurrence(vector& thisLookUp vector columntotal; columntotal.resize(thisLookUp.size(), 0); vector rowtotal; rowtotal.resize(numOTUS, 0); - for (int i = 0; i < thisLookUp.size(); i++) { - for (int j = 0; j < thisLookUp[i]->getNumBins(); j++) { + for (int i = 0; i < thisLookUp.size(); i++) { //nrows in the shared file + for (int j = 0; j < thisLookUp[i]->getNumBins(); j++) { //cols of original shared file if (m->control_pressed) { return 0; } int abund = thisLookUp[i]->getAbundance(j); @@ -296,8 +296,6 @@ int CooccurrenceCommand::getCooccurrence(vector& thisLookUp int ncols = thisLookUp.size();//groups double initscore = 0.0; - vector columntotal; columntotal.resize(ncols, 0); - vector rowtotal; rowtotal.resize(nrows, 0); vector stats; double probabilityMatrix[ncols * nrows]; vector > nullmatrix(nrows, vector(ncols, 0)); @@ -319,15 +317,16 @@ int CooccurrenceCommand::getCooccurrence(vector& thisLookUp } } } - else if (matrix == "sim2") { - for(int i=0;i& thisLookUp } } } - else if (matrix == "sim9") { } + else if (matrix == "sim9" || matrix == "sim2") { } else { m->mothurOut("[ERROR]: No model selected! \n"); m->control_pressed = true; @@ -406,79 +405,14 @@ int CooccurrenceCommand::getCooccurrence(vector& thisLookUp double current; double randnum; int count; - - //burn-in - for(int i=0;i<10000;i++){ - nullmatrix.clear(); - //zero-fill the null matrix - nullmatrix.assign(nrows, vector(ncols, 0)); - - if(matrix == "sim1" || matrix == "sim6" || matrix == "sim8" || matrix == "sim7") { - count = 0; - while(count < n) { - nextnum: - previous = 0.0; - randnum = rand() / double(RAND_MAX); - for(int i=0;i previous) { - nullmatrix[i][j] = 1; - count++; - if (count > n) break; - else - goto nextnum; - } - previous = current; - } - } - } - } - - else if(matrix == "sim2" || matrix == "sim4") { - for(int i=0;i previous && nullmatrix[i][j] != 1) { - nullmatrix[i][j] = 1; - count++; - previous = 0.0; - break; - } - previous = current; - } - } - } - } - - else if(matrix == "sim3" || matrix == "sim5") { - //columns - for(int j=0;j previous && nullmatrix[i][j] != 1) { - nullmatrix[i][j] = 1; - count++; - previous = 0.0; - break; - } - previous = current; - } - } - } - } - + + //burn-in for sim9 + if(matrix == "sim9") { + for(int i=0;i<10000;i++) trial.swap_checkerboards (co_matrix, ncols, nrows); } - + //populate null matrix from probability matrix, do this a lot. - for(int i=0;i(ncols, 0)); @@ -486,6 +420,7 @@ int CooccurrenceCommand::getCooccurrence(vector& thisLookUp if(matrix == "sim1" || matrix == "sim6" || matrix == "sim8" || matrix == "sim7") { count = 0; while(count < n) { + if (m->control_pressed) { return 0; } nextnum2: previous = 0.0; randnum = rand() / double(RAND_MAX); @@ -505,11 +440,21 @@ int CooccurrenceCommand::getCooccurrence(vector& thisLookUp } } - else if(matrix == "sim2" || matrix == "sim4") { + else if (matrix == "sim2") { + for(int i=0;icontrol_pressed) { return 0; } randnum = rand() / double(RAND_MAX); for(int j=0;j& thisLookUp for(int j=0;jcontrol_pressed) { return 0; } randnum = rand() / double(RAND_MAX); for(int i=0;i& thisLookUp //swap_checkerboards takes the original matrix and swaps checkerboards else if(matrix == "sim9") { - trial.swap_checkerboards (co_matrix, rowtotal, columntotal, ncols, nrows); + trial.swap_checkerboards (co_matrix, ncols, nrows); + nullmatrix = co_matrix; } else { m->mothurOut("[ERROR]: No null model selected!\n\n"); m->control_pressed = true;