aGrUM  0.21.0
a C++ library for (probabilistic) graphical models
gum::learning::BNDatabaseGenerator< GUM_SCALAR > Class Template Reference

#include <BNDatabaseGenerator.h>

+ Inheritance diagram for gum::learning::BNDatabaseGenerator< GUM_SCALAR >:
+ Collaboration diagram for gum::learning::BNDatabaseGenerator< GUM_SCALAR >:

Public Attributes

Signaler2< Size, doubleonProgress
 Progression (percent) and time. More...
 
Signaler1< const std::string &> onStop
 with a possible explanation for stopping More...
 

Public Member Functions

Constructors / Destructors
 BNDatabaseGenerator (const BayesNet< GUM_SCALAR > &bn)
 default constructor More...
 
 ~BNDatabaseGenerator ()
 destructor More...
 
Accessors / Modifiers
double drawSamples (Size nbSamples)
 generate and stock database, returns log2likelihood using ProgressNotifier as notification More...
 
void toCSV (const std::string &csvFileURL, bool useLabels=true, bool append=false, std::string csvSeparator=",", bool checkOnAppend=false) const
 generates csv database according to bn More...
 
DatabaseTable toDatabaseTable (bool useLabels=true) const
 generates a DatabaseVectInRAM More...
 
std::vector< std::vector< Idx > > database () const
 generates database according to bn into a std::vector More...
 
void setVarOrder (const std::vector< Idx > &varOrder)
 change columns order More...
 
void setVarOrder (const std::vector< std::string > &varOrder)
 change columns order using variable names More...
 
void setVarOrderFromCSV (const std::string &csvFileURL, const std::string &csvSeparator=",")
 change columns order according to a csv file More...
 
void setTopologicalVarOrder ()
 set columns in topoligical order More...
 
void setAntiTopologicalVarOrder ()
 set columns in antiTopoligical order More...
 
void setRandomVarOrder ()
 set columns in random order More...
 
std::vector< IdxvarOrder () const
 returns variable order indexes More...
 
std::vector< std::string > varOrderNames () const
 returns variable order. More...
 
double log2likelihood () const
 returns log2Likelihood of generated samples More...
 

Detailed Description

template<typename GUM_SCALAR>
class gum::learning::BNDatabaseGenerator< GUM_SCALAR >

Definition at line 79 of file BNDatabaseGenerator.h.

Constructor & Destructor Documentation

◆ BNDatabaseGenerator() [1/3]

template<typename GUM_SCALAR >
gum::learning::BNDatabaseGenerator< GUM_SCALAR >::BNDatabaseGenerator ( const BayesNet< GUM_SCALAR > &  bn)

default constructor

Definition at line 39 of file BNDatabaseGenerator_tpl.h.

39  :
40  _bn_(bn) {
41  GUM_CONSTRUCTOR(BNDatabaseGenerator);
42 
43  // get the node names => they will serve as ids
44  NodeId id = 0;
45  for (const auto& var: _bn_.dag()) {
46  auto name = _bn_.variable(var).name();
47  _names2ids_.insert(name, var);
48  ++id;
49  }
50  _nbVars_ = id;
51  _varOrder_.resize(_nbVars_);
52  std::iota(_varOrder_.begin(), _varOrder_.end(), (Idx)0);
53  }
void insert(const T1 &first, const T2 &second)
Inserts a new association in the gum::Bijection.
std::vector< Idx > _varOrder_
variable order in generated database
const BayesNet< GUM_SCALAR > & _bn_
Bayesian network.
Bijection< std::string, NodeId > _names2ids_
bijection nodes names
Size Idx
Type for indexes.
Definition: types.h:52
Size NodeId
Type for node ids.
Definition: graphElements.h:97
BNDatabaseGenerator(const BayesNet< GUM_SCALAR > &bn)
default constructor

◆ ~BNDatabaseGenerator()

