From 1352a526c3d73e0209abb0797d26a0e8474d02e4 Mon Sep 17 00:00:00 2001 From: Tiago Gomes Date: Mon, 28 May 2012 14:42:20 +0100 Subject: [PATCH] refactor the way we export to libDAI --- packages/CLPBN/horus/FactorGraph.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/CLPBN/horus/FactorGraph.cpp b/packages/CLPBN/horus/FactorGraph.cpp index 5fab6eb85..78e146068 100644 --- a/packages/CLPBN/horus/FactorGraph.cpp +++ b/packages/CLPBN/horus/FactorGraph.cpp @@ -157,9 +157,9 @@ FactorGraph::readFromLibDaiFormat (const char* fileName) if (Globals::logDomain) { Util::log (params); } - reverse (vids.begin(), vids.end()); + std::reverse (vids.begin(), vids.end()); Factor f (vids, ranges, params); - reverse (vids.begin(), vids.end()); + std::reverse (vids.begin(), vids.end()); f.reorderArguments (vids); addFactor (f); } @@ -361,23 +361,25 @@ FactorGraph::exportToLibDaiFormat (const char* fileName) const } out << facNodes_.size() << endl << endl; for (size_t i = 0; i < facNodes_.size(); i++) { - const VarNodes& factorVars = facNodes_[i]->neighbors(); - out << factorVars.size() << endl; - for (size_t j = factorVars.size(); j-- > 0; ) { - out << factorVars[j]->varId() << " " ; + Factor f (facNodes_[i]->factor()); + out << f.nrArguments() << endl; + for (size_t j = 0; j < f.nrArguments(); j++) { + out << f.argument (j) << " " ; } out << endl; - for (size_t j = 0; j < factorVars.size(); j++) { - out << factorVars[j]->range() << " " ; + for (size_t j = 0; j < f.nrArguments(); j++) { + out << f.range (j) << " " ; } out << endl; - Params params = facNodes_[i]->factor().params(); + VarIds args = f.arguments(); + std::reverse (args.begin(), args.end()); + f.reorderArguments (args); if (Globals::logDomain) { - Util::exp (params); + Util::exp (f.params()); } - out << params.size() << endl; - for (size_t j = 0; j < params.size(); j++) { - out << j << " " << params[j] << endl; + out << f.size() << endl; + for (size_t j = 0; j < f.size(); j++) { + out << j << " " << f[j] << endl; } out << endl; }