Extended InfAlg interface with setProperties(), getProperties() and printProperties()
authorJoris Mooij <joris.mooij@tuebingen.mpg.de>
Tue, 3 Nov 2009 18:10:31 +0000 (19:10 +0100)
committerJoris Mooij <joris.mooij@tuebingen.mpg.de>
Tue, 3 Nov 2009 18:10:31 +0000 (19:10 +0100)
13 files changed:
ChangeLog
include/dai/bbp.h
include/dai/bp.h
include/dai/cbp.h
include/dai/daialg.h
include/dai/exactinf.h
include/dai/gibbs.h
include/dai/hak.h
include/dai/jtree.h
include/dai/lc.h
include/dai/mf.h
include/dai/mr.h
include/dai/treeep.h

index e47d40f..19ec573 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+* Extended InfAlg interface with setProperties(), getProperties() and printProperties()
 * Declared class Diffs as obsolete
 * Declared calcPairBeliefsNew() as obsolete (its functionality is now part
   of calcPairBeliefs())
index 28fa0ba..ca8b763 100644 (file)
@@ -10,6 +10,7 @@
 
 /// \file
 /// \brief Defines class BBP [\ref EaG09]
+/// \todo Fit more closely into libDAI framework
 /// \todo Improve documentation
 
 
index 17560e8..c88b2e0 100644 (file)
@@ -137,6 +137,9 @@ class BP : public DAIAlgFG {
         virtual Real run();
         virtual Real maxDiff() const { return _maxdiff; }
         virtual size_t Iterations() const { return _iters; }
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
     /// \name Additional interface specific for BP
@@ -157,19 +160,6 @@ class BP : public DAIAlgFG {
         }
     //@}
 
-    /// \name Managing parameters (which are stored in BP::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding BP::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
-    //@}
-
     private:
         const Prob & message(size_t i, size_t _I) const { return _edges[i][_I].message; }
         Prob & message(size_t i, size_t _I) { return _edges[i][_I].message; }
index 1afdc3f..7b572f6 100644 (file)
@@ -125,6 +125,9 @@ class CBP : public DAIAlgFG {
         virtual Real run();
         virtual Real maxDiff() const { return _maxdiff; }
         virtual size_t Iterations() const { return _iters; }
+        virtual void setProperties( const PropertySet &opts ) { props.set( opts ); }
+        virtual PropertySet getProperties() const { return props.get(); }
+        virtual std::string printProperties() const { return props.toString(); }
     //@}
 
         //----------------------------------------------------------------
index bd0a8e0..86d633e 100644 (file)
@@ -22,6 +22,7 @@
 #include <vector>
 #include <dai/factorgraph.h>
 #include <dai/regiongraph.h>
+#include <dai/properties.h>
 
 
 namespace dai {
@@ -147,6 +148,19 @@ class InfAlg {
         /// Restore the factors involving the variables in \a vs from their backup copies
         virtual void restoreFactors( const VarSet &vs ) = 0;
     //@}
+
+    /// \name Managing parameters
+    //@{
+        /// Set parameters of this inference algorithm.
+        /** The parameters are set according to the PropertySet \a opts. 
+         *  The values can be stored either as std::string or as the type of the corresponding MF::props member.
+         */
+        virtual void setProperties( const PropertySet &opts ) = 0;
+        /// Returns parameters of this inference algorithm converted into a PropertySet.
+        virtual PropertySet getProperties() const = 0;
+        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
+        virtual std::string printProperties() const = 0;
+    //@}
 };
 
 
index 68f6b52..48f15e4 100644 (file)
@@ -79,19 +79,9 @@ class ExactInf : public DAIAlgFG {
         virtual Real run();
         virtual Real maxDiff() const { DAI_THROW(NOT_IMPLEMENTED); return 0.0; }
         virtual size_t Iterations() const { DAI_THROW(NOT_IMPLEMENTED); return 0; }
-    //@}
-
-    /// \name Managing parameters (which are stored in ExactInf::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding ExactInf::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
     private:
index 86ffab1..8c08990 100644 (file)
@@ -75,6 +75,9 @@ class Gibbs : public DAIAlgFG {
         virtual Real run();
         virtual Real maxDiff() const { DAI_THROW(NOT_IMPLEMENTED); return 0.0; }
         virtual size_t Iterations() const { return props.iters; }
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
 
@@ -88,19 +91,6 @@ class Gibbs : public DAIAlgFG {
         const std::vector<size_t>& state() const { return _state; }
     //@}
 
-    /// \name Managing parameters (which are stored in Gibbs::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding Gibbs::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
-    //@}
-
     private:
         void updateCounts();
         Prob getVarDist( size_t i );
index fb97ef6..618c225 100644 (file)
@@ -103,6 +103,9 @@ class HAK : public DAIAlgRG {
         virtual Real run();
         virtual Real maxDiff() const { return _maxdiff; }
         virtual size_t Iterations() const { return _iters; }
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
 
@@ -117,19 +120,6 @@ class HAK : public DAIAlgRG {
         Real doDoubleLoop();
     //@}
 
-    /// \name Managing parameters (which are stored in HAK::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding HAK::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
-    //@}
-
     private:
         void constructMessages();
         void findLoopClusters( const FactorGraph &fg, std::set<VarSet> &allcl, VarSet newcl, const Var & root, size_t length, VarSet vars );
index 543b489..799cfe4 100644 (file)
@@ -91,6 +91,9 @@ class JTree : public DAIAlgRG {
         virtual Real run();
         virtual Real maxDiff() const { return 0.0; }
         virtual size_t Iterations() const { return 1UL; }
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
 
@@ -120,19 +123,6 @@ class JTree : public DAIAlgRG {
          */
         std::vector<std::size_t> findMaximum() const;
     //@}
-
-    /// \name Managing parameters (which are stored in JTree::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding JTree::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
-    //@}
 };
 
 
index 06af1cb..3909483 100644 (file)
@@ -107,6 +107,9 @@ class LC : public DAIAlgFG {
         virtual Real run();
         virtual Real maxDiff() const { return _maxdiff; }
         virtual size_t Iterations() const { return _iters; }
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
     /// \name Additional interface specific for LC
@@ -122,19 +125,6 @@ class LC : public DAIAlgFG {
         const Factor &pancake (size_t i) const { return _pancakes[i]; };
         const Factor &cavitydist (size_t i) const { return _cavitydists[i]; };
     //@}
-
-    /// \name Managing parameters (which are stored in LC::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding LC::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
-    //@}
 };
 
 
index f8dd027..dd8cb87 100644 (file)
@@ -88,19 +88,9 @@ class MF : public DAIAlgFG {
         virtual Real run();
         virtual Real maxDiff() const { return _maxdiff; }
         virtual size_t Iterations() const { return _iters; }
-    //@}
-
-    /// \name Managing parameters (which are stored in MF::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding MF::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
     private:
index a6050b6..b8fafac 100644 (file)
@@ -101,19 +101,9 @@ class MR : public DAIAlgFG {
         virtual Real run();
         virtual Real maxDiff() const { return _maxdiff; }
         virtual size_t Iterations() const { return _iters; }
-    //@}
-
-    /// \name Managing parameters (which are stored in MR::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding MR::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
     private:
index 6838ca2..4f56094 100644 (file)
@@ -147,22 +147,12 @@ class TreeEP : public JTree {
         virtual Real run();
         virtual Real maxDiff() const { return _maxdiff; }
         virtual size_t Iterations() const { return _iters; }
+        virtual void setProperties( const PropertySet &opts );
+        virtual PropertySet getProperties() const;
+        virtual std::string printProperties() const;
     //@}
 
 
-    /// \name Managing parameters (which are stored in TreeEP::props)
-    //@{
-        /// Set parameters of this inference algorithm.
-        /** The parameters are set according to \a opts. 
-         *  The values can be stored either as std::string or as the type of the corresponding TreeEP::props member.
-         */
-        void setProperties( const PropertySet &opts );
-        /// Returns parameters of this inference algorithm converted into a PropertySet.
-        PropertySet getProperties() const;
-        /// Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
-        std::string printProperties() const;
-    //@}
-
     private:
         void ConstructRG( const DEdgeVec &tree );
         bool offtree( size_t I ) const { return (fac2OR[I] == -1U); }