]> git.donarmstrong.com Git - mothur.git/blobdiff - database.cpp
changed defaults for filter.seqs()
[mothur.git] / database.cpp
index 153876f9e147e038a72074b490c8028033a308ce..8c080dbf95e79d6dc574e52d5679747018df00fa 100644 (file)
@@ -9,34 +9,29 @@
 
 using namespace std;
 
-#include <string>
-#include <vector>
-#include <fstream>
-#include <iostream>
 
 #include "sequence.hpp"
 #include "database.hpp"
 
 /**************************************************************************************************/
 
-Database::Database(string fastaFileName){
-       
-       ifstream fastaFile(fastaFileName.c_str());
-       if(!fastaFile) {
-               cerr << "Error: Could not open " << fastaFileName << endl;
-               exit(1);
-       }
+Database::Database(string fastaFileName){              //      This assumes that the template database is in fasta format, may 
+                                                                                               //      need to alter this in the future?
+
+       ifstream fastaFile;
+       openInputFile(fastaFileName, fastaFile);
+
        cout << endl << "Reading in the " << fastaFileName << " template sequences...\t";       cout.flush();
 
-       numSeqs=count(istreambuf_iterator<char>(fastaFile),istreambuf_iterator<char>(), '>');
-       fastaFile.seekg(0);
+       numSeqs=count(istreambuf_iterator<char>(fastaFile),istreambuf_iterator<char>(), '>');   //      count the number of
+       fastaFile.seekg(0);                                                                                                                                             //      sequences
        
        templateSequences.resize(numSeqs);
        
        string seqName, sequence;
        for(int i=0;i<numSeqs;i++){
-               templateSequences[i] = new Sequence();
-               
+               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);
                
@@ -46,12 +41,13 @@ Database::Database(string fastaFileName){
                while(fastaFile && (letter=fastaFile.get()) != '>'){
                        if(isprint(letter)){
                                letter = toupper(letter);
+                               if(letter == 'U'){letter = 'T';}
                                aligned += letter;
                        }
                }
-               templateSequences[i]->setAligned(aligned);
-               templateSequences[i]->setUnaligned(aligned);
-               fastaFile.putback(letter);
+               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
        }
        
        fastaFile.close();
@@ -60,3 +56,7 @@ Database::Database(string fastaFileName){
 }
 
 /**************************************************************************************************/
+
+float Database::getSearchScore()       {       return searchScore;             }       //      we're assuming that the search is already done
+
+/**************************************************************************************************/