]> git.donarmstrong.com Git - mothur.git/blob - database.cpp
added logfile feature
[mothur.git] / database.cpp
1 /*
2  *  database.cpp
3  *  
4  *
5  *  Created by Pat Schloss on 12/16/08.
6  *  Copyright 2008 Patrick D. Schloss. All rights reserved.
7  *
8  */
9
10 #include "mothur.h"
11 #include "sequence.hpp"
12 #include "database.hpp"
13
14 /**************************************************************************************************/
15
16 Database::Database(string fastaFileName){               //      This assumes that the template database is in fasta format, may 
17                                                                                                 //      need to alter this in the future?
18
19         ifstream fastaFile;
20         openInputFile(fastaFileName, fastaFile);
21         
22         mothurOutEndLine();
23         mothurOut("Reading in the " + fastaFileName + " template sequences...\t");      cout.flush();
24
25         //all of this is elsewhere already!
26         numSeqs=count(istreambuf_iterator<char>(fastaFile),istreambuf_iterator<char>(), '>');   //      count the number of
27         fastaFile.seekg(0);                                                                                                                                             //      sequences
28         
29         templateSequences.resize(numSeqs);
30         
31         string seqName, sequence;
32         for(int i=0;i<numSeqs;i++){
33                 fastaFile >> seqName;
34                 seqName = seqName.substr(1);
35                 char letter;
36                 string aligned;
37                 
38                 while(fastaFile && (letter=fastaFile.get()) != '>'){
39                         if(isprint(letter)){
40                                 letter = toupper(letter);
41                                 if(letter == 'U'){letter = 'T';}
42                                 aligned += letter;
43                         }
44                 }
45                 templateSequences[i] = Sequence(seqName, aligned);
46                 fastaFile.putback(letter);
47         }
48         
49         fastaFile.close();
50         //all of this is elsewhere already!
51         
52         mothurOut("DONE.");
53         mothurOutEndLine();     cout.flush();
54
55 }
56 /**************************************************************************************************/
57
58 Database::~Database(){                                                                                                          
59
60                 templateSequences.clear();
61 }
62
63 /**************************************************************************************************/
64
65 float Database::getSearchScore()        {       return searchScore;             }       //      we're assuming that the search is already done
66
67 /**************************************************************************************************/