-
1.12.1
* aGrUM * Adding a new job during CI for sphinx documentation. * Fixing a typo in `gum::MeeRules::propagate(s)`. * pyAgrum * Fixing a typo in `pyAgrum.MeekRules.propagate(s)`. * Adding new rules for 'python typification' of generated files. * Fixing and updating documentations and notebooks.
-
1.12.0
* aGrUM * Adding a new class `gum::MeekRules` to complete a learned PDAG to CPADG or BN. * Preventing 'infinities' in the definition of numerical discrete variable. * Adding a new constructor for `gum::PDAG` from`gum::MixedGraph`. * Better (stricter) `operator==` between `gum::DiscreteVariable`. * Adding a new static constructor `gum::{Undi|Di}Graph::completeGraph(int n)`. * Adding `closestIndex()` and `closestLabel()` methods for all numerical `gum::DiscreteVariable`. * Fixing an exception raised in inferences due to the removal of uninformative potentials containing only barren variables * new syntax for `fastVariable` : `[a:b:n]` = `gum.Discretiezd` with n intervalls from a to b. * pyAgrum * Pickle for graphs and graphicals models ! * Preventing 'infinities' in the definition of numerical discrete variable. * Adding a new class `pyAgrum.MeekRules` to complete a learned PDAG to CPADG or BN. * Better (stricter) `__eq__` and `__ne_`_ between `pyAgrum.DiscreteVariable`. * Adding a new constructor for `pyAgrum.PDAG` from`pyAgrum.MixedGraph`. * Adding a new `expert` discretization method to `pyAgrum.skbn.BNDiscretizer` (thanks to Ahmed Mabrouk). * `pyAgrum.skbn.BNDiscretizer` can now take csv filename for input. * Adding `pyAgrum.fastGraph` to create `pyAgrum.{Di|Undi|Mixed}Graph`. * Dataframes can now come from `pandas` or `polars` (thanks to Mads Linksou). * Adding a `compact` mode for histogram for discretized variable controlled by `histogram_mode` `histogram_epsilon` in `gum.config` (thanks to Gaspard Ducamp). * Adding a new static constructor `pyAgrum.{Undi|Di}Graph::completeGraph(int n)`. * Adding subscripting to graphical models : `g[name]` gives now a direct access to the `pyAgrum.DiscreteVariable` by its name. * New syntax for `pyAgrum.fast{Var|BN|ID|MRF}` : `[a:b:n]` = `pyAgrum.DiscretizedVariable` with n intervalls from a to b. * Adding `closestIndex()` and `closestLabel()` methods for all numerical `pyAgrum.DiscreteVariable`. * Adding `g.adjacencyMatrix()` for all graphs and graphical models (thanks to Kenneth Lee). * Adding new `bgcolor` parameter (None by default) for `showROC/PR` in `pyAgrum.lib.bn2roc` and `pyAgrum.skbn` (thanks to Clara Charon). * Adding optional `dialect` parameter to `pyAgrum.lib.bn2roc.computeScores`. * new syntax for `fastVariable` : `[a:b:n]` = `pyAgrum.Discretiezd` with n intervalls from a to b.
-
1.11.0
* Internal * Removing some warnings in CMakeLists.txt * Refactoring CI, cleaning wheelhouse * aGrUM * Adding `gum::LazyPropagation::mpe{Log2Posterior}` to compute the Most Probable Explanation with some evidence. * Improving MIIC algorithm and application of Meek Rules in ordre to to better solve (partially) oriented cycle problems. * Fixing a bug in `gum::BNLearner` : EM parameter estimation bug due to a cache used in record counters. * Fixing a bug in `gum::GibbsSampling` : some evidence may not be taken into account (thanks to Micromix@discord). * `gum::PDAG` must accept partially directed cycle (thanks to Kenneth Lee). * pyAgrum * Updating and adding 3.12 in metadatas. * Adding `pyAgrum.LazyPropagation.mpe{Log2Posterior}` to compute the Most Probable Explanation with some evidence. * Removing reference to `sys.log` and to `setuptools`. * Removing legacy setuptools related files. * Fixing a bug in `pyAgrum.BNLearner` : EM parameter estimation bug due to a cache used in record counters. * Fixing a bug in `pyAgrum.GibbsSampling` : some evidence may not be taken into account (thanks to Micromix@discord). * Fixing a bug in frontdoor detection in a causal model with multiple connected components. * Fixing some regexp expressions. * `pyAgrum.PDAG` must accept partially directed cycle (thanks to Kenneth Lee).
-
1.10.0
* aGrUM * add contraints to `MIIC` BN learning algorithm. * `MIIC` is now the default for `gum::BNLearner`. * Fixing some minor bugs in `gum::BNLearner`. * Removing old `3off2` BN learning algorithm (use MIIC instead). * adding `pyAgrum::MIIC::learnPDAG` and give access to this method via `gum::BNLearner`. * pyAgrum * package for python 3.12 ! * New configuration for specification of graphviz engine and rankdir . * Constraint for `MIIC` algorithm in `pyAgrum.BNLearner`. * `MIIC` is now the default for `pyAgrum.BNLearner`. * Fixing minor bugs in `pyAgrum.BNLearner`. * new method `pyAgrum.BNLearner.learnPDAG`. * Back to classical representation of do() operator in `pyAgrum.causal`. * Examples from the Book Of Why (Pearl) are now in the sphinx documentation. * The name of a loaded BN should not include the complete path but only the name of the file (thanks to Jules Cassan).
-
1.9.0
* aGrUM * Learning algorithm `gum::learning::MIIC` can use the weighted databases. * Internal improvements for `act` tool, `cmake` and compilers (`clang`). * pyAgrum * New visualisation for `gum::DiscretizedVariable` + new config to select this visualisation. * `pyAgrum.BNLearner` can use now the weighted databases for all learning algorithms. * Documentation improvements. * `pyAgrum.lib.bn2roc` * adding new functions `get{ROC|PR}points()`. * accepting `pandas.DataFrame` as data source (`datasrc`). * adding Fbeta (beta!=1) scores to bn2roc. * adding F-Beta threshold on ROC and PR curves. * `bn2roc` functions now force many parameters to be keyword-arguments in order to prevent the risk of mixing arguments. * adding new functions `anim{ROC|PR}`. * `pyAgrum.skbn.Discretizer` can propose a set of labels (that includes the labels from the database) when `"NoDiscretization"` is selected. (see tutorial `52-Classifier_Discretizer`).
-
1.8.3
* aGrUM * Removing GCC warnings about overloaded virtual methods. * Fixing a bug in jointree inference in rare cases (when an irrelevant soft evidence is added). * pyAgrum * Fixing a bug in jointree inference in rare cases (when an irrelevant soft evidence is added). * Removing deprecated methods from pyAgrum<1.1.0. * Adding new syntax for set (conditional) marginal with dict : `p[{"A":0,"C":1}]={"no":0.3,"yes":0.7}`. * small updates for pyAgrum's documentation.
-
1.8.2
* aGrUM * Fixing a bug (still) in `gum::PDAG::cSeparation` (thanks to Keneth Lee). * Fixing a bug in `gum::BIFXMLIdWriter::save`. * typos in `gum::PDAG::toDot()`. * pyAgrum * Fixing a bug in `pyAgrum/{load|save}ID`. * Wrapping `gum::PDAG::moralizedAncestralGraph()`. * Adding a warning when importing `pyAgrum.lib.notebook` if graphviz is not installed.
-
1.8.1
* aGrUM * Bugfixes in `gum::PDAG::cSeparation` (thanks to Keneth Lee). * Using 'table' instead of 'default' for marginal cpt in `gum::BIFWriter`. * Adding `std::cout<<(gum::Timer& t)` * pyAgrum * Updating build image for rtd. * Improving documentations. * Documentation for pyAgrum.InformationTheory. * Uniformizing argume `cmap` to `cmapNode` in `pyAgrum.lib.notebook`. * Adding beeswarmplot for shapley values figures in `pyAgrum.lib.explain`.
-
1.8.0
* aGrUM * Adding new class `gum::InfomationTheory` that regroups every information theory concepts (entropies, conditional entropies and mutual information, ...) with only one inference, which allows also conditioned information theory concepts. * Adding `gum::Potential::expectedValue()` * Adding the alternative *fast* syntax for NumericalDiscreteVariable : `{1.5:3.5:3}` meaning from 1.5 to 3.5 in 3 steps. * Updating `GraphicalModel::exists(const std::string&)` : return false instead of throwing an exception. * Adding `gum::graphicalModels::variables()` and a new alias for `gum::VariableSet`. * Fixing a bug in `gum::ShaferShenoyInference` for joint posterior when some nodes in the target received hard evidence. * Improving error message w.r.t `gum::*::jointPosterior`. * Adding mingw as a target for CI. * Fixing dangling pointers in testsuite, only detected by MSVC. * Optimized `gum::PDAG::cSeparation` * Renaming `gum::Set::isProper{Sub|Super}Set` to `gum::Set::isStrict{Sub|Super}Set`. * pyAgrum * swig>4.1 is now needed. * Enabling installation with poetry (thanks to Lorenzo Conti) * Adding new class `pyAgrum.InfomationTheory` that regroups every information theory concepts (entropies, conditional entropies and mutual information, ...) with only one inference, which allows also conditioned information theory concepts. * Adding `pyAgrum.Potential.expectedValue()`. * Restructuring a bit the sphinx documentation. * Down-exporting the read-only API for every types of discrete Variable to `pyAgrum.DiscreteVariable`. (see `VariablesTestSuite.testExportDerivedReadOnlyAPIforDiscreteVariable`) * Updating notebooks to the new down-exported read-only API of `pyAgrum.DiscreteVariable`. * Adding the alternative *fast* syntax for NumericalDiscreteVariable : `{1.5:3.5:3}` meaning from 1.5 to 3.5 in 3 steps. * Updating docs for new *fast* syntax. * Updating `GraphicalModel::exists(const std::string&)` : return false instead of throw an exception. * Initiating a new notebook about the interaction with ipywidget * Optimized and correctly wrapped `gum::PDAG::cSeparation` (thanks to Kenneth Lee). * New functions `pyAgrum.lib.explain.nestedMarkovBlankets` and `pyAgrum.lib.explain.nestedMarkovBlanketsNames`.
-
1.7.1
* aGrUM * Adding `gum::{AllDiscreteVariable}.toFast()` to write the variable in *fast* syntax. * Fixing a bug in BN's random generators : `domain_size` incremented by 1 (thanks to Kenneth Lee). * Fixing a bug in *fast* syntax : `'A[n]' with n<2`. * pyAgrum * Adding `pyAgrum.{AllDiscreteVariable}.toFast()` to write the variable in *fast* syntax. * Fixing a bug in BN's random generators (e.g. `pyAgrum.randomBN`) : `domain_size` incremented by 1 (thanks to Kenneth Lee). * Fixing a bug in *fast* syntax : `'A[n]' with n<2`. * Modifying (lightly) the structure for documentation.
-
1.7.0
* aGrUM * Add `gum::Potential::sign` and `gum::Potential::new_sign` * Bug fix in causalImpact found by Musfiqur Rahman * Generalization and rationalization of access of aGrUM's generator of pseudo-random values * Adding `gum::Timer::toString()`. * Improving BN random generator. * get rid of `sprintf` as much as possible. * Fixing random seed. * Fixing `gum::Potential::random()` : not a distribution. * Updating *Fast* syntax : enumerating consecutive integers (e.g `{1|2|3|4}`) creates a `gum::RangeVariable[1,4]` rather than an `gum::IntegerVariable{1|2|3|4}`. * pyAgrum * Add `pyAgrum.Potential.sign` and `pyAgrum.Potential.new_sign` * Bug fix in causalImpact found by Musfiqur Rahman * Adding `pyAgrum.Timer.__str()__`. * Improving BN random generator. * Fixing random seed. * Fixing `pyAgrum.Potential.random()` : not a distribution. * Adding access to `gum.fastVariable()`. * Updating *Fast* syntax : enumerating consecutive integers (e.g `{1|2|3|4}`) creates a `pyAgrum.RangeVariable[1,4]` rather than an `pyAgrum.IntegerVariable{1|2|3|4}`. * add a new module to export in different formats (for now just GML).
-
1.6.1
Quick fix for the configuration of pyAgrum documentation generation by readthedoc.
-
1.6.0
The main points of this tag is the renaming of *Markov network* (`MarkovNet`, `MN`) for the better known *Markov Random Field* (`MarkovRandomField`, `MRF`) and a new reader/writer of XDSL format (Genie/Smile) for Bayesian networks. Other improvements and corrections have naturally also been made. * aGrUM * Renaming `gum::MarkovNet` to `gum::MarkovRandomField`. Renaming `gum::*MN*` to `gum::*MRF*` when necessary. * Fixing glitches and bugs induced or revealed by `gum::MarkovNet`->`gum::MarkovRandomField`. * new `XDSL` Reader/writer for Bayesian network. * Renaming `gum::Learning::BNLearner::learnMixedStructure` to `gum::Learning::BNLearner::learnPDAG` * working on documentation : better rendering for doxygen pages. * Renaming `gum::dSeparation` to `gum::dSeparationAlgorithm`. * pyAgrum * Renaming `pyAgrum.MarkovNet` to `pyAgrum.MarkovRandomField`. Renaming `pyAgrum.*MN*` to `pyAgrum.*MRF*` when necessary. * new `XDSL` Reader/writer for Bayesian network. * Renaming `pyAgrum.BNLearner.learnMixedStructure()` to `pyAgrum.BNLearner.learnPDAG()`. * For figure containing nodes drawn by matplotlib (e.g. inference), use the same font for all nodes (default from matplotlib) (thanks to Jonathon Blackford). * Working on documentation : better rendering for readthedocs pages, improved structuration, new thumbnail image for some notebooks/tutorials. * Significant improvement of the documentation coverage. * Improving `gum.DiscreteVariable.to[typeOfVariable]`, renaming as `gum.DiscreteVariable.as[typeOfVariable]` and adding documentations.
-
1.5.2
Mainly documentations and new analytics for the different sites. * pyAgrum * Adding a new and very easy to use `pyAgrum.randomBN` that creates a BN from a list of names. * Removing obsolete `pyAgrum.generateCSV` replaced by `pyAgrum.generateSample`. Fixing tests. * Fixing and improving pyAgrum documentation.
-
1.5.1
* aGrUM * Improving `gum::BNLearner::state()`. * (internals) new macro `GUM_TEST` and `GUM_INACTIVE_TEST` for CI * pyAgrum * Improving `gum.BNLearner.state()`. * Improving style for readthedoc (pygments and no StickySideBar) * Improving documentation coverage (for methods) from 84.9% to 90.7% : more than 100 newly covered methods.
-
1.5.0
* aGrUM * (internals) Updating `act --stats`. * (internals) Reorganizing build folder : `build/{aGrUM|pyAgrum}/{debug|release}`. * (internals) Improving cmake & CIs. * Threadsafe graphs and Graphical Models. * Adding new graph `gum::PDAG` (Partially Directed Acyclic Graph). * Renaming `gum::MixedGraph::adjacents` with correct graph notion : `gum::MixedGraph::boundary`. * Initializing the majority of the end/rend iterators at compile time. * Adding AVL binary search trees: `gum::AVLTree`. * Adding priority queues that can be iterated in order: `gum::SortedPriorityQueue`. * Better messages for `gum::BayesNet::check()`. * pyAgrum * (internals) New docker images with linux gcc 11 for wheels. * (internals) CMake: Use FindPython module. * (internals) Removing some (false positive) warning notifications from swig. * Fixing NaN bugs for new versions of Graphviz. * Improving gum.lib.notebooks.flow and light/dark theme compatibility. * Renaming `pyAgrum.MixedGraph.adjacents` with correct graph notion : `pyAgrum.MixedGraph.boundary`. * New graph class `gum.PDAG` (Partially Directed Acyclic Graph). * Fixing a small typo when displaying function as Potential. * better messages for `pyAgrum.BayesNet.check()`. * More robust `gum.explain.showInformation()` w.r.t. NaN. * Fixing typos in documentation. * Improving the organization of ReadTheDoc documentation.
-
1.4.1
* pyAgrum * bugfixes in `pyAgrum.lib.[causal.]notebook`.
-
1.4.0
* aGrUM * better `toString` for BN : show the memory used by the parameters. * pyAgrum * **adding conda and pip packages for python 3.11** * better `__str__` for BN : show the memory used by the parameters. * bug fix in obsolete pyAgrum.`BNLearner.useNoAPriori()`. * bug fix when displaying a `pyAgrum.causal.CausalFormula` generated by do-Calculus : retrieving the original `doing` and `knowing` sets.