X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=matrixoutputcommand.cpp;h=87929a4d9f8d8c91998e6e9d9760a22c67c60df0;hb=2009a1a1f47e7467094d844e7c07ab8ddf7bb447;hp=73c38f7ca3b06cd5b38b45b070beb2c8fd2f0a8b;hpb=91a27e0483827c06c21c4fe89558923bbfe86573;p=mothur.git diff --git a/matrixoutputcommand.cpp b/matrixoutputcommand.cpp index 73c38f7..87929a4 100644 --- a/matrixoutputcommand.cpp +++ b/matrixoutputcommand.cpp @@ -65,7 +65,6 @@ MatrixOutputCommand::MatrixOutputCommand(){ setParameters(); vector tempOutNames; outputTypes["phylip"] = tempOutNames; - outputTypes["subsample"] = tempOutNames; } catch(exception& e) { m->errorOut(e, "MatrixOutputCommand", "MatrixOutputCommand"); @@ -100,7 +99,6 @@ MatrixOutputCommand::MatrixOutputCommand(string option) { //initialize outputTypes vector tempOutNames; outputTypes["phylip"] = tempOutNames; - outputTypes["subsample"] = tempOutNames; //if the user changes the input directory command factory will send this info to us in the output parameter string inputDir = validParameter.validFile(parameters, "inputdir", false); @@ -300,13 +298,6 @@ int MatrixOutputCommand::execute(){ set userLabels = labels; if (lookup.size() < 2) { m->mothurOut("You have not provided enough valid groups. I cannot run the command."); m->mothurOutEndLine(); delete input; for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } return 0;} - - numGroups = lookup.size(); - lines.resize(processors); - for (int i = 0; i < processors; i++) { - lines[i].start = int (sqrt(float(i)/float(processors)) * numGroups); - lines[i].end = int (sqrt(float(i+1)/float(processors)) * numGroups); - } if (subsample) { if (subsampleSize == -1) { //user has not set size, set size = smallest samples size @@ -332,8 +323,17 @@ int MatrixOutputCommand::execute(){ lookup = temp; m->setGroups(Groups); } + + if (lookup.size() < 2) { m->mothurOut("You have not provided enough valid groups. I cannot run the command."); m->mothurOutEndLine(); m->control_pressed = true; delete input; return 0; } } - + + numGroups = lookup.size(); + lines.resize(processors); + for (int i = 0; i < processors; i++) { + lines[i].start = int (sqrt(float(i)/float(processors)) * numGroups); + lines[i].end = int (sqrt(float(i+1)/float(processors)) * numGroups); + } + if (m->control_pressed) { delete input; for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } m->clearGroups(); return 0; } //as long as you are not at the end of the file or done wih the lines you want @@ -434,18 +434,18 @@ void MatrixOutputCommand::printSims(ostream& out, vector< vector >& simM out << simMatrix.size() << endl; if (output == "lt") { - for (int m = 0; m < simMatrix.size(); m++) { - out << lookup[m]->getGroup() << '\t'; - for (int n = 0; n < m; n++) { - out << simMatrix[m][n] << '\t'; + for (int b = 0; b < simMatrix.size(); b++) { + out << lookup[b]->getGroup() << '\t'; + for (int n = 0; n < b; n++) { + out << simMatrix[b][n] << '\t'; } out << endl; } }else{ - for (int m = 0; m < simMatrix.size(); m++) { - out << lookup[m]->getGroup() << '\t'; - for (int n = 0; n < simMatrix[m].size(); n++) { - out << simMatrix[m][n] << '\t'; + for (int b = 0; b < simMatrix.size(); m++) { + out << lookup[b]->getGroup() << '\t'; + for (int n = 0; n < simMatrix[b].size(); n++) { + out << simMatrix[b][n] << '\t'; } out << endl; } @@ -459,10 +459,7 @@ void MatrixOutputCommand::printSims(ostream& out, vector< vector >& simM /***********************************************************/ int MatrixOutputCommand::process(vector thisLookup){ try { - EstOutput data; - vector subset; vector< vector< vector > > calcDistsTotals; //each iter, one for each calc, then each groupCombos dists. this will be used to make .dist files - vector< vector > calcDists; calcDists.resize(matrixCalculators.size()); for (int thisIter = 0; thisIter < iters; thisIter++) {