8 * Created by Pat Schloss on 12/16/08.
9 * Copyright 2008 Patrick D. Schloss. All rights reserved.
14 /* This class is a parent to blastdb, kmerdb, suffixdb. */
17 #include "sequence.hpp"
19 /**************************************************************************************************/
20 struct seqMatch { //used to select top n matches
24 seqMatch(int s, int m) : seq(s), match(m) {}
26 /**************************************************************************************************/
27 inline bool compareSeqMatches (seqMatch member, seqMatch member2){ //sorts largest to smallest
28 if(member.match > member2.match){
34 /**************************************************************************************************/
35 inline bool compareSeqMatchesReverse (seqMatch member, seqMatch member2){ //sorts largest to smallest
36 if(member.match < member2.match){
43 /**************************************************************************************************/
48 Database(const Database& db) : numSeqs(db.numSeqs), longest(db.longest), searchScore(db.searchScore), results(db.results), Scores(db.Scores) { m = MothurOut::getInstance(); }
50 virtual void generateDB() = 0;
51 virtual void addSequence(Sequence) = 0; //add sequence to search engine
52 virtual string getName(int) { return ""; }
53 virtual vector<int> findClosestSequences(Sequence*, int) = 0; // returns indexes of n closest sequences to query
54 virtual vector<int> findClosestMegaBlast(Sequence*, int, int){return results;}
55 virtual float getSearchScore();
56 virtual vector<float> getSearchScores() { return Scores; } //assumes you already called findClosestMegaBlast
57 virtual int getLongestBase();
58 virtual void readKmerDB(ifstream&){};
59 virtual void setNumSeqs(int i) { numSeqs = i; }
60 virtual vector<int> getSequencesWithKmer(int){ vector<int> filler; return filler; };
61 virtual int getReversed(int) { return 0; }
62 virtual int getMaxKmer(){ return 1; }
71 /**************************************************************************************************/