template<typename GUM_SCALAR >
gum::learning::BNDatabaseGenerator< GUM_SCALAR >::~BNDatabaseGenerator ( )

destructor

Definition at line 57 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

57  {
58  GUM_DESTRUCTOR(BNDatabaseGenerator);
59  }
BNDatabaseGenerator(const BayesNet< GUM_SCALAR > &bn)
default constructor
+ Here is the call graph for this function:

◆ BNDatabaseGenerator() [2/3]

template<typename GUM_SCALAR>
gum::learning::BNDatabaseGenerator< GUM_SCALAR >::BNDatabaseGenerator ( const BNDatabaseGenerator< GUM_SCALAR > &  )
privatedelete

◆ BNDatabaseGenerator() [3/3]

template<typename GUM_SCALAR>
gum::learning::BNDatabaseGenerator< GUM_SCALAR >::BNDatabaseGenerator ( BNDatabaseGenerator< GUM_SCALAR > &&  )
privatedelete

Member Function Documentation

◆ _varOrderFromCSV_() [1/2]

template<typename GUM_SCALAR >
std::vector< Idx > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_varOrderFromCSV_ ( const std::string &  csvFileURL,
const std::string &  csvSeparator = "," 
) const
private

returns varOrder from a csv file

Definition at line 382 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

383  {
384  std::ifstream csvFile(csvFileURL);
385  std::vector< Idx > varOrder;
386  if (csvFile) {
387  varOrder = _varOrderFromCSV_(csvFile, csvSeparator);
388  csvFile.close();
389  } else {
390  GUM_ERROR(NotFound, "csvFileURL does not exist")
391  }
392 
393  return varOrder;
394  }
std::vector< Idx > _varOrderFromCSV_(const std::string &csvFileURL, const std::string &csvSeparator=",") const
returns varOrder from a csv file
std::vector< Idx > varOrder() const
returns variable order indexes
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51
+ Here is the call graph for this function:

◆ _varOrderFromCSV_() [2/2]

template<typename GUM_SCALAR >
std::vector< Idx > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_varOrderFromCSV_ ( std::ifstream &  csvFile,
const std::string &  csvSeparator = "," 
) const
private

returns varOrder from a csv file

Definition at line 399 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

400  {
401  std::string line;
402  std::vector< std::string > header_found;
403  header_found.reserve(_nbVars_);
404  while (std::getline(csvFile, line)) {
405  std::size_t i = 0;
406  auto pos = line.find(csvSeparator);
407  while (pos != std::string::npos) {
408  header_found.push_back(line.substr(i, pos - i));
409  pos += csvSeparator.length();
410  i = pos;
411  pos = line.find(csvSeparator, pos);
412 
413  if (pos == std::string::npos) header_found.push_back(line.substr(i, line.length()));
414  }
415  break;
416  }
417 
418  std::vector< Size > varOrder;
419  varOrder.reserve(_nbVars_);
420 
421  for (const auto& hf: header_found) {
422  varOrder.push_back(_names2ids_.second(hf));
423  }
424 
425  return varOrder;
426  }
const T2 & second(const T1 &first) const
Returns the second value of a pair given its first value.
Bijection< std::string, NodeId > _names2ids_
bijection nodes names
std::vector< Idx > varOrder() const
returns variable order indexes
+ Here is the call graph for this function:

◆ database()

template<typename GUM_SCALAR >
std::vector< std::vector< Idx > > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::database ( ) const

generates database according to bn into a std::vector

returns database using specified data order

Warning
: makes a copy of the whole database

Definition at line 265 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

265  {
266  if (!_drawnSamples_) GUM_ERROR(OperationNotAllowed, "drawSamples() must be called first.")
267 
268  auto db(_database_);
269  for (Idx i = 0; i < _database_.size(); ++i) {
270  for (Idx j = 0; j < _nbVars_; ++j) {
271  db.at(i).at(j) = (Idx)_database_.at(i).at(_varOrder_.at(j));
272  }
273  }
274  return db;
275  }
std::vector< std::vector< Idx > > _database_
generated database
std::vector< Idx > _varOrder_
variable order in generated database
bool _drawnSamples_
whether drawSamples has been already called.
Size Idx
Type for indexes.
Definition: types.h:52
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51
+ Here is the call graph for this function:

