]> git.donarmstrong.com Git - mothur.git/blobdiff - collectsharedcommand.cpp
bug fixes
[mothur.git] / collectsharedcommand.cpp
index 40b911bb8c844ad252a714383ce93109772209a0..21695e328c90590572a9efebc7caf562c2525c75 100644 (file)
 #include "sharedbraycurtis.h"
 #include "sharedjackknife.h"
 #include "whittaker.h"
-
-
+#include "odum.h"
+#include "canberra.h"
+#include "structeuclidean.h"
+#include "structchord.h"
+#include "hellinger.h"
+#include "manhattan.h"
+#include "structpearson.h"
+#include "soergel.h"
+#include "spearman.h"
+#include "structkulczynski.h"
+#include "structchi2.h"
+#include "speciesprofile.h"
+#include "hamming.h"
+#include "gower.h"
+#include "memchi2.h"
+#include "memchord.h"
+#include "memeuclidean.h"
+#include "mempearson.h"
 
 //**********************************************************************************************************************
-
+vector<string> CollectSharedCommand::getValidParameters(){     
+       try {
+               string AlignArray[] =  {"freq","label","calc","groups","all","outputdir","inputdir"};
+               vector<string> myArray (AlignArray, AlignArray+(sizeof(AlignArray)/sizeof(string)));
+               return myArray;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "CollectSharedCommand", "getValidParameters");
+               exit(1);
+       }
+}
+//**********************************************************************************************************************
+vector<string> CollectSharedCommand::getRequiredParameters(){  
+       try {
+               vector<string> myArray;
+               return myArray;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "CollectSharedCommand", "getRequiredParameters");
+               exit(1);
+       }
+}
+//**********************************************************************************************************************
+vector<string> CollectSharedCommand::getRequiredFiles(){       
+       try {
+               string AlignArray[] =  {"shared"};
+               vector<string> myArray (AlignArray, AlignArray+(sizeof(AlignArray)/sizeof(string)));
+               return myArray;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "CollectSharedCommand", "getRequiredFiles");
+               exit(1);
+       }
+}
+//**********************************************************************************************************************
+CollectSharedCommand::CollectSharedCommand(){  
+       try {
+               abort = true; calledHelp = true; 
+               vector<string> tempOutNames;
+               outputTypes["sharedchao"] = tempOutNames;
+               outputTypes["sharedsobs"] = tempOutNames;
+               outputTypes["sharedace"] = tempOutNames;
+               outputTypes["jabund"] = tempOutNames;
+               outputTypes["sorabund"] = tempOutNames;
+               outputTypes["jclass"] = tempOutNames;
+               outputTypes["sorclass"] = tempOutNames;
+               outputTypes["jest"] = tempOutNames;
+               outputTypes["sorest"] = tempOutNames;
+               outputTypes["thetayc"] = tempOutNames;
+               outputTypes["thetan"] = tempOutNames;
+               outputTypes["kstest"] = tempOutNames;
+               outputTypes["whittaker"] = tempOutNames;
+               outputTypes["sharednseqs"] = tempOutNames;
+               outputTypes["ochiai"] = tempOutNames;
+               outputTypes["anderberg"] = tempOutNames;
+               outputTypes["skulczynski"] = tempOutNames;
+               outputTypes["kulczynskicody"] = tempOutNames;
+               outputTypes["lennon"] = tempOutNames;
+               outputTypes["morisitahorn"] = tempOutNames;
+               outputTypes["braycurtis"] = tempOutNames;
+               outputTypes["odum"] = tempOutNames;
+               outputTypes["canberra"] = tempOutNames;
+               outputTypes["structeuclidean"] = tempOutNames;
+               outputTypes["structchord"] = tempOutNames;
+               outputTypes["hellinger"] = tempOutNames;
+               outputTypes["manhattan"] = tempOutNames;
+               outputTypes["structpearson"] = tempOutNames;
+               outputTypes["soergel"] = tempOutNames;
+               outputTypes["spearman"] = tempOutNames;
+               outputTypes["structkulczynski"] = tempOutNames;
+               outputTypes["structchi2"] = tempOutNames;
+               outputTypes["speciesprofile"] = tempOutNames;
+               outputTypes["hamming"] = tempOutNames;
+               outputTypes["gower"] = tempOutNames;
+               outputTypes["memchi2"] = tempOutNames;
+               outputTypes["memchord"] = tempOutNames;
+               outputTypes["memeuclidean"] = tempOutNames;
+               outputTypes["mempearson"] = tempOutNames;
+               
+       }
+       catch(exception& e) {
+               m->errorOut(e, "CollectSharedCommand", "CollectSharedCommand");
+               exit(1);
+       }
+}
+//**********************************************************************************************************************
 CollectSharedCommand::CollectSharedCommand(string option)  {
        try {
                globaldata = GlobalData::getInstance();
-               abort = false;
+               abort = false; calledHelp = false;   
                allLines = 1;
                labels.clear();
                Estimators.clear();
                Groups.clear();
                
                //allow user to run help
-               if(option == "help") { validCalculator = new ValidCalculators(); help(); abort = true; }
+               if(option == "help") { validCalculator = new ValidCalculators(); help(); abort = true; calledHelp = true; }
                
                else {
                        //valid paramters for this command
@@ -63,6 +164,48 @@ CollectSharedCommand::CollectSharedCommand(string option)  {
                                if (validParameter.isValidParameter(it->first, myArray, it->second) != true) {  abort = true;  }
                        }
                        
+                       //initialize outputTypes
+                       vector<string> tempOutNames;
+                       outputTypes["sharedchao"] = tempOutNames;
+                       outputTypes["sharedsobs"] = tempOutNames;
+                       outputTypes["sharedace"] = tempOutNames;
+                       outputTypes["jabund"] = tempOutNames;
+                       outputTypes["sorabund"] = tempOutNames;
+                       outputTypes["jclass"] = tempOutNames;
+                       outputTypes["sorclass"] = tempOutNames;
+                       outputTypes["jest"] = tempOutNames;
+                       outputTypes["sorest"] = tempOutNames;
+                       outputTypes["thetayc"] = tempOutNames;
+                       outputTypes["thetan"] = tempOutNames;
+                       outputTypes["kstest"] = tempOutNames;
+                       outputTypes["whittaker"] = tempOutNames;
+                       outputTypes["sharednseqs"] = tempOutNames;
+                       outputTypes["ochiai"] = tempOutNames;
+                       outputTypes["anderberg"] = tempOutNames;
+                       outputTypes["skulczynski"] = tempOutNames;
+                       outputTypes["kulczynskicody"] = tempOutNames;
+                       outputTypes["lennon"] = tempOutNames;
+                       outputTypes["morisitahorn"] = tempOutNames;
+                       outputTypes["braycurtis"] = tempOutNames;
+                       outputTypes["odum"] = tempOutNames;
+                       outputTypes["canberra"] = tempOutNames;
+                       outputTypes["structeuclidean"] = tempOutNames;
+                       outputTypes["structchord"] = tempOutNames;
+                       outputTypes["hellinger"] = tempOutNames;
+                       outputTypes["manhattan"] = tempOutNames;
+                       outputTypes["structpearson"] = tempOutNames;
+                       outputTypes["soergel"] = tempOutNames;
+                       outputTypes["spearman"] = tempOutNames;
+                       outputTypes["structkulczynski"] = tempOutNames;
+                       outputTypes["speciesprofile"] = tempOutNames;
+                       outputTypes["structchi2"] = tempOutNames;
+                       outputTypes["hamming"] = tempOutNames;
+                       outputTypes["gower"] = tempOutNames;
+                       outputTypes["memchi2"] = tempOutNames;
+                       outputTypes["memchord"] = tempOutNames;
+                       outputTypes["memeuclidean"] = tempOutNames;
+                       outputTypes["mempearson"] = tempOutNames;
+                       
                        //if the user changes the output directory command factory will send this info to us in the output parameter 
                        outputDir = validParameter.validFile(parameters, "outputdir", false);           if (outputDir == "not found"){  outputDir = "";         }
                        
@@ -79,7 +222,7 @@ CollectSharedCommand::CollectSharedCommand(string option)  {
                        label = validParameter.validFile(parameters, "label", false);                   
                        if (label == "not found") { label = ""; }
                        else { 
-                               if(label != "all") {  splitAtDash(label, labels);  allLines = 0;  }
+                               if(label != "all") {  m->splitAtDash(label, labels);  allLines = 0;  }
                                else { allLines = 1;  }
                        }
                        
@@ -94,12 +237,12 @@ CollectSharedCommand::CollectSharedCommand(string option)  {
                        else { 
                                 if (calc == "default")  {  calc = "sharedsobs-sharedchao-sharedace-jabund-sorabund-jclass-sorclass-jest-sorest-thetayc-thetan";  }
                        }
-                       splitAtDash(calc, Estimators);
+                       m->splitAtDash(calc, Estimators);
                        
                        groups = validParameter.validFile(parameters, "groups", false);                 
                        if (groups == "not found") { groups = ""; }
                        else { 
-                               splitAtDash(groups, Groups);
+                               m->splitAtDash(groups, Groups);
                        }
                        globaldata->Groups = Groups;
                        
@@ -108,12 +251,12 @@ CollectSharedCommand::CollectSharedCommand(string option)  {
                        convert(temp, freq); 
                        
                        temp = validParameter.validFile(parameters, "all", false);                              if (temp == "not found") { temp = "false"; }
-                       all = isTrue(temp);
+                       all = m->isTrue(temp);
                                                
                        if (abort == false) {
                                
-                               if (outputDir == "") { outputDir += hasPath(globaldata->inputFileName); }
-                               string fileNameRoot = outputDir + getRootName(getSimpleName(globaldata->inputFileName));
+                               if (outputDir == "") { outputDir += m->hasPath(globaldata->inputFileName); }
+                               string fileNameRoot = outputDir + m->getRootName(m->getSimpleName(globaldata->inputFileName));
                                format = globaldata->getFormat();
                                int i;
                                
@@ -124,68 +267,123 @@ CollectSharedCommand::CollectSharedCommand(string option)  {
                                        if (validCalculator->isValidCalculator("shared", Estimators[i]) == true) { 
                                                if (Estimators[i] == "sharedchao") { 
                                                        cDisplays.push_back(new CollectDisplay(new SharedChao1(), new SharedOneColumnFile(fileNameRoot+"shared.chao")));
-                                                       outputNames.push_back(fileNameRoot+"shared.chao");
+                                                       outputNames.push_back(fileNameRoot+"shared.chao"); outputTypes["sharedchao"].push_back(fileNameRoot+"shared.chao");
                                                }else if (Estimators[i] == "sharedsobs") { 
                                                        cDisplays.push_back(new CollectDisplay(new SharedSobsCS(), new SharedOneColumnFile(fileNameRoot+"shared.sobs")));
-                                                       outputNames.push_back(fileNameRoot+"shared.sobs");
+                                                       outputNames.push_back(fileNameRoot+"shared.sobs"); outputTypes["sharedsobs"].push_back(fileNameRoot+"shared.sobs");
                                                }else if (Estimators[i] == "sharedace") { 
                                                        cDisplays.push_back(new CollectDisplay(new SharedAce(), new SharedOneColumnFile(fileNameRoot+"shared.ace")));
-                                                       outputNames.push_back(fileNameRoot+"shared.ace");
+                                                       outputNames.push_back(fileNameRoot+"shared.ace"); outputTypes["sharedace"].push_back(fileNameRoot+"shared.ace");
                                                }else if (Estimators[i] == "jabund") {  
                                                        cDisplays.push_back(new CollectDisplay(new JAbund(), new SharedOneColumnFile(fileNameRoot+"jabund")));
-                                                       outputNames.push_back(fileNameRoot+"jabund");
+                                                       outputNames.push_back(fileNameRoot+"jabund"); outputTypes["jabund"].push_back(fileNameRoot+"jabund");
                                                }else if (Estimators[i] == "sorabund") { 
                                                        cDisplays.push_back(new CollectDisplay(new SorAbund(), new SharedOneColumnFile(fileNameRoot+"sorabund")));
-                                                       outputNames.push_back(fileNameRoot+"sorabund");
+                                                       outputNames.push_back(fileNameRoot+"sorabund"); outputTypes["sorabund"].push_back(fileNameRoot+"sorabund");
                                                }else if (Estimators[i] == "jclass") { 
                                                        cDisplays.push_back(new CollectDisplay(new Jclass(), new SharedOneColumnFile(fileNameRoot+"jclass")));
-                                                       outputNames.push_back(fileNameRoot+"jclass");
+                                                       outputNames.push_back(fileNameRoot+"jclass"); outputTypes["jclass"].push_back(fileNameRoot+"jclass");
                                                }else if (Estimators[i] == "sorclass") { 
                                                        cDisplays.push_back(new CollectDisplay(new SorClass(), new SharedOneColumnFile(fileNameRoot+"sorclass")));
-                                                       outputNames.push_back(fileNameRoot+"sorclass");
+                                                       outputNames.push_back(fileNameRoot+"sorclass"); outputTypes["sorclass"].push_back(fileNameRoot+"sorclass");
                                                }else if (Estimators[i] == "jest") { 
                                                        cDisplays.push_back(new CollectDisplay(new Jest(), new SharedOneColumnFile(fileNameRoot+"jest")));
-                                                       outputNames.push_back(fileNameRoot+"jest");
+                                                       outputNames.push_back(fileNameRoot+"jest"); outputTypes["jest"].push_back(fileNameRoot+"jest");
                                                }else if (Estimators[i] == "sorest") { 
                                                        cDisplays.push_back(new CollectDisplay(new SorEst(), new SharedOneColumnFile(fileNameRoot+"sorest")));
-                                                       outputNames.push_back(fileNameRoot+"sorest");
+                                                       outputNames.push_back(fileNameRoot+"sorest"); outputTypes["sorest"].push_back(fileNameRoot+"sorest");
                                                }else if (Estimators[i] == "thetayc") { 
                                                        cDisplays.push_back(new CollectDisplay(new ThetaYC(), new SharedOneColumnFile(fileNameRoot+"thetayc")));
-                                                       outputNames.push_back(fileNameRoot+"thetayc");
+                                                       outputNames.push_back(fileNameRoot+"thetayc"); outputTypes["thetayc"].push_back(fileNameRoot+"thetayc");
                                                }else if (Estimators[i] == "thetan") { 
                                                        cDisplays.push_back(new CollectDisplay(new ThetaN(), new SharedOneColumnFile(fileNameRoot+"thetan")));
-                                                       outputNames.push_back(fileNameRoot+"thetan");
+                                                       outputNames.push_back(fileNameRoot+"thetan"); outputTypes["thetan"].push_back(fileNameRoot+"thetan");
                                                }else if (Estimators[i] == "kstest") { 
                                                        cDisplays.push_back(new CollectDisplay(new KSTest(), new SharedOneColumnFile(fileNameRoot+"kstest")));
-                                                       outputNames.push_back(fileNameRoot+"kstest");
+                                                       outputNames.push_back(fileNameRoot+"kstest"); outputTypes["kstest"].push_back(fileNameRoot+"kstest");
                                                }else if (Estimators[i] == "whittaker") { 
                                                        cDisplays.push_back(new CollectDisplay(new Whittaker(), new SharedOneColumnFile(fileNameRoot+"whittaker")));
-                                                       outputNames.push_back(fileNameRoot+"whittaker");
+                                                       outputNames.push_back(fileNameRoot+"whittaker"); outputTypes["whittaker"].push_back(fileNameRoot+"whittaker");
                                                }else if (Estimators[i] == "sharednseqs") { 
                                                        cDisplays.push_back(new CollectDisplay(new SharedNSeqs(), new SharedOneColumnFile(fileNameRoot+"shared.nseqs")));
-                                                       outputNames.push_back(fileNameRoot+"shared.nseqs");
+                                                       outputNames.push_back(fileNameRoot+"shared.nseqs"); outputTypes["shared.nseqs"].push_back(fileNameRoot+"shared.nseqs");
                                                }else if (Estimators[i] == "ochiai") { 
                                                        cDisplays.push_back(new CollectDisplay(new Ochiai(), new SharedOneColumnFile(fileNameRoot+"ochiai")));
-                                                       outputNames.push_back(fileNameRoot+"ochiai");
+                                                       outputNames.push_back(fileNameRoot+"ochiai"); outputTypes["ochiai"].push_back(fileNameRoot+"ochiai");
                                                }else if (Estimators[i] == "anderberg") { 
                                                        cDisplays.push_back(new CollectDisplay(new Anderberg(), new SharedOneColumnFile(fileNameRoot+"anderberg")));
-                                                       outputNames.push_back(fileNameRoot+"anderberg");
+                                                       outputNames.push_back(fileNameRoot+"anderberg"); outputTypes["anderberg"].push_back(fileNameRoot+"anderberg");
                                                }else if (Estimators[i] == "skulczynski") { 
                                                        cDisplays.push_back(new CollectDisplay(new Kulczynski(), new SharedOneColumnFile(fileNameRoot+"kulczynski")));
-                                                       outputNames.push_back(fileNameRoot+"kulczynski");
+                                                       outputNames.push_back(fileNameRoot+"kulczynski"); outputTypes["kulczynski"].push_back(fileNameRoot+"kulczynski");
                                                }else if (Estimators[i] == "kulczynskicody") { 
                                                        cDisplays.push_back(new CollectDisplay(new KulczynskiCody(), new SharedOneColumnFile(fileNameRoot+"kulczynskicody")));
-                                                       outputNames.push_back(fileNameRoot+"kulczynskicody");
+                                                       outputNames.push_back(fileNameRoot+"kulczynskicody"); outputTypes["kulczynskicody"].push_back(fileNameRoot+"kulczynskicody");
                                                }else if (Estimators[i] == "lennon") { 
                                                        cDisplays.push_back(new CollectDisplay(new Lennon(), new SharedOneColumnFile(fileNameRoot+"lennon")));
-                                                       outputNames.push_back(fileNameRoot+"lennon");
+                                                       outputNames.push_back(fileNameRoot+"lennon"); outputTypes["lennon"].push_back(fileNameRoot+"lennon");
                                                }else if (Estimators[i] == "morisitahorn") { 
                                                        cDisplays.push_back(new CollectDisplay(new MorHorn(), new SharedOneColumnFile(fileNameRoot+"morisitahorn")));
-                                                       outputNames.push_back(fileNameRoot+"morisitahorn");
+                                                       outputNames.push_back(fileNameRoot+"morisitahorn"); outputTypes["morisitahorn"].push_back(fileNameRoot+"morisitahorn");
                                                }else if (Estimators[i] == "braycurtis") { 
                                                        cDisplays.push_back(new CollectDisplay(new BrayCurtis(), new SharedOneColumnFile(fileNameRoot+"braycurtis")));
-                                                       outputNames.push_back(fileNameRoot+"braycurtis");
+                                                       outputNames.push_back(fileNameRoot+"braycurtis"); outputTypes["braycurtis"].push_back(fileNameRoot+"braycurtis");
+                                               }else if (Estimators[i] == "odum") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Odum(), new SharedOneColumnFile(fileNameRoot+"odum")));
+                                                       outputNames.push_back(fileNameRoot+"odum"); outputTypes["odum"].push_back(fileNameRoot+"odum");
+                                               }else if (Estimators[i] == "canberra") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Canberra(), new SharedOneColumnFile(fileNameRoot+"canberra")));
+                                                       outputNames.push_back(fileNameRoot+"canberra"); outputTypes["canberra"].push_back(fileNameRoot+"canberra");
+                                               }else if (Estimators[i] == "structeuclidean") { 
+                                                       cDisplays.push_back(new CollectDisplay(new StructEuclidean(), new SharedOneColumnFile(fileNameRoot+"structeuclidean")));
+                                                       outputNames.push_back(fileNameRoot+"structeuclidean"); outputTypes["structeuclidean"].push_back(fileNameRoot+"structeuclidean");
+                                               }else if (Estimators[i] == "structchord") { 
+                                                       cDisplays.push_back(new CollectDisplay(new StructChord(), new SharedOneColumnFile(fileNameRoot+"structchord")));
+                                                       outputNames.push_back(fileNameRoot+"structchord"); outputTypes["structchord"].push_back(fileNameRoot+"structchord");
+                                               }else if (Estimators[i] == "hellinger") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Hellinger(), new SharedOneColumnFile(fileNameRoot+"hellinger")));
+                                                       outputNames.push_back(fileNameRoot+"hellinger"); outputTypes["hellinger"].push_back(fileNameRoot+"hellinger");
+                                               }else if (Estimators[i] == "manhattan") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Manhattan(), new SharedOneColumnFile(fileNameRoot+"manhattan")));
+                                                       outputNames.push_back(fileNameRoot+"manhattan"); outputTypes["manhattan"].push_back(fileNameRoot+"manhattan");
+                                               }else if (Estimators[i] == "structpearson") { 
+                                                       cDisplays.push_back(new CollectDisplay(new StructPearson(), new SharedOneColumnFile(fileNameRoot+"structpearson")));
+                                                       outputNames.push_back(fileNameRoot+"structpearson"); outputTypes["structpearson"].push_back(fileNameRoot+"structpearson");
+                                               }else if (Estimators[i] == "soergel") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Soergel(), new SharedOneColumnFile(fileNameRoot+"soergel")));
+                                                       outputNames.push_back(fileNameRoot+"soergel"); outputTypes["soergel"].push_back(fileNameRoot+"soergel");
+                                               }else if (Estimators[i] == "spearman") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Spearman(), new SharedOneColumnFile(fileNameRoot+"spearman")));
+                                                       outputNames.push_back(fileNameRoot+"spearman"); outputTypes["spearman"].push_back(fileNameRoot+"spearman");
+                                               }else if (Estimators[i] == "structkulczynski") { 
+                                                       cDisplays.push_back(new CollectDisplay(new StructKulczynski(), new SharedOneColumnFile(fileNameRoot+"structkulczynski")));
+                                                       outputNames.push_back(fileNameRoot+"structkulczynski"); outputTypes["structkulczynski"].push_back(fileNameRoot+"structkulczynski");
+                                               }else if (Estimators[i] == "speciesprofile") { 
+                                                       cDisplays.push_back(new CollectDisplay(new SpeciesProfile(), new SharedOneColumnFile(fileNameRoot+"speciesprofile")));
+                                                       outputNames.push_back(fileNameRoot+"speciesprofile"); outputTypes["speciesprofile"].push_back(fileNameRoot+"speciesprofile");
+                                               }else if (Estimators[i] == "hamming") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Hamming(), new SharedOneColumnFile(fileNameRoot+"hamming")));
+                                                       outputNames.push_back(fileNameRoot+"hamming"); outputTypes["hamming"].push_back(fileNameRoot+"hamming");
+                                               }else if (Estimators[i] == "structchi2") { 
+                                                       cDisplays.push_back(new CollectDisplay(new StructChi2(), new SharedOneColumnFile(fileNameRoot+"structchi2")));
+                                                       outputNames.push_back(fileNameRoot+"structchi2"); outputTypes["structchi2"].push_back(fileNameRoot+"structchi2");
+                                               }else if (Estimators[i] == "gower") { 
+                                                       cDisplays.push_back(new CollectDisplay(new Gower(), new SharedOneColumnFile(fileNameRoot+"gower")));
+                                                       outputNames.push_back(fileNameRoot+"gower"); outputTypes["gower"].push_back(fileNameRoot+"gower");
+                                               }else if (Estimators[i] == "memchi2") { 
+                                                       cDisplays.push_back(new CollectDisplay(new MemChi2(), new SharedOneColumnFile(fileNameRoot+"memchi2")));
+                                                       outputNames.push_back(fileNameRoot+"memchi2"); outputTypes["memchi2"].push_back(fileNameRoot+"memchi2");
+                                               }else if (Estimators[i] == "memchord") { 
+                                                       cDisplays.push_back(new CollectDisplay(new MemChord(), new SharedOneColumnFile(fileNameRoot+"memchord")));
+                                                       outputNames.push_back(fileNameRoot+"memchord"); outputTypes["memchord"].push_back(fileNameRoot+"memchord");
+                                               }else if (Estimators[i] == "memeuclidean") { 
+                                                       cDisplays.push_back(new CollectDisplay(new MemEuclidean(), new SharedOneColumnFile(fileNameRoot+"memeuclidean")));
+                                                       outputNames.push_back(fileNameRoot+"memeuclidean"); outputTypes["memeuclidean"].push_back(fileNameRoot+"memeuclidean");
+                                               }else if (Estimators[i] == "mempearson") { 
+                                                       cDisplays.push_back(new CollectDisplay(new MemPearson(), new SharedOneColumnFile(fileNameRoot+"mempearson")));
+                                                       outputNames.push_back(fileNameRoot+"mempearson"); outputTypes["mempearson"].push_back(fileNameRoot+"mempearson");
                                                }
+                                               
                                        }
                                }       
                        }
@@ -240,7 +438,7 @@ CollectSharedCommand::~CollectSharedCommand(){
 int CollectSharedCommand::execute(){
        try {
                
-               if (abort == true) {    return 0;       }
+               if (abort == true) { if (calledHelp) { return 0; }  return 2;   }
                
                //if the users entered no valid calculators don't execute command
                if (cDisplays.size() == 0) { return 0; }
@@ -263,7 +461,7 @@ int CollectSharedCommand::execute(){
 
                while((order != NULL) && ((allLines == 1) || (userLabels.size() != 0))) {
                        if (m->control_pressed) { 
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }  
+                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }  outputTypes.clear();
                                        for(int i=0;i<cDisplays.size();i++){    delete cDisplays[i];    }
                                        delete order; 
                                        globaldata->Groups.clear();
@@ -283,7 +481,7 @@ int CollectSharedCommand::execute(){
                        }
                        
                        //you have a label the user want that is smaller than this label and the last label has not already been processed
-                       if ((anyLabelsToProcess(order->getLabel(), userLabels, "") == true) && (processedLabels.count(lastLabel) != 1)) {
+                       if ((m->anyLabelsToProcess(order->getLabel(), userLabels, "") == true) && (processedLabels.count(lastLabel) != 1)) {
                                string saveLabel = order->getLabel();
                                
                                delete order;
@@ -311,7 +509,7 @@ int CollectSharedCommand::execute(){
                }
                
                if (m->control_pressed) { 
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }  
+                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }   outputTypes.clear();
                                        for(int i=0;i<cDisplays.size();i++){    delete cDisplays[i];    }
                                        globaldata->Groups.clear();
                                        return 0;
@@ -341,7 +539,7 @@ int CollectSharedCommand::execute(){
                        delete cCurve;
                        
                        if (m->control_pressed) { 
-                               for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }  
+                               for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }  outputTypes.clear();
                                for(int i=0;i<cDisplays.size();i++){    delete cDisplays[i];    }
                                delete order; 
                                globaldata->Groups.clear();