]> git.donarmstrong.com Git - mothur.git/blobdiff - clusterfragmentscommand.cpp
Merge remote-tracking branch 'origin/master'
[mothur.git] / clusterfragmentscommand.cpp
index baea496ccb8b2b95aac764028493be1e51a302d1..4a338419af8900f8b7ebd693225a7e9f4d193481 100644 (file)
@@ -58,7 +58,7 @@ string ClusterFragmentsCommand::getHelpString(){
                helpString += "The cluster.fragments command should be in the following format: \n";
                helpString += "cluster.fragments(fasta=yourFastaFile, names=yourNamesFile) \n";
                helpString += "Example cluster.fragments(fasta=amazon.fasta).\n";
-               helpString += "Note: No spaces between parameter labels (i.e. fasta), '=' and parameters (i.e.yourFasta).\n\n";
+               helpString += "Note: No spaces between parameter labels (i.e. fasta), '=' and parameters (i.e.yourFasta).\n";
                return helpString;
        }
        catch(exception& e) {
@@ -66,6 +66,28 @@ string ClusterFragmentsCommand::getHelpString(){
                exit(1);
        }
 }
+//**********************************************************************************************************************
+string ClusterFragmentsCommand::getOutputFileNameTag(string type, string inputName=""){        
+       try {
+        string outputFileName = "";
+               map<string, vector<string> >::iterator it;
+        
+        //is this a type this command creates
+        it = outputTypes.find(type);
+        if (it == outputTypes.end()) {  m->mothurOut("[ERROR]: this command doesn't create a " + type + " output file.\n"); }
+        else {
+            if (type == "fasta") {  outputFileName =  "fragclust.fasta"; }
+            else if (type == "name") {  outputFileName =  "fragclust.names"; }
+            else { m->mothurOut("[ERROR]: No definition for type " + type + " output file tag.\n"); m->control_pressed = true;  }
+        }
+        return outputFileName;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "ClusterFragmentsCommand", "getOutputFileNameTag");
+               exit(1);
+       }
+}
+
 //**********************************************************************************************************************
 ClusterFragmentsCommand::ClusterFragmentsCommand(){    
        try {
@@ -87,6 +109,7 @@ ClusterFragmentsCommand::ClusterFragmentsCommand(string option) {
                
                //allow user to run help
                if(option == "help") { help(); abort = true; calledHelp = true; }
+               else if(option == "citation") { citation(); abort = true; calledHelp = true;}
                
                else {
                        vector<string> myArray = setParameters();
@@ -137,6 +160,7 @@ ClusterFragmentsCommand::ClusterFragmentsCommand(string option) {
                                else {  m->mothurOut("You have no current fastafile and the fasta parameter is required."); m->mothurOutEndLine(); abort = true; }
                        }
                        else if (fastafile == "not open") { fastafile = ""; abort = true; }     
+                       else { m->setFastaFile(fastafile); }
                        
                        //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 = m->hasPath(fastafile);      }
@@ -145,15 +169,20 @@ ClusterFragmentsCommand::ClusterFragmentsCommand(string option) {
                        // ...at some point should added some additional type checking...
                        namefile = validParameter.validFile(parameters, "name", true);
                        if (namefile == "not found") { namefile =  "";  }
-                       else if (namefile == "not open") { abort = true; }      
-                       else {  readNameFile();  }
+                       else if (namefile == "not open") { namefile = ""; abort = true; }       
+                       else {  readNameFile(); m->setNameFile(namefile); }
                        
                        string temp;
                        temp = validParameter.validFile(parameters, "diffs", false);            if (temp == "not found"){       temp = "0";                             }
-                       convert(temp, diffs); 
+                       m->mothurConvert(temp, diffs); 
                        
                        temp = validParameter.validFile(parameters, "percent", false);          if (temp == "not found"){       temp = "0";                             }
-                       convert(temp, percent);
+                       m->mothurConvert(temp, percent);
+                       
+                       if (namefile == "") {
+                               vector<string> files; files.push_back(fastafile);
+                               parser.getNameFile(files);
+                       }
                        
                }
                                
@@ -223,8 +252,8 @@ int ClusterFragmentsCommand::execute(){
                
                string fileroot = outputDir + m->getRootName(m->getSimpleName(fastafile));
                
-               string newFastaFile = fileroot + "fragclust.fasta";
-               string newNamesFile = fileroot + "names";
+               string newFastaFile = fileroot + getOutputFileNameTag("fasta");
+               string newNamesFile = fileroot + getOutputFileNameTag("name");
                
                if (m->control_pressed) { return 0; }
                
@@ -236,7 +265,7 @@ int ClusterFragmentsCommand::execute(){
                
                m->mothurOut("It took " + toString(time(NULL) - start) + " secs to cluster " + toString(numSeqs) + " sequences."); m->mothurOutEndLine(); 
                
-               if (m->control_pressed) { remove(newFastaFile.c_str()); remove(newNamesFile.c_str()); return 0; }
+               if (m->control_pressed) { m->mothurRemove(newFastaFile); m->mothurRemove(newNamesFile); return 0; }
                
                m->mothurOutEndLine();
                m->mothurOut("Output File Names: "); m->mothurOutEndLine();