]> git.donarmstrong.com Git - mothur.git/blobdiff - classify.cpp
modified mpi code to save ram by writing out every 10 seqs.
[mothur.git] / classify.cpp
index f6b7e80be51f9383c2dd6599f737c24fa36a0f6d..2db19735a8726e78269fbcce2a58521aa2205b19 100644 (file)
 #include "kmerdb.hpp"
 #include "suffixdb.hpp"
 #include "blastdb.hpp"
+#include "distancedb.hpp"
 
 /**************************************************************************************************/
-
-Classify::Classify(string tfile, string tempFile, string method, int kmerSize, int gapOpen, int gapExtend, int match, int misMatch) : taxFile(tfile), templateFile(tempFile) {         
-       try {                                                                                   
+Classify::Classify(string tfile, string tempFile, string method, int kmerSize, float gapOpen, float gapExtend, float match, float misMatch) : taxFile(tfile), templateFile(tempFile) {         
+       try {   
+               m = MothurOut::getInstance();                                                                   
                readTaxonomy(taxFile);  
                
                int start = time(NULL);
@@ -29,7 +30,7 @@ Classify::Classify(string tfile, string tempFile, string method, int kmerSize, i
                        inFASTA.close();
                }
 
-               mothurOut("Generating search database...    "); cout.flush();
+               m->mothurOut("Generating search database...    "); cout.flush();
                                
                bool needToGenerate = true;
                string kmerDBName;
@@ -42,9 +43,10 @@ Classify::Classify(string tfile, string tempFile, string method, int kmerSize, i
                }
                else if(method == "suffix")             {       database = new SuffixDB(numSeqs);                                                               }
                else if(method == "blast")              {       database = new BlastDB(gapOpen, gapExtend, match, misMatch);    }
+               else if(method == "distance")   {       database = new DistanceDB();    }
                else {
-                       mothurOut(method + " is not a valid search option. I will run the command using kmer, ksize=8.");
-                       mothurOutEndLine();
+                       m->mothurOut(method + " is not a valid search option. I will run the command using kmer, ksize=8.");
+                       m->mothurOutEndLine();
                        database = new KmerDB(tempFile, 8);
                }
                
@@ -82,12 +84,12 @@ Classify::Classify(string tfile, string tempFile, string method, int kmerSize, i
                
                database->setNumSeqs(names.size());
                
-               mothurOut("DONE."); mothurOutEndLine();
-               mothurOut("It took " + toString(time(NULL) - start) + " seconds generate search database. "); mothurOutEndLine();
+               m->mothurOut("DONE."); m->mothurOutEndLine();
+               m->mothurOut("It took " + toString(time(NULL) - start) + " seconds generate search database. "); m->mothurOutEndLine();
 
        }
        catch(exception& e) {
-               errorOut(e, "Classify", "Classify");
+               m->errorOut(e, "Classify", "Classify");
                exit(1);
        }
 }
@@ -101,8 +103,8 @@ void Classify::readTaxonomy(string file) {
                ifstream inTax;
                openInputFile(file, inTax);
        
-               mothurOutEndLine();
-               mothurOut("Reading in the " + file + " taxonomy...\t"); cout.flush();
+               m->mothurOutEndLine();
+               m->mothurOut("Reading in the " + file + " taxonomy...\t");      cout.flush();
                
                string name, taxInfo;
                //read template seqs and save
@@ -111,10 +113,6 @@ void Classify::readTaxonomy(string file) {
                        
                        taxonomy[name] = taxInfo;
                        
-                       //itTax = taxList.find(taxInfo);
-                       //if (itTax == taxList.end()) { //this is new taxonomy
-                               //taxList[taxInfo] = 1;
-                       //}else { taxList[taxInfo]++;   }
                        phyloTree->addSeqToTree(name, taxInfo);
                
                        gobble(inTax);
@@ -123,12 +121,12 @@ void Classify::readTaxonomy(string file) {
                phyloTree->assignHeirarchyIDs(0);
                inTax.close();
        
-               mothurOut("DONE.");
-               mothurOutEndLine();     cout.flush();
+               m->mothurOut("DONE.");
+               m->mothurOutEndLine();  cout.flush();
        
        }
        catch(exception& e) {
-               errorOut(e, "Classify", "readTaxonomy");
+               m->errorOut(e, "Classify", "readTaxonomy");
                exit(1);
        }
 }
@@ -154,7 +152,7 @@ vector<string> Classify::parseTax(string tax) {
                return taxons;
        }
        catch(exception& e) {
-               errorOut(e, "Classify", "parseTax");
+               m->errorOut(e, "Classify", "parseTax");
                exit(1);
        }
 }