]> git.donarmstrong.com Git - mothur.git/blobdiff - createdatabasecommand.cpp
added load.logfile command. changed summary.single output for subsample=t.
[mothur.git] / createdatabasecommand.cpp
index 1da67e6d8694096da74ce8f855b27cf3b96d2f89..febd762592acdca2df39b7d8d076f0020dfa444d 100644 (file)
@@ -53,6 +53,27 @@ string CreateDatabaseCommand::getHelpString(){
                exit(1);
        }
 }
+//**********************************************************************************************************************
+string CreateDatabaseCommand::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 == "database") {  outputFileName =  "database"; }
+            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, "CreateDatabaseCommand", "getOutputFileNameTag");
+               exit(1);
+       }
+}
+
 //**********************************************************************************************************************
 CreateDatabaseCommand::CreateDatabaseCommand(){        
        try {
@@ -209,7 +230,7 @@ int CreateDatabaseCommand::execute(){
         
         //names redundants to uniques. backwards to how we normally do it, but each bin is the list file will be a key entry in the map.
         map<string, string> repNames;
-        int numUniqueNamesFile = readNames(repNames);
+        int numUniqueNamesFile = m->readNames(repnamesfile, repNames);
         
         //are there the same number of otus in the fasta and name files
         if (repOtusSizes.size() != numUniqueNamesFile) { m->mothurOut("[ERROR]: you have " + toString(numUniqueNamesFile) + " unique seqs in your repname file, but " + toString(repOtusSizes.size()) + " seqs in your repfasta file.  These should match.\n"); m->control_pressed = true; }
@@ -244,7 +265,7 @@ int CreateDatabaseCommand::execute(){
         if (m->control_pressed) { delete list; if (groupfile != "") { delete groupmap; } return 0; }
         
         if (outputDir == "") { outputDir += m->hasPath(listfile); }
-        string outputFileName = outputDir + m->getRootName(m->getSimpleName(listfile)) + "database";
+        string outputFileName = outputDir + m->getRootName(m->getSimpleName(listfile)) + getOutputFileNameTag("database");
         outputNames.push_back(outputFileName); outputTypes["database"].push_back(outputFileName);
         
         ofstream out;
@@ -394,32 +415,6 @@ vector<int> CreateDatabaseCommand::readFasta(vector<Sequence>& seqs){
                exit(1);
        }
 }
-/**********************************************************************************************************************/
-int CreateDatabaseCommand::readNames(map<string, string>& nameMap) { 
-       try {
-               
-               //open input file
-               ifstream in;
-               m->openInputFile(repnamesfile, in);
-               
-               while (!in.eof()) {
-                       if (m->control_pressed) { break; }
-                       
-                       string firstCol, secondCol;
-                       in >> firstCol >> secondCol; m->gobble(in);
-                       
-                       nameMap[secondCol] = firstCol;
-               }
-               in.close();
-               
-               return nameMap.size();
-               
-       }
-       catch(exception& e) {
-               m->errorOut(e, "CreateDatabaseCommand", "readNames");
-               exit(1);
-       }
-}
 //**********************************************************************************************************************
 ListVector* CreateDatabaseCommand::getList(){
        try {