]> git.donarmstrong.com Git - mothur.git/blob - kmerdb.hpp
bdd9ca503910e6b764c3c067b5d9305409fafd6f
[mothur.git] / kmerdb.hpp
1 #ifndef KMERDB_HPP
2 #define KMERDB_HPP
3
4 /*
5  *  kmerdb.h
6  *  
7  *
8  *  Created by Pat Schloss on 12/16/08.
9  *  Copyright 2008 Patrick D. Schloss. All rights reserved.
10  *
11  *      This class is a child class of the Database class, which stores the template sequences as a kmer table and provides
12  *      a method of searching the kmer table for the sequence with the most kmers in common with a query sequence.
13  *      kmerLocations is the primary storage variable that is a two-dimensional vector where each row represents the
14  *      different number of kmers and each column contains the index to sequences that use that kmer.
15  *
16  *      Construction of an object of this type will first look for an appropriately named database file and if it is found
17  *      then will read in the database file (readKmerDB), otherwise it will generate one and store the data in memory
18  *      (generateKmerDB)
19
20  */
21
22 #include "mothur.h"
23 #include "database.hpp"
24
25 class KmerDB : public Database {
26         
27 public:
28         KmerDB(string, int);
29         ~KmerDB();
30         
31         void generateDB();
32         void addSequence(Sequence);
33         vector<int> findClosestSequences(Sequence*, int);
34         void readKmerDB(ifstream&);
35         int getCount(int);  //returns number of sequences with that kmer number
36         vector<int> getSequencesWithKmer(int);  //returns vector of sequences that contain kmer passed in
37         int getMaxKmer() { return maxKmer; }
38         
39 private:
40         
41         int kmerSize;
42         int maxKmer, count;
43         string kmerDBName;
44         vector<vector<int> > kmerLocations;
45 };
46
47 #endif