]> git.donarmstrong.com Git - mothur.git/blobdiff - readdistcommand.cpp
forced rarefaction.single to output ending line for all groups. added subsample...
[mothur.git] / readdistcommand.cpp
index 60d300f177f1deec1720ceeefec71d73ccd7579b..8bf6996333b246814a28009d309ab8f3b6bf8718 100644 (file)
 #include "readcolumn.h"
 #include "readmatrix.hpp"
 
+//**********************************************************************************************************************
 ReadDistCommand::ReadDistCommand(string option) {
        try {
-               globaldata = GlobalData::getInstance();
-               abort = false;
+               abort = false; calledHelp = false;   
                
                //allow user to run help
-               if(option == "help") { help(); abort = true; }
+               if(option == "help") { help(); abort = true; calledHelp = true; }
+               else if(option == "citation") { citation(); abort = true; calledHelp = true;}
                
                else {
-                       //valid paramters for this command
-                       string Array[] =  {"phylip", "column", "name", "cutoff", "precision", "group","outputdir","inputdir"};
+                       /*//valid paramters for this command
+                       string Array[] =  {"phylip", "column", "name", "cutoff", "precision", "group","outputdir","inputdir","sim"};
                        vector<string> myArray (Array, Array+(sizeof(Array)/sizeof(string)));
                        
                        OptionParser parser(option);
@@ -46,7 +47,7 @@ ReadDistCommand::ReadDistCommand(string option) {
                                it = parameters.find("phylip");
                                //user has given a template file
                                if(it != parameters.end()){ 
-                                       path = hasPath(it->second);
+                                       path = m->hasPath(it->second);
                                        //if the user has not given a path then, add inputdir. else leave path alone.
                                        if (path == "") {       parameters["phylip"] = inputDir + it->second;           }
                                }
@@ -54,7 +55,7 @@ ReadDistCommand::ReadDistCommand(string option) {
                                it = parameters.find("column");
                                //user has given a template file
                                if(it != parameters.end()){ 
-                                       path = hasPath(it->second);
+                                       path = m->hasPath(it->second);
                                        //if the user has not given a path then, add inputdir. else leave path alone.
                                        if (path == "") {       parameters["column"] = inputDir + it->second;           }
                                }
@@ -62,7 +63,7 @@ ReadDistCommand::ReadDistCommand(string option) {
                                it = parameters.find("name");
                                //user has given a template file
                                if(it != parameters.end()){ 
-                                       path = hasPath(it->second);
+                                       path = m->hasPath(it->second);
                                        //if the user has not given a path then, add inputdir. else leave path alone.
                                        if (path == "") {       parameters["name"] = inputDir + it->second;             }
                                }
@@ -70,7 +71,7 @@ ReadDistCommand::ReadDistCommand(string option) {
                                it = parameters.find("group");
                                //user has given a template file
                                if(it != parameters.end()){ 
-                                       path = hasPath(it->second);
+                                       path = m->hasPath(it->second);
                                        //if the user has not given a path then, add inputdir. else leave path alone.
                                        if (path == "") {       parameters["group"] = inputDir + it->second;            }
                                }
@@ -119,12 +120,16 @@ ReadDistCommand::ReadDistCommand(string option) {
                        // ...at some point should added some additional type checking...
                        //get user cutoff and precision or use defaults
                        string temp;
-                       temp = validParameter.validFile(parameters, "precision", false);                        if (temp == "not found") { temp = "100"; }
-                       convert(temp, precision); 
+                       temp = validParameter.validFile(parameters, "precision", false);                if (temp == "not found") { temp = "100"; }
+                       m->mothurConvert(temp, precision); 
+                       
+                       temp = validParameter.validFile(parameters, "sim", false);                              if (temp == "not found") { temp = "F"; }
+                       sim = m->isTrue(temp); 
+                       globaldata->sim = sim;
                        
                        temp = validParameter.validFile(parameters, "cutoff", false);                   if (temp == "not found") { temp = "10"; }
                        convert(temp, cutoff); 
-                       cutoff += (5 / (precision * 10.0));
+                       cutoff += (5 / (precision * 10.0)); 
                        
                        if (abort == false) {
                                distFileName = globaldata->inputFileName;
@@ -153,7 +158,7 @@ ReadDistCommand::ReadDistCommand(string option) {
                                        }
                                }
                        }
-
+*/
                }
 
        }
@@ -162,52 +167,19 @@ ReadDistCommand::ReadDistCommand(string option) {
                exit(1);
        }
 }
