]> git.donarmstrong.com Git - mothur.git/blobdiff - metastatscommand.cpp
fixes while testing 1.33.0
[mothur.git] / metastatscommand.cpp
index 33b559fc2dc358017c90fd44fe77ec0be61acb65..de03dab2a147174384d3e3ffce329c1e16fa07f5 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "metastatscommand.h"
 #include "sharedutilities.h"
+#include "sharedrabundfloatvector.h"
 
 
 //**********************************************************************************************************************
@@ -213,7 +214,7 @@ MetaStatsCommand::MetaStatsCommand(string option) {
 int MetaStatsCommand::execute(){
        try {
        
-               if (abort == true) { if (calledHelp) { return 0; }  return 2;   }
+        if (abort == true) { if (calledHelp) { return 0; }  return 2;  }
         
         //just used to convert files to test metastats online
         /****************************************************/
@@ -221,7 +222,6 @@ int MetaStatsCommand::execute(){
         convertSharedToInput = false;
         if (convertInputToShared) { convertToShared(sharedfile); return 0; }
         /****************************************************/
-        
                
                designMap = new GroupMap(designfile);
                designMap->readDesignMap();
@@ -256,15 +256,14 @@ int MetaStatsCommand::execute(){
                else if (numGroups < 2) { m->mothurOut("Not enough sets, I need at least 2 valid sets. Unable to complete command."); m->mothurOutEndLine(); m->control_pressed = true; }
 
         if(processors != 1){
-            int numPairs = namesOfGroupCombos.size();
-            int numPairsPerProcessor = numPairs / processors;
-                       
-            for (int i = 0; i < processors; i++) {
-                int startPos = i * numPairsPerProcessor;
-                if(i == processors - 1){
-                    numPairsPerProcessor = numPairs - i * numPairsPerProcessor;
-                }
-                lines.push_back(linePair(startPos, numPairsPerProcessor));
+            int remainingPairs = namesOfGroupCombos.size();
+            int startIndex = 0;
+            for (int remainingProcessors = processors; remainingProcessors > 0; remainingProcessors--) {
+                int numPairs = remainingPairs; //case for last processor
+                if (remainingProcessors != 1) { numPairs = ceil(remainingPairs / remainingProcessors); }
+                lines.push_back(linePair(startIndex, numPairs)); //startIndex, numPairs
+                startIndex = startIndex + numPairs;
+                remainingPairs = remainingPairs - numPairs;
             }
         }
                
@@ -574,9 +573,11 @@ int MetaStatsCommand::convertToShared(string filename) {
         string header = m->getline(in); m->gobble(in);
         
         vector<string> groups = m->splitWhiteSpace(header);
-        vector<SharedRAbundVector*> newLookup;
+        vector<SharedRAbundFloatVector*> newLookup;
+        cout << groups.size() << endl;
         for (int i = 0; i < groups.size(); i++) {
-            SharedRAbundVector* temp = new SharedRAbundVector();
+            cout << "creating group " << groups[i] << endl;
+            SharedRAbundFloatVector* temp = new SharedRAbundFloatVector();
             temp->setLabel("0.03");
             temp->setGroup(groups[i]);
             newLookup.push_back(temp);
@@ -589,9 +590,9 @@ int MetaStatsCommand::convertToShared(string filename) {
             string otuname;
             in >> otuname; m->gobble(in);
             otuCount++;
-            
+            cout << otuname << endl;
             for (int i = 0; i < groups.size(); i++) {
-                int temp;
+                double temp;
                 in >> temp; m->gobble(in);
                 newLookup[i]->push_back(temp, groups[i]);
             }
@@ -654,6 +655,8 @@ int MetaStatsCommand::convertToInput(vector<SharedRAbundVector*>& subset, string
         }
         out.close();
         
+        cout << thisfilename+".matrix" << endl;
+        
         return 0;
     }
        catch(exception& e) {