CHANGELOG.md 13.4 KB
Newer Older
Lionel's avatar
Lionel committed
1
# aGrUM Changelog
2

Pierre-Henri Wuillemin's avatar
Pierre-Henri Wuillemin committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16
## Changelog for 0.14.2

* aGrUM
  * bug fixes in learning (`3off2/miic` and `learnMixedGraph`)
  * removing redundant `gum::BNLearner::setAprioriWeight`
* pyAgrum
  * `pyAgrum.lib.notebook.showInference` can now use `svg` format
  * use of the `svg` format by default for graphs and drawings in `pyAgrum.lib.notebook`
  * refreshing notebooks
  * removing redundant `pyAgrum.BNLearner.setAprioriWeight`
  * adding forgotten wrapper for `pyAgrum.BNLearner.useAprioriBDeu`
  * changing the representation of causal model (special node for latent variable)
  * extending documentation

17 18 19 20 21 22 23 24
## Changelog for 0.14.1

* aGrUM
  * chaintool for compilation with microsfot visual C++ 17 (`act --msvc17` and `act --msvc17_32`)
* pyAgrum
  * fixing a missing importation of the `pyAgrum.causal` module in pypi packages
  * updating sphynx version for pyAgrum's ReadTheDoc
  
25 26 27
## Changelog for 0.14.0

* aGrUM
28 29 30 31 32
  * support for mingw64 + bugfix for mingw (`act --mingw64`)
  * Access to scores from BNLearner : `BNLearner::Chi2` and `BNLearner::logLikelihood`
  * bug fix in `KL[...]::bhattacharya`
  * add `KL[...]::jsd` (Jensen-Shannon divergence)
  * renaming `gum::[...]]KL` classes into `gum::[...]distance` because they provide access to KL but also to Hellinger, Bhattacharya distances and Jensen-Shanon divergence.
33
* pyAgrum
34 35 36 37 38 39 40
  * `gum.causality` (do-calculus and causal identification !)
  * `JunctionTreeGenerator` (formerly `JTGenerator`) can now expose the eliminationOrder and can drive the triangulation with a partial order of the nodes.
  * Access to scores from BNLearner : `BNLearner::Chi2` and `BNLearner::logLikelihood`
  * bug fix in `pyAgrum.lib.notebook`
  * bug fix in `KL[...]::bhattacharya`
  * add `KL[...]::jsd` (Jensen-Shannon divergence)
  * renaming `pyAgrum.[...]]KL` classes into `pyAgrum::[...]distance` because they provide acces to KL but also to Hellinger, Bhattacharya distances and Jensen-Shanon divergence. 
41 42
  * fix some scratches in pyAgrum documentation

43 44 45 46 47 48 49 50 51
## Changelog for 0.13.6

* aGrUM
  * Compilation issue for clang4 fixed
  * remove all pre-compiled `float` instanciations of aGrUM's templates (and significantly reduce the size of all libraries)
  * add the configuration files needed for interactive notebooks on mybinder.org
* pyAgrum
  * minor changes in notebooks

52
## Changelog for 0.13.5
53

54 55
* aGrUM
  * fix errors for gcc 4.8.2
56
  * fix issue <https://gitlab.com/agrumery/aGrUM/issues/23>
57 58
  * fix act error for python<3.6
  
Christophe Gonzales's avatar
Christophe Gonzales committed
59
## Changelog for 0.13.4
60

Christophe Gonzales's avatar
Christophe Gonzales committed
61
* pyAgrum
62
  * minor API changes
63
  * minor changes in documentation
Christophe Gonzales's avatar
Christophe Gonzales committed
64
  * BNLearner follows the new learning framework
65 66
  * parametric EM !! See notebook <http://www-desir.lip6.fr/~phw/aGrUM/docs/last/notebooks/16-ParametriceEM.ipynb>
  * New method : JointTargetedInference.jointMutualInformation for any set of variables in the BN
Christophe Gonzales's avatar
Christophe Gonzales committed
67
* aGrUM
68
  * parametric EM !!
