]> git.donarmstrong.com Git - mothur.git/blobdiff - amovacommand.cpp
added count file to get.oturep, pre.cluster, screen.seqs, tree.shared. made remove...
[mothur.git] / amovacommand.cpp
index 141673375fb8bb1a37e67980df9708fe6d2da126..c4260fb096dd8b0b253f5239f7ce265376d24ed5 100644 (file)
@@ -51,6 +51,26 @@ string AmovaCommand::getHelpString(){
        }
 }
 //**********************************************************************************************************************
+string AmovaCommand::getOutputFileNameTag(string type, string inputName=""){   
+       try {
+        string tag = "";
+               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 == "amova") {  tag = "amova"; }
+            else { m->mothurOut("[ERROR]: No definition for type " + type + " output file.\n");  }
+        }
+        return tag;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "AmovaCommand", "getOutputFileNameTag");
+               exit(1);
+       }
+}
+//**********************************************************************************************************************
 AmovaCommand::AmovaCommand(){  
        try {
                abort = true; calledHelp = true; 
@@ -136,11 +156,11 @@ AmovaCommand::AmovaCommand(string option) {
 
                        string temp = validParameter.validFile(parameters, "iters", false);
                        if (temp == "not found") { temp = "1000"; }
-                       convert(temp, iters); 
+                       m->mothurConvert(temp, iters); 
                        
                        temp = validParameter.validFile(parameters, "alpha", false);
                        if (temp == "not found") { temp = "0.05"; }
-                       convert(temp, experimentwiseAlpha); 
+                       m->mothurConvert(temp, experimentwiseAlpha); 
                }
        }
        catch(exception& e) {
@@ -174,13 +194,20 @@ int AmovaCommand::execute(){
                //link designMap to rows/columns in distance matrix
                map<string, vector<int> > origGroupSampleMap;
                for(int i=0;i<sampleNames.size();i++){
-                       origGroupSampleMap[designMap->getGroup(sampleNames[i])].push_back(i);
+                       string group = designMap->getGroup(sampleNames[i]);
+                       
+                       if (group == "not found") {
+                               m->mothurOut("[ERROR]: " + sampleNames[i] + " is not in your design file, please correct."); m->mothurOutEndLine(); m->control_pressed = true;
+                       }else { origGroupSampleMap[group].push_back(i); }
+                       
                }
                int numGroups = origGroupSampleMap.size();
                
+               if (m->control_pressed) { delete designMap; return 0; }
+               
                //create a new filename
                ofstream AMOVAFile;
-               string AMOVAFileName = outputDir + m->getRootName(m->getSimpleName(phylipFileName))  + "amova";                         
+               string AMOVAFileName = outputDir + m->getRootName(m->getSimpleName(phylipFileName)) + getOutputFileNameTag("amova");                            
                m->openOutputFile(AMOVAFileName, AMOVAFile);
                outputNames.push_back(AMOVAFileName); outputTypes["amova"].push_back(AMOVAFileName);