-//**********************************************************************************************************************
-
-void ReadDistCommand::help(){
-       try {
-               m->mothurOut("The read.dist command parameter options are phylip or column, group, name, cutoff and precision\n");
-               m->mothurOut("The read.dist command can be used in two ways.  The first is to read a phylip or column and run the cluster command\n");
-               m->mothurOut("For this use the read.dist command should be in the following format: \n");
-               m->mothurOut("read.dist(phylip=yourDistFile, name=yourNameFile, cutoff=yourCutoff, precision=yourPrecision) \n");
-               m->mothurOut("The phylip or column parameter is required, but only one may be used.  If you use a column file the name filename is required. \n");
-               m->mothurOut("If you do not provide a cutoff value 10.00 is assumed. If you do not provide a precision value then 100 is assumed.\n");
-               m->mothurOut("The second way to use the read.dist command is to read a phylip or column and a group, so you can use the libshuff command.\n");
-               m->mothurOut("For this use the read.dist command should be in the following format: \n");
-               m->mothurOut("read.dist(phylip=yourPhylipfile, group=yourGroupFile). The cutoff and precision parameters are not valid with this use.  \n");
-               m->mothurOut("Note: No spaces between parameter labels (i.e. phylip), '=' and parameters (i.e.yourPhylipfile).\n\n");
-       }
-       catch(exception& e) {
-               m->errorOut(e, "ReadDistCommand", "help");
-               exit(1);
-       }
-}
-
-//**********************************************************************************************************************
-
-ReadDistCommand::~ReadDistCommand(){
-       if (abort == false) {
-               if (format != "matrix") { 
-                       delete read; 
-                       delete nameMap; 
-               }
-       }
-}
-
 //**********************************************************************************************************************
 int ReadDistCommand::execute(){
        try {
                
-               if (abort == true) {    return 0;       }
-
+               if (abort == true) { if (calledHelp) { return 0; }  return 2;   }
+               m->mothurOut(getHelpString()); m->mothurOutEndLine();
+/*
                time_t start = time(NULL);
                size_t numDists = 0;
                
-               vector<string> outputNames;
-cout << format << endl;                
                if (format == "matrix") {
                        ifstream in;
-                       openInputFile(distFileName, in);
+                       m->openInputFile(distFileName, in);
                        matrix = new FullMatrix(in); //reads the matrix file
                        in.close();
                        
@@ -217,15 +189,15 @@ cout << format << endl;
                        if (matrix->getNumSeqs() < groupMap->getNumSeqs()) {  
                                m->mothurOut("Your distance file contains " + toString(matrix->getNumSeqs()) + " sequences, and your group file contains " + toString(groupMap->getNumSeqs()) + " sequences.");  m->mothurOutEndLine();                         
                                //create new group file
-                               if(outputDir == "") { outputDir += hasPath(groupfile); }
+                               if(outputDir == "") { outputDir += m->hasPath(groupfile); }
                                
-                               string newGroupFile = outputDir + getRootName(getSimpleName(groupfile)) + "editted.groups";
+                               string newGroupFile = outputDir + m->getRootName(m->getSimpleName(groupfile)) + "editted.groups";
                                outputNames.push_back(newGroupFile);
                                ofstream outGroups;
-                               openOutputFile(newGroupFile, outGroups);
+                               m->openOutputFile(newGroupFile, outGroups);
                                
                                for (int i = 0; i < matrix->getNumSeqs(); i++) {
-                                       if (m->control_pressed) { delete groupMap; delete matrix; outGroups.close(); remove(newGroupFile.c_str()); return 0; }
+                                       if (m->control_pressed) { delete groupMap; delete matrix; outGroups.close(); m->mothurRemove(newGroupFile); return 0; }
                                        
                                        Names temp = matrix->getRowInfo(i);
                                        outGroups << temp.seqName << '\t' << temp.groupName << endl;
@@ -242,7 +214,7 @@ cout << format << endl;
                                groupMap = new GroupMap(groupfile);
                                groupMap->readMap();
                                
-                               if (m->control_pressed) { delete groupMap; delete matrix; remove(newGroupFile.c_str()); return 0; }
+                               if (m->control_pressed) { delete groupMap; delete matrix; m->mothurRemove(newGroupFile); return 0; }
        
                                globaldata->gGroupmap = groupMap;
                        }
@@ -275,6 +247,7 @@ cout << format << endl;
                }
                
                m->mothurOut("It took " + toString(time(NULL) - start) + " secs to read "); m->mothurOutEndLine();
+ */
                return 0;
                
        }