Christophe Gonzales's avatar
Christophe Gonzales committed
69 70 71 72 73 74 75 76 77 78
  * several internal improvements
  * learning: major update of the scores, independence tests and record counters:
    They can now be used on subsets of databases (e.g., for cross validation), the ids of the nodes need not correspond to indices of columns in the database. The interfaces of these classes have been simplified.
  * learning: all the scores have been speeded-up
  * learning: new score fNML has been introduced
  * learning: Dirichlet apriori has been improved: the variables in its database need not be in the same order as those of the learning database
  * learning: all the score-related testunits have been improved
  * learning: the documentations of the scores have been improved
  * learning: the corrected mutual information of 3off2 has been improved
  * BNLearner: now supports cross validation
79
  * New method : JointTargetedInference::jointMutualInformation for any set of variables in the BN
Christophe Gonzales's avatar
Christophe Gonzales committed
80

81
## Changelog for 0.13.3
82

83
* pyAgrum
84 85
  * **pip** : wheels for mac/windows/linux for python 2.7,3.{4-7}
  * **anaconda** : compilation for maxOS/anaconda64/python3 should be fixed
86 87
  * updating tests
  * updating pyAgrum.lib
88
  * updating posterior histograms for notebooks (adding mean/stdev for `RangeVariable` and `DiscretizedVariable`)
89
  * new functions for colouring and graphically comparing BNs
90
  * improved documentation
91
* aGrUM
92 93 94 95 96
  * fixed bugs for `DiscreteVariable` with `domainSize()`<=1 (particularly when added in `Potential`)
  * improved `CMakeFiles.txt`
  * improved documentation
  * fixing `UAI` format for read and write
  * `BNLearner.setSliceOrder` with list of list of names (and not only with ids)
97
  * improved error messages
98
  * fixing `learnParameters`
99 100
  * multi-thread support for learning

101
## Changelog for 0.13.2
102

103 104 105 106
* aGrUM/pyAgrum
  * fixed bugs in `Potential::fillWith`
  * removed unsafe and ambiguous `Potential::fastKL` and kept safe `Potential::KL`

107
## Changelog for 0.13.1
108

109
* aGrUM
110 111
  * variable: new methods to set bounds with doubles in `ContinuousVariable`
  * Changed the code of `Instantiation`'s hash functions to make it compliant with windows mingw implementation
112
* TestUnits
113
  * fixed bug in `RawDatabaseTable` test unit
114 115

## Changelog for 0.13.0
116

117
* aGrUM
118 119 120 121 122 123 124 125 126 127 128
  * inference: Loopy Belief Propagation (`LBP`)
  * inference: new approximated inference : `Monte-Carlo`/`Importance`/`Weighted Sampling` + the same using LBP as a Dirichlet prior (`Loopy...`).
  * learning: new algorithm 3off2 and miic
  * learning: new database handling framework (allows for coping with missing values and with different types of variables)
  * learning: possibility to load data from nanodbc databases (e.g., `postgres`, `sqlite`)
  * learning: add a progress Listener/Signaler in `BNDatabaseGenerator`
  * potential: API extension (`findAll`,`argmax`,`argmin`,`fillWith(pot,map)`)
  * variable: new constructor for `LabelizedVariable` with labels as vector of string + `posLabel(std::string)`
  * variable: new constructor with vector of ticks for `gum::DiscretizedVariable`
  * graph: API extension (`addNodes(n)`)
  * graph: API change (`addNode(id)`->`addNodeWithId(id)`)
129
  * Changes and bug fixe in in BIF and NET writer/reader
130 131
* pyAgrum
  * wheels for python 3.3 and 3.4
132
  * access to the new learning framework using `BNLearner`
133
  * access to the new inference algorithms
134 135 136 137 138 139 140 141 142
  * new methods `Instantiation.fromdict` and `Instantiation.todict`
  * `DiscreteVariable.toDiscretized/toLabelized/toRange` copy the variable instead of giving a (not readonly) reference
* O3PRM
  * new syntax for types
  * read and write Bayesian Network with O3PRM syntax