◆ drawSamples()

template<typename GUM_SCALAR >
double gum::learning::BNDatabaseGenerator< GUM_SCALAR >::drawSamples ( Size  nbSamples)

generate and stock database, returns log2likelihood using ProgressNotifier as notification

draw instances from bn

Definition at line 64 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

64  {
65  Timer timer;
66  int progress = 0;
67 
68  timer.reset();
69 
70  if (onProgress.hasListener()) { GUM_EMIT2(onProgress, progress, timer.step()); }
71  _database_.clear();
72  _database_.resize(nbSamples);
73  for (auto& row: _database_) {
74  row.resize(_nbVars_);
75  }
76  // get the order in which the nodes will be sampled
77  const gum::Sequence< gum::NodeId >& topOrder = _bn_.topologicalOrder();
78  std::vector< gum::Instantiation > instantiations;
79 
80  // create instantiations in advance
81  for (Idx node = 0; node < _nbVars_; ++node)
82  instantiations.push_back(gum::Instantiation(_bn_.cpt(node)));
83 
84  // create the random generator
85  std::random_device rd;
86  std::mt19937 gen(rd());
87  std::uniform_real_distribution<> distro(0.0, 1.0);
88 
89  // perform the sampling
90  _log2likelihood_ = 0;
91  const gum::DAG& dag = _bn_.dag();
92  for (Idx i = 0; i < nbSamples; ++i) {
93  if (onProgress.hasListener()) {
94  int p = int((i * 100) / nbSamples);
95  if (p != progress) {
96  progress = p;
97  GUM_EMIT2(onProgress, progress, timer.step());
98  }
99  }
100  std::vector< Idx >& sample = _database_.at(i);
101  for (Idx j = 0; j < _nbVars_; ++j) {
102  const gum::NodeId node = topOrder[j];
103  const auto& var = _bn_.variable(node);
104  const auto& cpt = _bn_.cpt(node);
105 
106  gum::Instantiation& inst = instantiations[node];
107  for (auto par: dag.parents(node))
108  inst.chgVal(_bn_.variable(par), sample.at(par));
109 
110  const double nb = distro(gen);
111  double cumul = 0.0;
112  for (inst.chgVal(var, 0); !inst.end(); inst.incVar(var)) {
113  cumul += cpt[inst];
114  if (cumul >= nb) break;
115  }
116 
117  if (inst.end()) inst.chgVal(var, var.domainSize() - 1);
118  sample.at(node) = inst.val(var);
119 
120  _log2likelihood_ += std::log2(_bn_.cpt(node)[inst]);
121  }
122  }
123 
124  _drawnSamples_ = true;
125 
126  if (onProgress.hasListener()) {
127  std::stringstream ss;
128  ss << "Database of size " << nbSamples << " generated in " << timer.step()
129  << " seconds. Log2likelihood : " << _log2likelihood_;
130  GUM_EMIT1(onStop, ss.str());
131  }
132 
133  return _log2likelihood_;
134  }
std::vector< std::vector< Idx > > _database_
generated database
Signaler2< Size, double > onProgress
Progression (percent) and time.
#define GUM_EMIT1(signal, arg1)
Definition: signaler1.h:41
const NodeSet & parents(NodeId id) const
returns the set of nodes with arc ingoing to a given node
The generic class for storing (ordered) sequences of objects.
Definition: sequence.h:1017
Instantiation & chgVal(const DiscreteVariable &v, Idx newval)
Assign newval to variable v in the Instantiation.
void incVar(const DiscreteVariable &v)
Operator increment for variable v only.
Idx val(Idx i) const
Returns the current value of the variable at position i.
#define GUM_EMIT2(signal, arg1, arg2)
Definition: signaler2.h:41
bool _drawnSamples_
whether drawSamples has been already called.
double _log2likelihood_
log2Likelihood of generated samples
const BayesNet< GUM_SCALAR > & _bn_
Bayesian network.
Class for assigning/browsing values to tuples of discrete variables.
Definition: instantiation.h:82
Signaler1< const std::string &> onStop
with a possible explanation for stopping
Base class for dag.
Definition: DAG.h:101
Size NodeId
Type for node ids.
Definition: graphElements.h:97
Potential< GUM_SCALAR > log2(const Potential< GUM_SCALAR > &arg)
Definition: potential.h:590
bool end() const
Returns true if the Instantiation reached the end.
+ Here is the call graph for this function:

