48#ifndef DOXYGEN_SHOULD_SKIP_THIS
58 const std::vector< std::pair< std::size_t, std::size_t > >& ranges,
59 const Bijection< NodeId, std::size_t >& nodeId2columns) :
60 prior_(prior.clone()), counter_(parser, ranges, nodeId2columns) {
61 GUM_CONSTRUCTOR(IndependenceTest);
66 IndependenceTest::IndependenceTest(
const DBRowGeneratorParser& parser,
68 const Bijection< NodeId, std::size_t >& nodeId2columns) :
69 prior_(prior.clone()), counter_(parser, nodeId2columns) {
70 GUM_CONSTRUCTOR(IndependenceTest);
74 INLINE IndependenceTest::IndependenceTest(
const IndependenceTest& from) :
75 prior_(from.prior_->clone()), counter_(from.counter_), cache_(from.cache_),
76 use_cache_(from.use_cache_) {
77 GUM_CONS_CPY(IndependenceTest);
81 INLINE IndependenceTest::IndependenceTest(IndependenceTest&& from) :
82 prior_(from.prior_), counter_(
std::move(from.counter_)), cache_(
std::move(from.cache_)),
83 use_cache_(from.use_cache_) {
84 from.prior_ =
nullptr;
85 GUM_CONS_MOV(IndependenceTest);
89 INLINE IndependenceTest::~IndependenceTest() {
90 if (prior_ !=
nullptr)
delete prior_;
91 GUM_DESTRUCTOR(IndependenceTest);
95 INLINE
void IndependenceTest::setNumberOfThreads(Size nb) { counter_.setNumberOfThreads(nb); }
98 INLINE Size IndependenceTest::getNumberOfThreads()
const {
99 return counter_.getNumberOfThreads();
103 INLINE
bool IndependenceTest::isGumNumberOfThreadsOverriden()
const {
104 return counter_.isGumNumberOfThreadsOverriden();
109 INLINE
void IndependenceTest::setMinNbRowsPerThread(
const std::size_t nb)
const {
110 counter_.setMinNbRowsPerThread(nb);
114 INLINE std::size_t IndependenceTest::minNbRowsPerThread()
const {
115 return counter_.minNbRowsPerThread();
119 INLINE
const std::vector< std::pair< std::size_t, std::size_t > >&
120 IndependenceTest::ranges()
const {
121 return counter_.ranges();
125 INLINE
double IndependenceTest::score(
const NodeId var1,
const NodeId var2) {
126 IdCondSet idset(var1, var2, empty_ids_,
false,
true);
129 return cache_.score(idset);
131 double the_score = score_(idset);
132 cache_.insert(std::move(idset), the_score);
135 return score_(std::move(idset));
140 INLINE
double IndependenceTest::score(
const NodeId var1,
142 const std::vector< NodeId >& rhs_ids) {
143 IdCondSet idset(var1, var2, rhs_ids,
false,
false);
146 return cache_.score(idset);
148 double the_score = score_(idset);
149 cache_.insert(std::move(idset), the_score);
152 return score_(idset);
157 INLINE
void IndependenceTest::clear() {
163 INLINE
void IndependenceTest::clearCache() { cache_.clear(); }
166 INLINE
void IndependenceTest::useCache(
const bool on_off) { use_cache_ = on_off; }
169 INLINE
const Bijection< NodeId, std::size_t >& IndependenceTest::nodeId2Columns()
const {
170 return counter_.nodeId2Columns();
174 INLINE
const DatabaseTable& IndependenceTest::database()
const {
return counter_.database(); }
Exception : the element we looked for cannot be found.
the class used to read a row in the database and to transform it into a set of DBRow instances that c...
IndependenceTest(const DBRowGeneratorParser &parser, const Prior &external_prior, const std::vector< std::pair< std::size_t, std::size_t > > &ranges, const Bijection< NodeId, std::size_t > &nodeId2columns=Bijection< NodeId, std::size_t >())
default constructor
the base class for all a priori
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities