-
1.15.1e0736868 · ·
* aGrUM * Added `gum::Potential<GUM_SCALAR>::memoryFootprint` and `gum::IBayesNet::memoryFootprint` (thanks to Benjamin Datko). * Fixed a bug when subscripting `gum::DiscretizedVariable` with the (last) interval (thanks to Gaspard Ducamp). * Removed gcc warnings (psabi, false positive uninitialized). * pyAgrum * Added `pyAgrum.Potential.memoryFootprint` and `pyAgrum.BayesNet.memoryFootprint` (thanks to Benjamin Datko). * Fixed a bug when subscripting `gum::DiscretizedVariable` with the (last) interval (thanks to Gaspard Ducamp). * Fixed a bug in `pyAgrum.skbn.BNDiscretizer` for `NoDiscretization` method with given `paramDiscretization`. * Moved function `pyAgrum.lib.export.toFast` to method `pyAgrum.{BayesNet|InfluenceDiagram|MRF}.toFast()`. * Moved `pyAgrum.skbn.BNDiscretizer` to `pyAgrum.lib.discretizer`. * Worked on documentation for CTBN * Fixed `fontcolor` configuration for causal model.
-
1.15.052e002f0 · ·
We continue to add (full python) experimental models. In 1.15, we introduce the CTBN model (Continuous Time Bayesian Network) featuring, as usual, modelization and representation, inference (exact and sampling) and a learned algorithm. * aGrUM * Added `gum::NodeId gum::EssentialGraph::idFromName(const std::string& name)` and `const std::string& gum::EssentialGraph::nameFromId(gum::NodeId node)`. * pyAgrum * Added `pyAgrum.EssentialGraph.idFromName(str)->int` and `pyAgrum.EssentialGraph.nameFromId(int)->str` * Improved documentation of `pyAgrum.lib.explain` * Better `pyAgrum.clg.CLG.toDot()` and `pyAgrum.clg.CLG._repr_html()`. * New model Continuous Time Bayesian Network `pyAgrum.ctbn`. * Formatted and adjustments in `pyAgrum.ctbn`. * Updated documentations for python experimental models notebooks. * Updated thumbnails for python experimental models notebooks. * Added serialization (pickle) for CLG and CTBN (consistent with other models in pyAgrum). * Improved `pyAgrum.lib.utils.{apply_}dot_layout` * Added `pyAgrum.lib.utils.async_html2image` for exported HTML as png or pdf (notably for `pyAgrum.lib.notebook.getSideBySide` and `pyAgrum.lib.notebook.getPotential`).
-
1.14.1f3fbaaa3 · ·
* aGrUM * Fixing compilation errors for `clang18` (thanks to @yurivict). * pyAgrum * Fixing python version for `readthedocs`.
-
1.14.00fbb07b5 · ·
* aGrUM * `gum::Potential::marg{Xyz}{In|Out}` are renamed `gum::Potental::{xyz}{In|Out}` to cut down on some verbosity. (for instance : `p.margSumOut` becomes `p.sumOut`) * Better error messages for `gum::BNLearner<GUM_DATA>` * pyAgrum * Dropping support of python 3.8 (following [NEP29](https://numpy.org/neps/nep-0029-deprecation_policy.html)). * Fixing some memory leaks (in special cases) found by Christophe Gonzales * new `pyAgrum.lib.explain.generalizedMarkovBlanket{Names}` and documentation. * `pyAgrum.Potential.marg{Xyz}{In|Out}` are renamed `pyAgrum.Potental.{xyz}{In|Out}` to cut down on some verbosity. (for instance : `p.margSumOut` becomes `p.sumOut`) * Better error messages for `pyAgrum.BNLearner` * Adding new python's experimental model : Conditional Linear Gaussian (`pyAgrum.clg.*`) : model, learning and inference.
-
1.13.23d8273e3 · ·
* aGrUM * Better (compact) format for numerical labels. * Better uniformly distributed random discrete distribution. * pyAgrum * Better (compact) format for numerical labels. * Better uniformly distributed random discrete distribution. * Continue to implement some automatic `pyAgrum.Potential` filling tools with `pyAgrum.Potential.fillFromExpression`. * Working on better plots for probability+utility * Speeding up `gum.BayesNet.addArcs()` with *jit* memory allocation * Slight adjustments to histogram display. * Fixing documentation of `gum.BNLearner.mutualInformation`. * Fixing (deprecated) arguments in `pyAgrum.skbn.BNClassifier`'s methods.
-
1.13.1bb6f0235 · ·
This release is mainly about documentation. * pyAgrum * Fixing last references to LIP6's notebooks instead of rtd's notebooks (thanks to Benjamin Datko). * Adding 'Book of Why's notebooks to readthedoc's documentation. * Updating Notebooks and thumbnails. * Improving documentation coverage for pyAgrum class methods (from 86.19% to 87.05%) * `gum.BNLearner.learnEssentialGraph` for all learning algorithm. * Better wrapping of `pyAgrum.BNLearner.setPossibleEdges()`.
-
1.13.0dc14f2f1 · ·
* Internal * New servers for (linux and windows) CI ! * aGrUM * Fast syntax for empirical `gum::DiscretizedVariable`: name suffixed by '+'. * Reorganizing a bit `gum::DiscreteVariable`'s hierarchy. * Working on quasi-continuous (numerical discrete variable with large domain size) : * Logical operators (`&`,`|`, `~`) to combine evidence (monodimensionnal `gum::Potential` not forced to sum to 1). * New `gum::Potential` and `gum::BayesNet` methods to generate numerical evidence : `evEq`, `evIn`, `evLt`, `evGt`. * Fast syntax now accepts any type as default (and not only the size of the domain). * pyAgrum * Fixing a bug in `pyAgrum.lib.bn2scores. * Fast syntax for empirical `pyAgrum.DiscretizedVariable`: name suffixed by '+'. * Reorganizing `pyAgrum.lib._colors.py` and `pyAgrum.lib.utils.py`. * Changing a default for `pyAgrum.Instantiation.todict`. * Improving (a lot) histograms for `pyAgrum.DiscretizedVariable`. * Working on quasi-continuous (numerical discrete variable with large domain size) : * Logical operators (`&`,`|`, `~`) to combine evidence (monodimensionnal `pyAgrum.Potential` not forced to sum to 1). * New `pyAgrum.Potential` and `pyAgrum.BayesNet` methods to generate numerical evidence : `evEq`, `evIn`, `evLt`, `evGt`. * Fast syntax now accepts any type as default (and not only the size of the domain). * `pyAgrum.Potential` accepted as evidence for all inference. * Long-awaited `pyAgrum.Potential.fillFrom{Function|Distribution}`. * Adding `pyAgrum.config.{push|pop}`. * Removing obsolete code for `python2.7`. * Removing some oldest deprecationWarning. * Adding '__iter__' for graphs, graphical models, variable and potentials.
-
1.12.182656391 · ·
* 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.0d93aba1e · ·
* 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.096134fc4 · ·
* 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.0e733b2a6 · ·
* 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.07c2adb90 · ·
* 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.3ddc302c8 · ·
* 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.2d76c830b · ·
* 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.14028f084 · ·
* 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.0843248d6 · ·
* 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.1f4672a6c · ·
* 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.0269e6bca · ·
* 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.1a02373db · ·
Quick fix for the configuration of pyAgrum documentation generation by readthedoc.
-
1.6.0e27b06a9 · ·
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.