OpenFlexTyper
ftMapClass.h
1 #ifndef __TYPE_DEFS_H__
2 #define __TYPE_DEFS_H__
3 
4 #include <set>
5 #include <iostream>
6 #include <map>
7 #include <future>
8 #include <vector>
9 #include "kmerClass.h"
10 #include "queryClass.h"
11 #include "qkMapClass.h"
12 #include "ftPropsClass.h"
13 #include "kmergenerator.h"
14 #include "utils.h"
15 #include <unordered_map>
16 
17 namespace ft {
18 
23 class FTMap
24 {
25 public:
28  FTMap(const FTProp& _ftProps);
30  virtual ~FTMap();
31 
36  void addInputQueries(const std::set<Query> &inputQueries);
37  void genQKMap();
39 
40 
45  const std::vector<std::map<std::string, ft::KmerClass>>& getResults();
46  const FTProp& getFTProps() const;
47  const std::unordered_map<std::string, ft::KmerClass>& getKmerSet() const;
49 
54  bool checkForKmer(const std::string& testKmer) const;
55  void addKmer(const std::string &kmer);
56  const ft::KmerClass& getKmer(const std::string& kmer) const;
57 
58  bool checkForQIDT(const ft::QIdT& testQueryObject) const;
59  void addQuery(int queryID, ft::QueryType queryType, const std::string& queryString);
60  const ft::QueryClass& getQuery(const ft::QIdT& qIDT) const;
61  void addReadIDsToQuery(ft::QIdT qIDT, std::set<ft::ReadID>& readIds);
63 
67  void addIndexResults(const std::map<std::string, ft::KmerClass> & indexResults);
68  void addKmerResults(const ft::KmerClass& kmerResult);
69  void processResults();
70  void processIndexResults(const std::map<std::string, ft::KmerClass>& indexResults);
71  void processQueryResults(const ft::QIdT& qIDT);
72  void addKmersToQueryResults(ft::QueryClass& query, std::set<std::string>& kmers, std::set<ft::ReadID>& readIds);
73  int calculateQueryCount(const std::set<ft::ReadID>& readIds);
74  void removeMultiHits();
77 
78  void showResources() const;
79 private:
83  FTProp _ftProps;
84  std::unordered_map<std::string, ft::KmerClass> _kmerSet;
85  std::map<ft::QIdT, ft::QueryClass> _querySet;
86  QKMap _qkMap;
87  QKMap _qkRCMap;
88  std::vector<std::map<std::string, ft::KmerClass>> _searchResults;
90 
91 
92  void createKmer(const std::string& kmer);
93  ft::KmerClass* findKmer(const std::string& kmer);
94 
95  bool operator()(const ft::QIdT& a, const ft::QIdT& b) const;
96 };
97 
98 }
99 
100 #endif // TYPE_DEFINITION
ft::KmerClass
A class that contains information for a single Kmer.
Definition: kmerClass.h:17
ft::QueryClass
A class that contains information for one query ID, Type pair.
Definition: queryClass.h:16
ft::FTMap::~FTMap
virtual ~FTMap()
Class Destructor.
Definition: ftMapClass.cpp:509
ft::QIdT
std::pair< int, QueryType > QIdT
Pair to create a unique ID: (Query Number, Query Type)
Definition: ftPropsClass.h:42
ft::FTMap::FTMap
FTMap(const FTProp &_ftProps)
Definition: ftMapClass.cpp:18
ft
This namespace contains all the functions to interact with the search.
Definition: directSearch.h:16
ft::QKMap
A class that contains the map between queries and kmers.
Definition: qkMapClass.h:20
ft::FTProp
A class that contains all the properties for a FlexTyper instance.
Definition: ftPropsClass.h:63
ft::FTMap::removeMultiHitsAsPairs
void removeMultiHitsAsPairs()
Definition: ftMapClass.cpp:395
ft::QueryType
QueryType
Definition: ftPropsClass.h:34
ft::FTMap::removeMultiHits
void removeMultiHits()
Definition: ftMapClass.cpp:354
ft::FTMap
A class that contains information for the FlexTyper Instance.
Definition: ftMapClass.h:24