]> git.donarmstrong.com Git - mothur.git/blob - database.hpp
changes while testing
[mothur.git] / database.hpp
1 #ifndef DATABASE_HPP
2 #define DATABASE_HPP
3
4 /*
5  *  database.hpp
6  *  
7  *
8  *  Created by Pat Schloss on 12/16/08.
9  *  Copyright 2008 Patrick D. Schloss. All rights reserved.
10  *
11  */
12
13
14 /* This class is a parent to blastdb, kmerdb, suffixdb.  */
15
16 #include "mothur.h"
17 #include "sequence.hpp"
18
19 /**************************************************************************************************/
20 struct seqMatch {  //used to select top n matches
21                 int seq;
22                 int match;
23                 seqMatch() {}
24                 seqMatch(int s, int m) : seq(s), match(m) {}
25 };
26 /**************************************************************************************************/
27 inline bool compareSeqMatches (seqMatch member, seqMatch member2){ //sorts largest to smallest
28         if(member.match > member2.match){
29                 return true;   }   
30         else{
31                 return false; 
32         }
33 }
34 /**************************************************************************************************/
35 inline bool compareSeqMatchesReverse (seqMatch member, seqMatch member2){ //sorts largest to smallest
36         if(member.match < member2.match){
37                 return true;   }   
38         else{
39                 return false; 
40         }
41 }
42
43 /**************************************************************************************************/
44 class Database {
45
46 public:
47         Database();
48         virtual ~Database();
49         virtual void generateDB() = 0; 
50         virtual void addSequence(Sequence) = 0;  //add sequence to search engine
51         virtual string getName(int) { return ""; }  
52         virtual vector<int> findClosestSequences(Sequence*, int) = 0;  // returns indexes of n closest sequences to query
53         virtual vector<int> findClosestMegaBlast(Sequence*, int, int){return results;}
54         virtual float getSearchScore();
55         virtual vector<float> getSearchScores() { return Scores; } //assumes you already called findClosestMegaBlast
56         virtual int getLongestBase(); 
57         virtual void readKmerDB(ifstream&){};
58         virtual void setNumSeqs(int i) {        numSeqs = i;    }
59         virtual vector<int> getSequencesWithKmer(int){ vector<int> filler; return filler; };  
60         virtual int getReversed(int) { return 0; } 
61         virtual int getMaxKmer(){       return 1;       }
62         
63 protected:
64         MothurOut* m;
65         int numSeqs, longest;
66         float searchScore;
67         vector<int> results;
68         vector<float> Scores;
69 };
70 /**************************************************************************************************/
71 #endif