◆ log2likelihood()

template<typename GUM_SCALAR >
double gum::learning::BNDatabaseGenerator< GUM_SCALAR >::log2likelihood ( ) const

returns log2Likelihood of generated samples

Definition at line 374 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

374  {
375  if (!_drawnSamples_) { GUM_ERROR(OperationNotAllowed, "drawSamples() must be called first.") }
376  return _log2likelihood_;
377  }
bool _drawnSamples_
whether drawSamples has been already called.
double _log2likelihood_
log2Likelihood of generated samples
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51
+ Here is the call graph for this function:

◆ operator=() [1/2]

template<typename GUM_SCALAR>
BNDatabaseGenerator& gum::learning::BNDatabaseGenerator< GUM_SCALAR >::operator= ( const BNDatabaseGenerator< GUM_SCALAR > &  )
privatedelete

◆ operator=() [2/2]

template<typename GUM_SCALAR>
BNDatabaseGenerator& gum::learning::BNDatabaseGenerator< GUM_SCALAR >::operator= ( BNDatabaseGenerator< GUM_SCALAR > &&  )
privatedelete

◆ setAntiTopologicalVarOrder()

template<typename GUM_SCALAR >
void gum::learning::BNDatabaseGenerator< GUM_SCALAR >::setAntiTopologicalVarOrder ( )

set columns in antiTopoligical order

Definition at line 329 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

329  {
330  std::vector< Idx > varOrder;
331  varOrder.reserve(_nbVars_);
332  for (const auto& v: _bn_.topologicalOrder()) {
333  varOrder.push_back(v);
334  }
335  std::reverse(varOrder.begin(), varOrder.end());
336  setVarOrder(varOrder);
337  }
void setVarOrder(const std::vector< Idx > &varOrder)
change columns order
const BayesNet< GUM_SCALAR > & _bn_
Bayesian network.
std::vector< Idx > varOrder() const
returns variable order indexes
+ Here is the call graph for this function:

◆ setRandomVarOrder()

template<typename GUM_SCALAR >
void gum::learning::BNDatabaseGenerator< GUM_SCALAR >::setRandomVarOrder ( )

set columns in random order

Definition at line 341 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

341  {
342  std::vector< std::string > varOrder;
343  varOrder.reserve(_bn_.size());
344  for (const auto& var: _bn_.dag()) {
345  varOrder.push_back(_bn_.variable(var).name());
346  }
347  std::random_device rd;
348  std::mt19937 g(rd());
349  std::shuffle(varOrder.begin(), varOrder.end(), g);
350  setVarOrder(varOrder);
351  }
void setVarOrder(const std::vector< Idx > &varOrder)
change columns order
const BayesNet< GUM_SCALAR > & _bn_
Bayesian network.
std::vector< Idx > varOrder() const
returns variable order indexes
+ Here is the call graph for this function:

◆ setTopologicalVarOrder()

template<typename GUM_SCALAR >
void gum::learning::BNDatabaseGenerator< GUM_SCALAR >::setTopologicalVarOrder ( )

set columns in topoligical order

Definition at line 318 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

