Cleaned up example_imagesegmentation
[libdai.git] / ChangeLog
index 9a81f7e..1d475a5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,85 @@
-git HEAD
---------
-
-TODO:
-* Write unit tests for newly added functions
-
+git master HEAD
+---------------
+
+* Added examples/example_imagesegmentation
+* [Ofer Meshi] Added a script for converting from FastInf to libDAI format
+* Made all "verbose" properties optional
+* Unit tests should now also work on WINDOWS
+* [Stefano Pellegrini] Fixed bug in JTree::findMaximum()
 * Fixed some bugs in the MatLab interface build system
 * Fixed a bug in utils/fginfo.cpp
+* Added utils/uai2fg, a utility to convert the UAI inference competition file
+  formats to the libDAI factor graph file format
+* utils/createfg now has a new factor type ('ISINGUNIFORM') and the old
+  'ISING' factor type has been renamed to 'ISINGGAUSS'
+* tests/testdai option "marginals" now has five possible values: NONE
+  outputs no marginals, VAR only variable marginals, FAC only factor
+  marginals, VARFAC both types of marginals, and ALL outputs all
+  marginals calculated by the algorithm.
+* Improved mf.h/cpp:
+  - Added an "init" option that allows to initialize randomly
+  - Added an "updates" option that allows to choose between standard
+    mean field and "hard-spin" mean field
+* Improved exactinf.h/cpp:
+  - Added ExactInf::findMaximum()
+* Improved treeep.h/cpp:
+  - changed TreeEP::construct( const RootedTree& ) into
+    TreeEP::construct( const FactorGraph&, const RootedTree& )
+  - Now also supports disconnected factor graphs
+* Improved jtree.h/cpp:
+  - changed JTree::construct( const std::vector<VarSet>&, bool ) into
+    JTree::construct( const FactorGraph&, const std::vector<VarSet>&, bool )
+  - changed JTree::GenerateJT( const std::vector<VarSet> & )
+    into JTree::GenerateJT( const FactorGraph &, const std::vector<VarSet> & )
+  - Now also supports disconnected factor graphs
+  - Fixed a bug in JTree::findMaximum() and simplified the code
+* Improved regiongraph.h/cpp:
+  - Made (previously public) members RegionGraph::G, RegionGraph::ORs,
+    RegionGraph::IRs and RegionGraph::fac2OR protected.
+  - Removed partial constructor RegionGraph::RegionGraph( const FactorGraph& fg )
+  - Added some error checking code
+  - Renamed RegionGraph::calcCountingNumbers() into
+    RegionGraph::calcCVMCountingNumbers() and made it protected, because
+    exposing it to the world serves no purpose.
+  - Added RegionGraph::DAG() accessor which returns a reference to the 
+    region graph DAG structure (currently implemented as a BipartiteGraph)
+  - Made RegionGraph::RecomputeORs(), RegionGraph::RecomputeORs( const VarSet& )
+    and RegionGraph::RecomputeOR( size_t ) protected and renamed them by changing
+    the "Recompute" into "recompute", because exposing them to the world serves no 
+    purpose.
+  - RegionGraph::WriteToFile( const char* ), RegionGraph::ReadFromFile( const char * )
+    and RegionGraph::printDot( std::ostream& ) incorrectly called their respective
+    FactorGraph ancestor methods; this has been corrected by letting them throw a
+    NOT_IMPLEMENTED exception.
+  - Changed the way a RegionGraph is streamed to an std::ostream.
+* Improved clustergraph.h/cpp:
+  - Made (previously public) members ClusterGraph::G, ClusterGraph::vars and 
+    ClusterGraph::clusters private and added ClusterGraph::bipGraph(), 
+    ClusterGraph::vars() and ClusterGraph::clusters() methods which offer 
+    read-only access to these members.
+  - Deprecated ClusterGraph::toVector()
+  - Added ClusterGraph::nrVars() method
+  - Renamed ClusterGraph::size() method into ClusterGraph::nrClusters()
+  - Added ClusterGraph::var( size_t ) method
+  - Added ClusterGraph::cluster( size_t ) method
+* Improved factorgraph.h/cpp:
+  - FactorGraph::clamped() now contains a delta factor for the clamped variable
+  - Renamed FactorGraph::Cliques() into FactorGraph::maximalFactorDomains()
+    and made it faster
+  - Added FactorGraph::MarkovGraph()
+  - Fixed bug in FactorGraph::clone()
+  - FactorGraph::findVars( const VarSet& ) now returns a SmallSet<size_t>
+    and its argument now has a const-qualifier (which fixes a small bug).
+  - Made (previously public) member FactorGraph::G private and added the 
+    FactorGraph::bipGraph() method, which offers read-only access to it.
+  - Deprecated the iterator interface:
+    o FactorGraph::iterator typedef
+    o FactorGraph::const_iterator typedef
+    o FactorGraph::begin() members
+    o FactorGraph::end() members
+  - Deprecated FactorGraph::factor(size_t) which offered write access to a factor
+    because using this functionality in the descendant RegionGraph is dangerous,
+    as the outer regions are not automatically recomputed.
 * Improved factor.h/cpp:
   - Fixed bug in min( const TFactor<T> &, const TFactor<T> & )
   - Fixed bug in max( const TFactor<T> &, const TFactor<T> & )
