67 #ifndef GUM_BN_DATABASE_GENERATOR 68 #define GUM_BN_DATABASE_GENERATOR 70 #include <agrum/BN/BayesNet.h> 71 #include <agrum/tools/core/progressNotification.h> 72 #include <agrum/tools/database/databaseTable.h> 78 template <
typename GUM_SCALAR >
79 class BNDatabaseGenerator:
public ProgressNotifier {
87 BNDatabaseGenerator(
const BayesNet< GUM_SCALAR >& bn);
90 ~BNDatabaseGenerator();
102 double drawSamples(Size nbSamples);
105 void toCSV(
const std::string& csvFileURL,
106 bool useLabels =
true,
108 std::string csvSeparator =
",",
109 bool checkOnAppend =
false)
const;
112 DatabaseTable<> toDatabaseTable(
bool useLabels =
true)
const;
116 std::vector< std::vector< Idx > > database()
const;
119 void setVarOrder(
const std::vector< Idx >& varOrder);
122 void setVarOrder(
const std::vector< std::string >& varOrder);
125 void setVarOrderFromCSV(
const std::string& csvFileURL,
const std::string& csvSeparator =
",");
128 void setTopologicalVarOrder();
131 void setAntiTopologicalVarOrder();
134 void setRandomVarOrder();
137 std::vector< Idx > varOrder()
const;
140 std::vector< std::string > varOrderNames()
const;
143 double log2likelihood()
const;
149 const BayesNet< GUM_SCALAR >& _bn_;
152 Bijection< std::string, NodeId > _names2ids_;
158 std::vector< std::vector< Idx > > _database_;
161 std::vector< Idx > _varOrder_;
164 bool _drawnSamples_ =
false;
167 double _log2likelihood_ = 0;
170 std::vector< Idx > _varOrderFromCSV_(
const std::string& csvFileURL,
171 const std::string& csvSeparator =
",")
const;
174 std::vector< Idx > _varOrderFromCSV_(std::ifstream& csvFile,
175 const std::string& csvSeparator =
",")
const;
178 BNDatabaseGenerator(
const BNDatabaseGenerator&) =
delete;
179 BNDatabaseGenerator(BNDatabaseGenerator&&) =
delete;
180 BNDatabaseGenerator& operator=(
const BNDatabaseGenerator&) =
delete;
181 BNDatabaseGenerator& operator=(BNDatabaseGenerator&&) =
delete;
185 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 186 extern template class BNDatabaseGenerator<
double >;
192 #include <agrum/BN/database/BNDatabaseGenerator_tpl.h>