* Documentations
  * agrum : doxygen helps structure and howtos
  * pyAgrum : documentation of a large part of pyAgrum's API, export to <https://pyagrum.readthedocs.io>
  * o3prm : still in progress (see <https://o3prm.lip6.fr>, <https://o3prm.readthedocs.io>)
143 144
* act
  * new command guideline for a few easy checks
145
* many bug fixes 
146

147
## Changelog for 0.12.0
148

149
* API
150 151 152
  * new class `EssentialGraph`
  * new class `MarkovBlanket`
  * improved targets in `MarginalTargettedInference`
153 154 155
* pyAgrum
  * update notebooks
  * new swig-based documentation framework
156
  * transparent background for dot graphs
157 158 159 160
  * more windows-compliant agrum.lib.bn2csv
* aGrUM
  * PRM bug fixes
  * improved CI in gitlab
161
  * improved exception messages in BN learning and O3PRM
162 163
  * improving act

164
## Changelog for 0.11.2
165

166 167 168 169 170 171 172 173 174
* aGrUM
  * a lot of internal changes for CI in gitlab (especially for future automatic generation of wheels)
  * learning: correct identification of string labels beginning with digits
  * learning: labels from CSV are now alphabetically sorted
  * fix an issue with sql.h
* pyAgrum
  * notebooks as tests (now in wrappers/pyAgrum/notebooks)
  * updating requirements
  * some improvements in doc
175
  * pyagrum.lib.ipython: emulation of 'pyagrum.lib.notebook' for ipython graphical console (within spyder for instance)
176 177 178
  * pyagrum.lib.bn2csv: csv file with labels of variables instead of index (parameter with_labels:boolean)
  * pyagrum.lib.bn2roc: use a csv with labels by default (parameter with_labels:boolean)

179
## Changelog for 0.11.1
180

181 182
* 2 typos found in pyAgrum.lib.notebook

183
## Changelog for 0.11.0
184

185 186 187 188 189 190
* internal
  * working on continuous integration with gitlab
  * aGrUM/pyAgrum to be compilable with g++-4.8
  * aGrUM/pyAgrum to be compilable with win32
  * pyAgrum wheels generation using act for 'pip' tool
* aGrUM
191 192
  * removing some unused data structure (`AVLTree`)
  * fixing bug in `localSearchWithTabuList` learning class
193 194
  * Remove wrong parallel estimations for learning (now correct but sequential)
  * working on docs
195
  * API change : add `BayesNet::minimalCondSet(NodeSet&,NodeSet&)` (migration from pyAgrum to aGrUM)
196 197
  * API change : add JointTargettedInference::evidenceJointImpact()
* pyAgrum
198 199 200 201
  * API changes : pyAgrum.lib.bn2graph (`BN2dot`, `BNinference2dot`, `proba2histo`)
  * API changes : pyAgrum.lib.pretty_print (`bn2txt`, `cpt2txt`)
  * API changes : pyAgrum.lib.notebook : uniforming parameters evs (first) and targets (second) order.
  * API changes : pyAgrum.lib.notebook : `showEntropy->showInformation`
202
  * updating sphinx help generation
203 204 205 206
  * fix `CNMonteCarloSampling` not recognized as `ApproximationScheme`
  * enhancing `showInformation` with Mutual Information on arcs
  * API change : adding `BayesNet.minimalCondSet(set_of_targets,set_of_evs)` (as wrapper)
  * API change : adding `LazyInference.evidenceJointImpact(set_of_targets,set_of_evs)`
207

208
## Changelog for 0.10.4
209

210 211
* Add new approximated inference : `LBP` (aGrUM and pyAgrum)
* Fix bugs in `LazyPropagation` and `ShaferShenoy` inference
212 213 214 215 216 217
* Refresh some codes in Learning module
* Update (and simplify) CMakeLists.txt for new swig 3.0.11
* Add some project files (including this CHANGELOG.md)
* Refresh pyAgrum notebooks with matplotlib2


Lionel's avatar
Lionel committed
218
## Changelog for 0.10.3
219

Lionel's avatar
Lionel committed
220 221 222
* Only bug fixes in tests

## Changelog for 0.10.2
223

224 225
* New method for `BayesNet` : `minimalCondSet`
* New method for all inference : `evidenceImpact`
Lionel's avatar
Lionel committed
226
* Potential has a (single) value even if no dimension.
227
* Bug fix for `LazyPropagation`
Lionel's avatar
Lionel committed
228 229 230 231
* Typos for Visual C++ compiler
* Many internal changes

## Changelog for 0.10.1
232

Lionel's avatar
Lionel committed
233 234
* aGrUM
  * Fix GCC compilation
235
  * `ParamEstimator::setMaxThread` new method
Lionel's avatar
Lionel committed
236
* pyAgrum
237 238 239
  * `VariableElimination` and `ShaferShenoy` inference
  * new `addJointTarget` and `jointPosterior` methods for exact inference
  * `pyAgrum.getPosterior` now uses `VariableElimination`
Lionel's avatar
Lionel committed
240 241 242 243 244
  * Fix pyAgrum.lib.notebook error for python2
  * pyAgrum now linked with static library aGrUM
  * pyAgrum.so (linux) size significantly reduced

## Changelog for 0.10.0
245

Lionel's avatar
Lionel committed
246 247 248 249
* aGrUM
  * Improvements in inference : New target/evidence-driven incremental inference scheme using relevant reasoning used by Lazy/Shafer-Shenoy/Variable Elimination algorithms. Relevant reasoning leads to a major improvement of the inference (see http://www-desir.lip6.fr/~phw/aGrUM/officiel/notebooks/RelevanceReasoning.html).
* pyAgrum
  * LazyPropagation API follow the new inference scheme (add/removeTarget, add/remove/chgEvidence)
250
* Installers using pip or anaconda.
Lionel's avatar
Lionel committed
251 252

## Changelog for 0.9.3
253

Lionel's avatar
Lionel committed
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
Tag 0.9.3 has not been properly announced. Still, many changes in this release :

* Many bug fixes and API glitch/improvement
  * Many internal reorganisations (compilation, test, jenkins, etc.)
  * Many change in the C++ code in order to be more c++11/14
  * Bug fix in learning
  * Many Doxygen improvements
  * Many refactors and bug fix in PRM
* Improvements
  * dynamic BN in pyAgrum
  * nanodbc support for pyAgrUM
  * O3PRMBNReader in pyAgrum (read a prm to a BN)
  * PRMExplorer in pyAgrum
  * UAI reader/writer for BayesNet
  * Algebra of potentials (operators on Potential)
  * pyAgrum.lib.notebook refactored and simplified
  * updating lrs version for credal networks
* Windows
  * aGrUM/pyAgrum compilation on windows using Visual Studio 2015

## Changelog for 0.9.2
275

Lionel's avatar
Lionel committed
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294
* aGrUM
  * Improvements in Inference
    * old LazyPropagation renamed JunctionTreeInference,
    * Improved LazyPropagation ~30% faster,
    * Bug fix and other improvements for relevance reasoning features.
  * Improvements for Probabilistic Relational Models
    * model refinements : e.g. parameterized classes, specification of CPTs using formula, etc.
    * bug fixes and other improvements in dedicated inference algorithms,
    * improving and fixing documentations
    * new file format for Bayesian network : o3prmBNReader (reading a BN by grounding a system)
  * Learning API still improved
    * BNLearner templatized
    * new feature for BNLearner : using a BN to specicfy variables and their modalities,
    * bug fixes and improvement for parameter learning.
  * other bug fixes and improvements in aGrUM architecture
    * aGrUM g++5.1-ready
    * etc.
* pyAgrum
  * small bugs fixed and reorganisation
295

Lionel's avatar
Lionel committed
296
##Changelog for 0.9.1
297

Lionel's avatar
Lionel committed
298 299 300 301 302 303 304 305 306 307 308 309 310 311
* aGrUM
  * Improvement in learning algorithms
  * learning from databases with fewer rows than there are processors
  * method to BNLearner to learn parameters from a BN's DAG
  * static lib compilation for aGrUM
  * bug fixes and other improvements
* pyAgrum
  * Compiled for Python 3 or Python 2 (default is python3, python2 if no python3.). New option for act to choose which python : --python={2|3}.
  * gumLib has moved and changed its name (in the pyAgrum package) : pyAgrum.lib
  * Improving API for learning (changeLabel/parameter learning/ etc.)
  * Improving graphs manipulation
  * bug fixes and other improvements

## Changelog for 0.9.0
312

Lionel's avatar
Lionel committed
313 314 315 316 317 318
Aside from many bug fixes and general improvements such as performance optimizations in various areas, some changes are especially noteworthy:

* Functionality : Structural and parameter learning for Bayesian networks
* Model : Credal Networks, FMDP using Multi-Valued Decision Diagrams
* Language : migration to modern C++(11/14)
* Core : Improvements and optimization of basic data structures in aGrUM/core