@@ -14,10 +88,10 @@ TODO:
   - Added TFactor<T>::takeLog( bool )
   - Added TFactor<T>::operator-() const
   - Added TFactor<T>::sumAbs() const
-  - Added TFactor<T>::operator=( const TFactor<T> &y )
+  - Added TFactor<T>::operator==( const TFactor<T> &y )
   - Renamed TFactor<T>::states() into TFactor<T>::nrStates()
-  - Added get(size_t) and set(size_t,T) operators; get() is 
-    equivalent to "operator[](size_t) const" and set() should
+  - Added TFactor<T>::get(size_t) and TFactor<T>::set(size_t,T) operators; 
+    get() is equivalent to "operator[](size_t) const" and set() should
     be used instead of the non-const operator[], which has been deprecated
 * Improved prob.h/cpp:
   - Deprecated TProb::TProb( TIterator begin, TIterator end, size_t sizeHint=0 )
@@ -32,8 +106,8 @@ TODO:
   - Fixed bug by renaming TProb<T>::operator<=() to TProb<T>::operator<()
   - TProb<T>& operator/= (T x) now yields 0 when dividing by 0
   - Changed format of TProb<T> when streamed to an ostream
-  - Added get(size_t) and set(size_t,T) operators; get() is 
-    equivalent to "operator[](size_t) const" and set() should
+  - Added TProb<T>::get(size_t) and TProb<T>::set(size_t,T) operators; 
+    get() is equivalent to "operator[](size_t) const" and set() should
     be used instead of the non-const operator[], which has been deprecated
   - Added TProb<T>::resize(size_t)
 * Improved index.h/cpp:
@@ -48,17 +122,18 @@ TODO:
   - Added PropertySet::erase()
   - Fixed bug in PropertySet::setAsString<T>()
 * Improved util.h/cpp:
+  - Added std::string toString( const T& x )
   - Fixed a bug in rnd_seed()
-  - Removed Real max( const std::vector<Real> &v )
+  - Removed max( const std::vector<Real> &v )
 * Improved weightedgraph.h/cpp:
   - Renamed MaxSpanningTreePrims into MaxSpanningTree
   - Renamed MinSpanningTreePrims into MinSpanningTree
   - Added option to MaxSpanningTree and MinSpanningTree for
     choosing between Prim's algorithm and Kruskal's algorithm
-  - More error checking in RootedTree constructor
+  - Better error checking in RootedTree constructor
   - The vertices in DEdge and UEdge are now named "first" and "second"
     for compatibility with a std::pair<size_t,size_t>
-  - Added GraphEL( const GraphAL& G ) constructor
+  - Added GraphEL::GraphEL( const GraphAL& G ) constructor
 * Improved bipgraph.h/cpp:
   - Fixed bug in BipartiteGraph::eraseNode1()
   - Fixed bug in BipartiteGraph::eraseNode2()
@@ -66,8 +141,13 @@ TODO:
   - Added BipartiteGraph::hasEdge()
   - Added BipartiteGraph::findNb1()
   - Added BipartiteGraph::findNb2()
+  - Added BipartiteGraph::nb1Set()
+  - Added BipartiteGraph::nb2Set()
   - BipartiteGraph::delta1() and BipartiteGraph::delta2() now 
     return a SmallSet<size_t> instead of a vector<size_t>
+  - Added BipartiteGraph::operator==( const BipartiteGraph& )
+  - Added BipartiteGraph( size_t nr1, size_t nr2 ) constructor
+  - Added operator<<( std::ostream&, const BipartiteGraph& )
 * Improved graph.h/cpp:
   - Fixed bug in GraphAL::nrEdges()
   - Fixed bug in GraphAL::addEdge()
@@ -77,16 +157,20 @@ TODO:
   - Fixed bug in createGraphGrid3D()
   - Fixed bug in createGraphRegular()
   - Added GraphAL::hasEdge(size_t,size_t)
+  - Added GraphAL::operator==( const GraphAL& )
+  - Added operator<<( std::ostream&, const GraphAL& )
 * Improved smallset.h/cpp:
   - The sizeHint argument of the iterator constructor
      SmallSet::SmallSet( TIterator begin, TIterator end, size_t sizeHint=0 )
     no longer has a default value in order to avoid confusion with the
      SmallSet::SmallSet( const T &t1, const T &t2 )
     constructor.
+  - Added SmallSet::insert( const T& t ) method
 * Removed RandomDRegularGraph(), please use createGraphRegular() instead
 * Compressed Makefile
 * Added unit tests for var, smallset, varset, graph, bipgraph,
-  weightedgraph, enum, util, properties, index, prob, factor
+  weightedgraph, enum, util, exceptions, properties, index, prob, 
+  factor, factorgraph, clustergraph, regiongraph, daialg, alldai
 * Added unit testing framework
 * Added initialization of TRWBP weights by sampling spanning trees
 * Cleaned up MR code: