aGrUM  0.16.0
nodeDatabase.h
Go to the documentation of this file.
1 
30 // =========================================================================
31 #ifndef GUM_NODE_DATABASE_H
32 #define GUM_NODE_DATABASE_H
33 // =========================================================================
34 #include <agrum/core/hashTable.h>
35 #include <agrum/core/sequence.h>
36 // =========================================================================
42 // =========================================================================
44 // =========================================================================
45 
46 namespace gum {
47 
57  template < TESTNAME AttributeSelection, bool isScalar >
58  class NodeDatabase {
60 
61  template < typename GUM_SCALAR >
62  using TestPolicy =
63  typename TestSelect< AttributeSelection,
67 
68  public:
69  // ==========================================================================
71  // ==========================================================================
73 
74  // ###################################################################
76  // ###################################################################
78  const DiscreteVariable* = nullptr);
79 
80  // ###################################################################
82  // ###################################################################
83  ~NodeDatabase();
84 
85  // ============================================================================
87  // ============================================================================
88  void* operator new(size_t s) {
90  }
91  void operator delete(void* p) {
93  }
94 
96 
97  // ==========================================================================
99  // ==========================================================================
101 
102  // ###################################################################
109  // ###################################################################
110  void addObservation(const Observation*);
111 
112  private:
115 
116  public:
117  // ###################################################################
119  // ###################################################################
120  INLINE Idx nbObservation() const { return __nbObservation; }
121 
123 
124  // ==========================================================================
126  // ==========================================================================
128 
129  // ###################################################################
132  // ###################################################################
133  INLINE bool isTestRelevant(const DiscreteVariable* var) const {
134  return __attrTable[var]->isTestRelevant();
135  }
136 
137  // ###################################################################
140  // ###################################################################
141  INLINE double testValue(const DiscreteVariable* var) const {
142  return __attrTable[var]->score();
143  }
144 
145  // ###################################################################
148  // ###################################################################
149  INLINE double testOtherCriterion(const DiscreteVariable* var) const {
150  return __attrTable[var]->secondaryscore();
151  }
152 
154 
155  // ==========================================================================
157  // ==========================================================================
159 
160  // ###################################################################
162  // ###################################################################
165 
166  // ###################################################################
169  // ###################################################################
171  return __attrTable[var];
172  }
173 
174  // ###################################################################
176  // ###################################################################
178  return __valueCount.cbeginSafe();
179  }
181  return __valueCount.cendSafe();
182  }
183 
185 
186  // ###################################################################
188  // ###################################################################
189 
190  Idx effectif(Idx moda) const {
191  return __valueCount.exists(ValueType(moda)) ? __valueCount[ValueType(moda)]
192  : 0;
193  }
194 
196 
197  private:
198  Idx __valueDomain(Int2Type< true >) const { return __valueCount.size(); }
200 
201  std::string toString() const;
202 
203  private:
206 
209 
212 
215  };
216 
217 
218 } /* namespace gum */
219 
221 
222 #endif // GUM_NODE_DATABASE_H
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Idx __valueDomain(Int2Type< false >) const
Definition: nodeDatabase.h:199
const TestPolicy< ValueType > * testPolicy(const DiscreteVariable *var) const
Returns a reference to nDB test policy for given variable (so that test policy information can be mer...
Definition: nodeDatabase.h:170
const DiscreteVariable * __value
So does this reference on the value observed.
Definition: nodeDatabase.h:208
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
HashTable< ValueType, Idx > __valueCount
Definition: nodeDatabase.h:214
const HashTableConstIteratorSafe< ValueType, Idx > cendValues() const
Merges given NodeDatabase informations into current nDB.
Definition: nodeDatabase.h:180
Safe Const Iterators for hashtables.
Definition: hashTable.h:1918
Idx valueDomain() const
Definition: nodeDatabase.h:195
void __addObservation(const Observation *, Int2Type< true >)
Updates database with new observation.
typename TestSelect< AttributeSelection, GTestPolicy< GUM_SCALAR >, Chi2TestPolicy< GUM_SCALAR >, LeastSquareTestPolicy< GUM_SCALAR > >::type TestPolicy
Definition: nodeDatabase.h:66
Idx __valueDomain(Int2Type< true >) const
Definition: nodeDatabase.h:198
NodeDatabase(const Set< const DiscreteVariable * > *, const DiscreteVariable *=nullptr)
Default constructor.
Base class for discrete random variable.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
INLINE bool isTestRelevant(const DiscreteVariable *var) const
Indicates wether or not, node has sufficient observation so that any statistic is relevant...
Definition: nodeDatabase.h:133
<agrum/multidim/core/testPolicy/Chi2TestPolicy.h>
<agrum/multidim/core/testPolicy/leastSquareTestPolicy.h>
INLINE double testOtherCriterion(const DiscreteVariable *var) const
Returns the performance of given variables according to selection secondary criterion (to break ties)...
Definition: nodeDatabase.h:149
The class for generic Hash Tables.
Definition: hashTable.h:679
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Representation of a setA Set is a structure that contains arbitrary elements.
Definition: set.h:165
virtual Size domainSize() const =0
std::string toString() const
void addObservation(const Observation *)
Nb observation taken into account by this instance.
INLINE double testValue(const DiscreteVariable *var) const
Returns the performance of given variables according to selection criterion.
Definition: nodeDatabase.h:141
<agrum/multidim/core/testPolicies/GTestPolicy.h>
Definition: GTestPolicy.h:53
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
const HashTableConstIteratorSafe< ValueType, Idx > cbeginValues() const
Iterators on value count to recopy correctly its content.
Definition: nodeDatabase.h:177
ValueSelect< isScalar, double, Idx >::type ValueType
Definition: nodeDatabase.h:59
NodeDatabase< AttributeSelection, isScalar > & operator+=(const NodeDatabase< AttributeSelection, isScalar > &src)
Merges given NodeDatabase informations into current nDB.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
void deallocate(void *pDeallocatedObject, const size_t &objectSize)
Deallocates an object.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Size Idx
Type for indexes.
Definition: types.h:53
void * allocate(const size_t &objectSize)
Allocates a block.
INLINE Idx nbObservation() const
Nb observation taken into account by this instance.
Definition: nodeDatabase.h:120
Idx effectif(Idx moda) const
Definition: nodeDatabase.h:190
static SmallObjectAllocator & instance()
~NodeDatabase()
Default destructor.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
<agrum/FMDP/learning/datastructure/nodeDatabase.h>
Definition: nodeDatabase.h:58
HashTable< const DiscreteVariable *, TestPolicy< ValueType > *> __attrTable
Table giving for every variables its instantiation.
Definition: nodeDatabase.h:205