]> git.donarmstrong.com Git - mothur.git/blobdiff - database.cpp
fixed bugs in venn and aligner
[mothur.git] / database.cpp
index 5b93321a4c8b0f25915d479407f5152918d12f6a..534747ac9208df062efc2bf2149430ff417d4a72 100644 (file)
@@ -7,9 +7,7 @@
  *
  */
 
-using namespace std;
-
-
+#include "mothur.h"
 #include "sequence.hpp"
 #include "database.hpp"
 
@@ -17,12 +15,15 @@ using namespace std;
 
 Database::Database(string fastaFileName){              //      This assumes that the template database is in fasta format, may 
                                                                                                //      need to alter this in the future?
-
+       longest = 0;
+       
        ifstream fastaFile;
        openInputFile(fastaFileName, fastaFile);
+       
+       mothurOutEndLine();
+       mothurOut("Reading in the " + fastaFileName + " template sequences...\t");      cout.flush();
 
-       cout << endl << "Reading in the " << fastaFileName << " template sequences...\t";       cout.flush();
-
+       //all of this is elsewhere already!
        numSeqs=count(istreambuf_iterator<char>(fastaFile),istreambuf_iterator<char>(), '>');   //      count the number of
        fastaFile.seekg(0);                                                                                                                                             //      sequences
        
@@ -30,11 +31,8 @@ Database::Database(string fastaFileName){            //      This assumes that the template dat
        
        string seqName, sequence;
        for(int i=0;i<numSeqs;i++){
-//             templateSequences[i] = new Sequence();          //      We're storing the aligned template sequences as a vector of
-                                                                                                       //      pointers to Sequence objects
                fastaFile >> seqName;
-//             templateSequences[i]->setName(seqName);
-               
+               seqName = seqName.substr(1);
                char letter;
                string aligned;
                
@@ -45,19 +43,39 @@ Database::Database(string fastaFileName){           //      This assumes that the template dat
                                aligned += letter;
                        }
                }
-               templateSequences[i] = new Sequence(seqName, aligned);
-//             templateSequences[i]->setAligned(aligned);      //      Obviously, we need the fully aligned template sequence
-//             templateSequences[i]->setUnaligned(aligned);//  We will also need the unaligned sequence for pairwise alignments
-               fastaFile.putback(letter);                                      //      and database searches
+               templateSequences[i] = Sequence(seqName, aligned);
+               
+               //necessary because Sequence constructor by default sets whatever it reads to unaligned
+               //the setUnaligned function remove gap char.
+               templateSequences[i].setUnaligned(templateSequences[i].getUnaligned());
+               
+               if (templateSequences[i].getUnaligned().length() > longest)  { longest = templateSequences[i].getUnaligned().length(); }
+               
+               fastaFile.putback(letter);
        }
        
        fastaFile.close();
-       cout << "DONE." << endl;        cout.flush();
+       //all of this is elsewhere already!
+       
+       mothurOut("DONE.");
+       mothurOutEndLine();     cout.flush();
+
+}
+/**************************************************************************************************/
+
+Database::~Database(){                                                                                                         
 
+               templateSequences.clear();
 }
 
 /**************************************************************************************************/
 
 float Database::getSearchScore()       {       return searchScore;             }       //      we're assuming that the search is already done
 
+
 /**************************************************************************************************/
+
+int Database::getLongestBase() {       return longest+1;               }       
+
+/**************************************************************************************************/
+