]> git.donarmstrong.com Git - mothur.git/blob - database.cpp
continued work on chimeras and fixed bug in trim.seqs and reverse.seqs that was due...
[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         longest = 0;
19         
20         ifstream fastaFile;
21         openInputFile(fastaFileName, fastaFile);
22         
23         mothurOutEndLine();
24         mothurOut("Reading in the " + fastaFileName + " template sequences...\t");      cout.flush();
25
26         //all of this is elsewhere already!
27         //numSeqs=count(istreambuf_iterator<char>(fastaFile),istreambuf_iterator<char>(), '>'); //      count the number of
28         //fastaFile.seekg(0);                                                                                                                                           //      sequences
29         
30         //templateSequences.resize(numSeqs);
31         
32         /*string seqName, sequence;
33         for(int i=0;i<numSeqs;i++){
34                 fastaFile >> seqName;
35                 seqName = seqName.substr(1);
36                 char letter;
37                 string aligned;
38                 
39                 while(fastaFile && (letter=fastaFile.get()) != '>'){
40                         if(isprint(letter)){
41                                 letter = toupper(letter);
42                                 if(letter == 'U'){letter = 'T';}
43                                 aligned += letter;
44                         }
45                 }
46                 templateSequences[i] = Sequence(seqName, aligned);
47                 
48                 //necessary because Sequence constructor by default sets whatever it reads to unaligned
49                 //the setUnaligned function remove gap char.
50                 templateSequences[i].setUnaligned(templateSequences[i].getUnaligned());
51                 
52                 if (templateSequences[i].getUnaligned().length() > longest)  { longest = templateSequences[i].getUnaligned().length(); }
53                 
54                 fastaFile.putback(letter);
55         }*/
56         
57         while (!fastaFile.eof()) {
58                 Sequence temp(fastaFile);
59                 
60                 templateSequences.push_back(temp);
61                 
62                 //save longest base
63                 if (temp.getUnaligned().length() > longest)  { longest = temp.getUnaligned().length(); }
64                 
65                 gobble(fastaFile);
66         }
67         
68         numSeqs = templateSequences.size();
69         
70         fastaFile.close();
71         //all of this is elsewhere already!
72         
73         mothurOut("DONE.");
74         mothurOutEndLine();     cout.flush();
75
76 }
77 /**************************************************************************************************/
78
79 Database::~Database(){                                                                                                          
80
81                 templateSequences.clear();
82 }
83
84 /**************************************************************************************************/
85
86 float Database::getSearchScore()        {       return searchScore;             }       //      we're assuming that the search is already done
87
88
89 /**************************************************************************************************/
90
91 int Database::getLongestBase()  {       return longest+1;               }       
92
93 /**************************************************************************************************/
94
95