318  {
319  std::vector< Idx > varOrder;
320  varOrder.reserve(_nbVars_);
321  for (const auto& v: _bn_.topologicalOrder()) {
322  varOrder.push_back(v);
323  }
324  setVarOrder(varOrder);
325  }
void setVarOrder(const std::vector< Idx > &varOrder)
change columns order
const BayesNet< GUM_SCALAR > & _bn_
Bayesian network.
std::vector< Idx > varOrder() const
returns variable order indexes
+ Here is the call graph for this function:

◆ setVarOrder() [1/2]

template<typename GUM_SCALAR >
void gum::learning::BNDatabaseGenerator< GUM_SCALAR >::setVarOrder ( const std::vector< Idx > &  varOrder)

change columns order

Definition at line 279 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

279  {
280  if (varOrder.size() != _nbVars_)
281  GUM_ERROR(FatalError, "varOrder's size must be equal to the number of variables")
282 
283  std::vector< bool > usedVars(_nbVars_, false);
284  for (const auto& i: varOrder) {
285  if (i >= _nbVars_) GUM_ERROR(FatalError, "varOrder contains invalid variables")
286  if (usedVars.at(i)) GUM_ERROR(FatalError, "varOrder must not have repeated variables")
287  usedVars.at(i) = true;
288  }
289 
290  if (std::find(usedVars.begin(), usedVars.end(), false) != usedVars.end()) {
291  GUM_ERROR(FatalError, "varOrder must contain all variables")
292  }
293 
295  }
STL namespace.
std::vector< Idx > _varOrder_
variable order in generated database
std::vector< Idx > varOrder() const
returns variable order indexes
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51
+ Here is the call graph for this function:

◆ setVarOrder() [2/2]

template<typename GUM_SCALAR >
void gum::learning::BNDatabaseGenerator< GUM_SCALAR >::setVarOrder ( const std::vector< std::string > &  varOrder)

change columns order using variable names

Definition at line 300 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

300  {
301  std::vector< Idx > varOrderIdx;
302  varOrderIdx.reserve(varOrder.size());
303  for (const auto& vname: varOrder) {
304  varOrderIdx.push_back(_names2ids_.second(vname));
305  }
306  setVarOrder(varOrderIdx);
307  }
const T2 & second(const T1 &first) const
Returns the second value of a pair given its first value.
void setVarOrder(const std::vector< Idx > &varOrder)
change columns order
Bijection< std::string, NodeId > _names2ids_
bijection nodes names
+ Here is the call graph for this function:

◆ setVarOrderFromCSV()

template<typename GUM_SCALAR >
void gum::learning::BNDatabaseGenerator< GUM_SCALAR >::setVarOrderFromCSV ( const std::string &  csvFileURL,
const std::string &  csvSeparator = "," 
)

change columns order according to a csv file

Definition at line 311 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

312  {
313  setVarOrder(_varOrderFromCSV_(csvFileURL, csvSeparator));
314  }
std::vector< Idx > _varOrderFromCSV_(const std::string &csvFileURL, const std::string &csvSeparator=",") const
returns varOrder from a csv file
void setVarOrder(const std::vector< Idx > &varOrder)
change columns order
+ Here is the call graph for this function:

◆ toCSV()

template<typename GUM_SCALAR >
void gum::learning::BNDatabaseGenerator< GUM_SCALAR >::toCSV ( const std::string &  csvFileURL,
bool  useLabels = true,
bool  append = false,
std::string  csvSeparator = ",",
bool  checkOnAppend = false 
) const

generates csv database according to bn

generates database, and writes csv file

Definition at line 138 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

