refactor the way we export to libDAI

This commit is contained in:
Tiago Gomes 2012-05-28 14:42:20 +01:00
parent 250d122fc8
commit 1352a526c3

View File

@ -157,9 +157,9 @@ FactorGraph::readFromLibDaiFormat (const char* fileName)
if (Globals::logDomain) { if (Globals::logDomain) {
Util::log (params); Util::log (params);
} }
reverse (vids.begin(), vids.end()); std::reverse (vids.begin(), vids.end());
Factor f (vids, ranges, params); Factor f (vids, ranges, params);
reverse (vids.begin(), vids.end()); std::reverse (vids.begin(), vids.end());
f.reorderArguments (vids); f.reorderArguments (vids);
addFactor (f); addFactor (f);
} }
@ -361,23 +361,25 @@ FactorGraph::exportToLibDaiFormat (const char* fileName) const
} }
out << facNodes_.size() << endl << endl; out << facNodes_.size() << endl << endl;
for (size_t i = 0; i < facNodes_.size(); i++) { for (size_t i = 0; i < facNodes_.size(); i++) {
const VarNodes& factorVars = facNodes_[i]->neighbors(); Factor f (facNodes_[i]->factor());
out << factorVars.size() << endl; out << f.nrArguments() << endl;
for (size_t j = factorVars.size(); j-- > 0; ) { for (size_t j = 0; j < f.nrArguments(); j++) {
out << factorVars[j]->varId() << " " ; out << f.argument (j) << " " ;
} }
out << endl; out << endl;
for (size_t j = 0; j < factorVars.size(); j++) { for (size_t j = 0; j < f.nrArguments(); j++) {
out << factorVars[j]->range() << " " ; out << f.range (j) << " " ;
} }
out << endl; out << endl;
Params params = facNodes_[i]->factor().params(); VarIds args = f.arguments();
std::reverse (args.begin(), args.end());
f.reorderArguments (args);
if (Globals::logDomain) { if (Globals::logDomain) {
Util::exp (params); Util::exp (f.params());
} }
out << params.size() << endl; out << f.size() << endl;
for (size_t j = 0; j < params.size(); j++) { for (size_t j = 0; j < f.size(); j++) {
out << j << " " << params[j] << endl; out << j << " " << f[j] << endl;
} }
out << endl; out << endl;
} }