X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=database.hpp;fp=database.hpp;h=49f39035e0aa95d6739616c0a6804858b53cdf9e;hb=0caf3fbabaa3ece404f8ce77f4c883dc5b1bf1dc;hp=0000000000000000000000000000000000000000;hpb=1b73ff67c83892a025e597dabd9df6fe7b58206a;p=mothur.git diff --git a/database.hpp b/database.hpp new file mode 100644 index 0000000..49f3903 --- /dev/null +++ b/database.hpp @@ -0,0 +1,71 @@ +#ifndef DATABASE_HPP +#define DATABASE_HPP + +/* + * database.hpp + * + * + * Created by Pat Schloss on 12/16/08. + * Copyright 2008 Patrick D. Schloss. All rights reserved. + * + */ + + +/* This class is a parent to blastdb, kmerdb, suffixdb. */ + +#include "mothur.h" +#include "sequence.hpp" + +/**************************************************************************************************/ +struct seqMatch { //used to select top n matches + int seq; + int match; + seqMatch() {} + seqMatch(int s, int m) : seq(s), match(m) {} +}; +/**************************************************************************************************/ +inline bool compareSeqMatches (seqMatch member, seqMatch member2){ //sorts largest to smallest + if(member.match > member2.match){ + return true; } + else{ + return false; + } +} +/**************************************************************************************************/ +inline bool compareSeqMatchesReverse (seqMatch member, seqMatch member2){ //sorts largest to smallest + if(member.match < member2.match){ + return true; } + else{ + return false; + } +} + +/**************************************************************************************************/ +class Database { + +public: + Database(); + virtual ~Database(); + virtual void generateDB() = 0; + virtual void addSequence(Sequence) = 0; //add sequence to search engine + virtual string getName(int) { return ""; } + virtual vector findClosestSequences(Sequence*, int) = 0; // returns indexes of n closest sequences to query + virtual vector findClosestMegaBlast(Sequence*, int, int){return results;} + virtual float getSearchScore(); + virtual vector getSearchScores() { return Scores; } //assumes you already called findClosestMegaBlast + virtual int getLongestBase(); + virtual void readKmerDB(ifstream&){}; + virtual void setNumSeqs(int i) { numSeqs = i; } + virtual vector getSequencesWithKmer(int){ vector filler; return filler; }; + virtual int getReversed(int) { return 0; } + virtual int getMaxKmer(){ return 1; } + +protected: + MothurOut* m; + int numSeqs, longest; + float searchScore; + vector results; + vector Scores; +}; +/**************************************************************************************************/ +#endif