142  {
143  if (!_drawnSamples_) { GUM_ERROR(OperationNotAllowed, "drawSamples() must be called first.") }
144 
145  if (csvSeparator.find("\n") != std::string::npos) {
146  GUM_ERROR(InvalidArgument, "csvSeparator must not contain end-line characters")
147  }
148 
149  bool includeHeader = true;
150  if (append) {
151  std::ifstream csvFile(csvFileURL);
152  if (csvFile) {
153  auto varOrder = _varOrderFromCSV_(csvFile, csvSeparator);
154  if (checkOnAppend && varOrder != _varOrder_) {
155  GUM_ERROR(OperationNotAllowed,
156  "Inconsistent variable order in csvFile when appending. You "
157  "can use setVarOrderFromCSV(url) function to get the right "
158  "order. You could also set parameter checkOnAppend=false if you "
159  "know what you are doing.");
160  }
161  includeHeader = false;
162  }
163  csvFile.close();
164  }
165 
166 
167  auto ofstreamFlag = append ? std::ofstream::app : std::ofstream::out;
168 
169  std::ofstream os(csvFileURL, ofstreamFlag);
170  bool firstCol = true;
171  if (includeHeader) {
172  for (const auto& i: _varOrder_) {
173  if (firstCol) {
174  firstCol = false;
175  } else {
176  os << csvSeparator;
177  }
178  os << _bn_.variable(i).name();
179  }
180  }
181  os << std::endl;
182 
183  bool firstRow = true;
184  for (const auto& row: _database_) {
185  if (firstRow) {
186  firstRow = false;
187  } else {
188  os << std::endl;
189  }
190  firstCol = true;
191  for (const auto& i: _varOrder_) {
192  if (firstCol) {
193  firstCol = false;
194  } else {
195  os << csvSeparator;
196  }
197  if (useLabels) {
198  os << _bn_.variable(i).label(row.at(i));
199  } else {
200  os << row[i];
201  }
202  }
203  }
204 
205  os.close();
206  }
std::vector< Idx > _varOrderFromCSV_(const std::string &csvFileURL, const std::string &csvSeparator=",") const
returns varOrder from a csv file
std::vector< std::vector< Idx > > _database_
generated database
std::vector< Idx > _varOrder_
variable order in generated database
bool _drawnSamples_
whether drawSamples has been already called.
const BayesNet< GUM_SCALAR > & _bn_
Bayesian network.
std::vector< Idx > varOrder() const
returns variable order indexes
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51
+ Here is the call graph for this function:

◆ toDatabaseTable()

template<typename GUM_SCALAR >
DatabaseTable gum::learning::BNDatabaseGenerator< GUM_SCALAR >::toDatabaseTable ( bool  useLabels = true) const

generates a DatabaseVectInRAM

Definition at line 210 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

210  {
211  if (!_drawnSamples_) GUM_ERROR(OperationNotAllowed, "proceed() must be called first.")
212 
213  DatabaseTable<> db;
214  std::vector< std::string > varNames;
215  varNames.reserve(_nbVars_);
216  for (const auto& i: _varOrder_) {
217  varNames.push_back(_names2ids_.first(i));
218  }
219 
220  // create the translators
221  for (std::size_t i = 0; i < _nbVars_; ++i) {
222  const Variable& var = _bn_.variable(_varOrder_[i]);
223  db.insertTranslator(var, i);
224  }
225 
226 
227  // db.setVariableNames(varNames);
228  // db.setVariableNames(varOrderNames());
229 
230  if (useLabels) {
231  std::vector< std::string > xrow(_nbVars_);
232  for (const auto& row: _database_) {
233  for (Idx i = 0; i < _nbVars_; ++i) {
234  Idx j = _varOrder_.at(i);
235  xrow[i] = _bn_.variable(j).label(row.at(j));
236  }
237  db.insertRow(xrow);
238  }
239  } else {
240  std::vector< DBTranslatedValueType > translatorType(_nbVars_);
241  for (std::size_t i = 0; i < _nbVars_; ++i) {
242  translatorType[i] = db.translator(i).getValType();
243  }
244  DBRow< DBTranslatedValue > xrow(_nbVars_);
246  for (const auto& row: _database_) {
247  for (Idx i = 0; i < _nbVars_; ++i) {
248  Idx j = _varOrder_.at(i);
249 
250  if (translatorType[i] == DBTranslatedValueType::DISCRETE)
251  xrow[i].discr_val = std::size_t(row.at(j));
252  else
253  xrow[i].cont_val = float(row.at(j));
254  }
255  }
256  db.insertRow(xrow, xmiss);
257  }
258 
259  return db;
260  }
std::vector< std::vector< Idx > > _database_
generated database
const T1 & first(const T2 &second) const
Returns the first value of a pair given its second value.
STL namespace.
std::vector< Idx > _varOrder_
variable order in generated database
bool _drawnSamples_
whether drawSamples has been already called.
The class representing a tabular database as used by learning tasks.
const BayesNet< GUM_SCALAR > & _bn_
Bayesian network.
Bijection< std::string, NodeId > _names2ids_
bijection nodes names
#define GUM_ERROR(type, msg)
Definition: exceptions.h:51
+ Here is the call graph for this function:

◆ varOrder()

template<typename GUM_SCALAR >
std::vector< Idx > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::varOrder ( ) const

returns variable order indexes

Definition at line 356 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

356  {
357  return _varOrder_;
358  }
std::vector< Idx > _varOrder_
variable order in generated database
+ Here is the call graph for this function:

◆ varOrderNames()

template<typename GUM_SCALAR >
std::vector< std::string > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::varOrderNames ( ) const

returns variable order.

Definition at line 362 of file BNDatabaseGenerator_tpl.h.

References gum::learning::genericBNLearner::Database::Database().

362  {
363  std::vector< std::string > varNames;
364  varNames.reserve(_nbVars_);
365  for (const auto& i: _varOrder_) {
366  varNames.push_back(_names2ids_.first(i));
367  }
368 
369  return varNames;
370  }
const T1 & first(const T2 &second) const
Returns the first value of a pair given its second value.
std::vector< Idx > _varOrder_
variable order in generated database
Bijection< std::string, NodeId > _names2ids_
bijection nodes names
+ Here is the call graph for this function:

Member Data Documentation

◆ _bn_

template<typename GUM_SCALAR>
const BayesNet< GUM_SCALAR >& gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_bn_
private

Bayesian network.

Definition at line 149 of file BNDatabaseGenerator.h.

◆ _database_

template<typename GUM_SCALAR>
std::vector< std::vector< Idx > > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_database_
private

generated database

Definition at line 158 of file BNDatabaseGenerator.h.

◆ _drawnSamples_

template<typename GUM_SCALAR>
bool gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_drawnSamples_ = false
private

whether drawSamples has been already called.

Definition at line 164 of file BNDatabaseGenerator.h.

◆ _log2likelihood_

template<typename GUM_SCALAR>
double gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_log2likelihood_ = 0
private

log2Likelihood of generated samples

Definition at line 167 of file BNDatabaseGenerator.h.

◆ _names2ids_

template<typename GUM_SCALAR>
Bijection< std::string, NodeId > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_names2ids_
private

bijection nodes names

Definition at line 152 of file BNDatabaseGenerator.h.

◆ _nbVars_

template<typename GUM_SCALAR>
Size gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_nbVars_
private

number of variables

Definition at line 155 of file BNDatabaseGenerator.h.

◆ _varOrder_

template<typename GUM_SCALAR>
std::vector< Idx > gum::learning::BNDatabaseGenerator< GUM_SCALAR >::_varOrder_
private

variable order in generated database

Definition at line 161 of file BNDatabaseGenerator.h.

◆ onProgress

Signaler2< Size, double > gum::ProgressNotifier::onProgress
inherited

Progression (percent) and time.

Definition at line 47 of file progressNotification.h.

◆ onStop

Signaler1< const std::string& > gum::ProgressNotifier::onStop
inherited

with a possible explanation for stopping

Definition at line 50 of file progressNotification.h.


The documentation for this class was generated from the following files: