- pyAgrum
- Fixed some bugs in
pyAgrum.lib.shapley
(thanks Stefano Mariani !). - Changed last MN->MRF (
pyAgrum.{loadMRF|saveMRF|availableMRFExts}
). - Improved pickling of
pyAgrum.skbn.BNClassifier
.
- Fixed some bugs in
-
aGrUM
- Fixed extra semicolon.
-
pyAgrum
- Fixed some pyAgrum types in generated files.
- Added check for pandas in tests.
- Renamed files in module
pyAgrum.clg
. - Fixed METADATA for pypi.
- pyAgrum
- Added support for
python 3.13
. - Added generator
pyAgrum.Instantiation.loopIn()
to iterate on anpyAgrum.Instantiation
. - Significantly accelerated
pyAgrum.Potential.fillFromDistribution()
. - Major acceleration of
pyAgrum.clg.ForwardSampling.make_sample()
.
- Added support for
-
aGrUM
- Added 3 behaviors for generating sampling from
gum::DiscretizedVariable
ingum::BNDatabaseGenerator
:INTERVAL
/MEDIAN
/RANDOM
. The default wasINTERVAL
and is nowRANDOM
. - Added timeout for
gum::BNDatabaseGenerator
to prevent slowish (maybe infinite) rejection sampling. - Added two new constraints for learning :
gum::learning::NoParentNode
,gum::learning::NoChildNode
. - Added these new constraints in
gum::BNLearner
:addNoParentNode(nodeid)
andaddNoChildrenNode(nodeid)
. - (internal) Improved
act
's scripts.
- Added 3 behaviors for generating sampling from
-
pyAgrum
- Dropped support of python 3.9 (following NEP29).
- Added 3 behaviors for generating sampling from
pyAgrum.DiscretizedVariable
inpyAgrum.BNDatabaseGenerator
:INTERVAL
/MEDIAN
/RANDOM
. The default wasINTERVAL
and is nowRANDOM
. - Added timeout for
pyAgrum.BNDatabaseGenerator
to prevent slowish (maybe infinite) rejection sampling. - Added two new constraints
pyAgrum.BNLearner.addNoParentNode()
andpyAgrum.BNLearner.addNoChildrenNode()
. - (internal) Standardized licence in python files
- Added new
pyAgrum.causal.CausalEffectsEstimation
(thanks to Thierry Rioual). pyAgrum.skbn.BNClassfier
can now be pickled (thanks to Valentin Vassilev).- Added module
pyAgrum.lib.shapley
(included inpyAgrum.lib.explain
) to allow the use ofShapValues
not only from notebooks (thanks to Stefano Mariani). - Added a parameter
filename
topyAgrum.lib.shapley.ShapValues
's methods for saving the figure instead of showing it (thanks to Stefano Mariani).
-
aGrUM
- Added
gum::Potential<GUM_SCALAR>::memoryFootprint
andgum::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).
- Added
-
pyAgrum
- Added
pyAgrum.Potential.memoryFootprint
andpyAgrum.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
forNoDiscretization
method with givenparamDiscretization
. - Moved function
pyAgrum.lib.export.toFast
to methodpyAgrum.{BayesNet|InfluenceDiagram|MRF}.toFast()
. - Moved
pyAgrum.skbn.BNDiscretizer
topyAgrum.lib.discretizer
. - Worked on documentation for CTBN
- Fixed
fontcolor
configuration for causal model.
- Added
We continue to add (full python) experimental models. In 1.15, we introduce the CTBN model (Continuous Time Bayesian Network) featuring, as usual, modelisation and representation, inference (exact and sampling) and a learning algorithm.
-
aGrUM
- Added
gum::NodeId gum::EssentialGraph::idFromName(const std::string& name)
andconst std::string& gum::EssentialGraph::nameFromId(gum::NodeId node)
.
- Added
-
pyAgrum
- Added
pyAgrum.EssentialGraph.idFromName(str)->int
andpyAgrum.EssentialGraph.nameFromId(int)->str
- Improved documentation of
pyAgrum.lib.explain
- Better
pyAgrum.clg.CLG.toDot()
andpyAgrum.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 forpyAgrum.lib.notebook.getSideBySide
andpyAgrum.lib.notebook.getPotential
).
- Added
-
aGrUM
- Fixed compilation errors for
clang18
.
- Fixed compilation errors for
-
pyAgrum
- Fixed python version for
readthedocs
.
- Fixed python version for
-
aGrUM
gum::Potential::marg{Xyz}{In|Out}
are renamedgum::Potental::{xyz}{In|Out}
to cut down on some verbosity. (for instance :p.margSumOut
becomesp.sumOut
)- Better error messages for
gum::BNLearner<GUM_DATA>
-
pyAgrum
- Dropped support of python 3.8 (following NEP29).
- Fixed 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 renamedpyAgrum.Potental.{xyz}{In|Out}
to cut down on some verbosity. (for instance :p.margSumOut
becomesp.sumOut
)- Better error messages for
pyAgrum.BNLearner
- Added new python's experimental model : Conditional Linear Gaussian (
pyAgrum.clg.*
) : model, learning and inference.
-
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
filled tools withpyAgrum.Potential.fillFromExpression
. - Worked on better plots for probability+utility
- Speeded up
gum.BayesNet.addArcs()
with jit memory allocation - Slight adjustments to histogram display.
- Fixed documentation of
gum.BNLearner.mutualInformation
. - Fixed (deprecated) arguments in
pyAgrum.skbn.BNClassifier
's methods.
This release is mainly about documentation.
- pyAgrum
- Fixed last references to LIP6's notebooks instead of rtd's notebooks (thanks to Benjamin Datko).
- Added 'Book of Why's notebooks to readthedoc's documentation.
- Updated Notebooks and thumbnails.
- Improved documentation coverage for pyAgrum class methods (from 86.19% to 87.05%)
gum.BNLearner.learnEssentialGraph
for all learning algorithm.- Better wrapped of
pyAgrum.BNLearner.setPossibleEdges()
.
-
Internal
- New servers for (linux and windows) CI !
-
aGrUM
- Fast syntax for empirical
gum::DiscretizedVariable
: name suffixed by '+'. - Reorganized a bit
gum::DiscreteVariable
's hierarchy. - Worked on quasi-continuous (numerical discrete variable with large domain size) :
- Logical operators (
&
,|
,~
) to combine evidence (monodimensionnalgum::Potential
not forced to sum to 1). - New
gum::Potential
andgum::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).
- Logical operators (
- Fast syntax for empirical
-
pyAgrum
- Fixed a bug in `pyAgrum.lib.bn2scores.
- Fast syntax for empirical
pyAgrum.DiscretizedVariable
: name suffixed by '+'. - Reorganized
pyAgrum.lib._colors.py
andpyAgrum.lib.utils.py
. - Changed a default for
pyAgrum.Instantiation.todict
. - Improved (a lot) histograms for
pyAgrum.DiscretizedVariable
. - Worked on quasi-continuous (numerical discrete variable with large domain size) :
- Logical operators (
&
,|
,~
) to combine evidence (monodimensionnalpyAgrum.Potential
not forced to sum to 1). - New
pyAgrum.Potential
andpyAgrum.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}
.
- Logical operators (
- Added
pyAgrum.config.{push|pop}
. - Removed obsolete code for
python2.7
. - Removed some oldest depreactionWarning.
- Added 'iter' for graphs, graphical models, variable and potentials.
- aGrUM
- Added a new job dured CI for sphinx documentation.
- Fixed a typo in
gum::MeeRules::propagate(s)
.
- pyAgrum
- Fixed a typo in
pyAgrum.MeekRules.propagate(s)
. - Added new rules for 'python typification' of generated files.
- Fixed and updated documentations and notebooks.
- Fixed a typo in
-
aGrUM
- Added a new class
gum::MeekRules
to complete a learning PDAG to CPADG or BN. - Prevented 'infinities' in the definition of numerical discrete variable.
- Added a new constructor for
gum::PDAG
fromgum::MixedGraph
. - Better (stricter)
operator==
betweengum::DiscreteVariable
. - Added a new static constructor
gum::{Undi|Di}Graph::completeGraph(int n)
. - Added
closestIndex()
andclosestLabel()
methods for all numericalgum::DiscreteVariable
. - Fixed an exception raised in inferences due to the removal of uninformative potentials contained only barren variables
- new syntax for
fastVariable
:[a:b:n]
=gum.Discretiezd
with n intervalls from a to b.
- Added a new class
-
pyAgrum
- Pickle for graphs and graphicals models !
- Prevented 'infinities' in the definition of numerical discrete variable.
- Added a new class
pyAgrum.MeekRules
to complete a learning PDAG to CPADG or BN. - Better (stricter)
__eq__
and__ne_
_ betweenpyAgrum.DiscreteVariable
. - Added a new constructor for
pyAgrum.PDAG
frompyAgrum.MixedGraph
. - Added a new
expert
discretization method topyAgrum.skbn.BNDiscretizer
(thanks to Ahmed Mabrouk). pyAgrum.skbn.BNDiscretizer
can now take csv filename for input.- Added
pyAgrum.fastGraph
to createpyAgrum.{Di|Undi|Mixed}Graph
. - Dataframes can now come from
pandas
orpolars
(thanks to Mads Linksou). - Added a
compact
mode for histogram for discretized variable controlled byhistogram_mode
histogram_epsilon
ingum.config
(thanks to Gaspard Ducamp). - Added a new static constructor
pyAgrum.{Undi|Di}Graph::completeGraph(int n)
. - Added subscripted to graphical models :
g[name]
gives now a direct access to thepyAgrum.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. - Added
closestIndex()
andclosestLabel()
methods for all numericalpyAgrum.DiscreteVariable
. - Added
g.adjacencyMatrix()
for all graphs and graphical models (thanks to Kenneth Lee). - Added new
bgcolor
parameter (None by default) forshowROC/PR
inpyAgrum.lib.bn2roc
andpyAgrum.skbn
(thanks to Clara Charon). - Added optional
dialect
parameter topyAgrum.lib.bn2roc.computeScores
. - new syntax for
fastVariable
:[a:b:n]
=pyAgrum.Discretiezd
with n intervalls from a to b.
-
Internal
- Removed some warnings in CMakeLists.txt
- Refactored CI, cleaned wheelhouse
-
aGrUM
- Added
gum::LazyPropagation::mpe{Log2Posterior}
to compute the Most Probable Explanation with some evidence. - Improved MIIC algorithm and application of Meek Rules in ordre to to better solve (partially) oriented cycle problems.
- Fixed a bug in
gum::BNLearner
: EM parameter estimation bug due to a cache used in record counters. - Fixed 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).- 'infinities' is now forbidden in the definition of numerical
gum::DiscreteVariable
.
- Added
-
pyAgrum
- Updated and added 3.12 in metadatas.
- Added
pyAgrum.LazyPropagation.mpe{Log2Posterior}
to compute the Most Probable Explanation with some evidence. - Removed reference to
sys.log
and tosetuptools
. - Removed legacy setuptools related files.
- Fixed a bug in
pyAgrum.BNLearner
: EM parameter estimation bug due to a cache used in record counters. - Fixed a bug in
pyAgrum.GibbsSampling
: some evidence may not be taken into account (thanks to Micromix@discord). - Fixed a bug in frontdoor detection in a causal model with multiple connected components.
- Fixed some regexp expressions.
pyAgrum.PDAG
must accept partially directed cycle (thanks to Kenneth Lee).- 'infinities' is now forbidden in the definition of numerical
pyAgrum.DiscreteVariable
.
-
aGrUM
- added contraints to
MIIC
BN learning algorithm. MIIC
is now the default forgum::BNLearner
.- Fixed some minor bugs in
gum::BNLearner
. - Removed old
3off2
BN learning algorithm (use MIIC instead). - added
gum::MIIC::learnPDAG
and give access to this method viagum::BNLearner
.
- added contraints to
-
pyAgrum
- package for python 3.12 !
- New configuration for specification of graphviz engine and rankdir .
- Constraint for
MIIC
algorithm inpyAgrum.BNLearner
. MIIC
is now the default forpyAgrum.BNLearner
.- Fixed 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).
-
aGrUM
- learning algorithm
gum::learning::MIIC
can use the weighted databases. - Internal improvements for
act
tool,cmake
and compilers (clang
).
- learning algorithm
-
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
- added new functions
get{ROC|PR}points()
. - accepted
pandas.DataFrame
as data source (datasrc
). - added Fbeta (beta!=1) scores to bn2roc.
- added 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 mixed arguments.- added new functions
anim{ROC|PR}
.
- added new functions
pyAgrum.skbn.Discretizer
can propose a set of labels (that includes the labels from the database) when"NoDiscretization"
is selected. (see tutorial52-Classifier_Discretizer
).
- New visualisation for
-
aGrUM
- Removed GCC warnings about overloaded virtual methods.
- Fixed a bug in jointree inference in rare cases (when an irrelevant soft evidence is added).
-
pyAgrum
- Fixed a bug in jointree inference in rare cases (when an irrelevant soft evidence is added).
- Removed deprecated methods from pyAgrum<1.1.0.
- Added 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.
-
aGrUM
- Fixed a bug (still) in
gum::PDAG::cSeparation
(thanks to Keneth Lee). - Fixed a bug in
gum::BIFXMLIdWriter::save
. - typos in
gum::PDAG::toDot()
.
- Fixed a bug (still) in
-
pyAgrum
- Fixed a bug in
pyAgrum/{load|save}ID
. - Wrapped
gum::PDAG::moralizedAncestralGraph()
. - Added a warned when importing
pyAgrum.lib.notebook
if graphviz is not installed.
- Fixed a bug in
-
aGrUM
- Fixed bugs in
gum::PDAG::cSeparation
(thanks to Keneth Lee). - Used 'table' instead of 'default' for marginal cpt in
gum::BIFWriter
. - Added
std::cout<<(gum::Timer& t)
- Fixed bugs in
-
pyAgrum
- Updated build image for rtd.
- Improved documentations.
- Documentation for pyAgrum.InformationTheory.
- Uniformized
cmap
tocmapNode
inpyAgrum.lib.notebook
. - Added beeswarmplot for shapley values figures in
pyAgrum.lib.explain
.
-
aGrUM
- Added 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. - Added
gum::Potential::expectedValue()
- Added the alternative fast syntax for NumericalDiscreteVariable :
{1.5:3.5:3}
meaned from 1.5 to 3.5 in 3 steps. - Updated
GraphicalModel::exists(const std::string&)
: return false instead of throwed an exception. - Added
gum::graphicalModels::variables()
and a new alias forgum::VariableSet
. - Fixed a bug in
gum::ShaferShenoyInference
for joint posterior when some nodes in the target received hard evidence. - Improved error message w.r.t
gum::*::jointPosterior
. - Added mingw as a target for CI.
- Fixed dangled pointers in testsuite, only detected by MSVC.
- Optimized
gum::PDAG::cSeparation
- Renamed
gum::Set::isProper{Sub|Super}Set
togum::Set::isStrict{Sub|Super}Set
.
- Added new class
-
pyAgrum
- swig>4.1 is now needed.
- Enabled installation with poetry (thanks to Lorenzo Conti)
- Added 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. - Added
pyAgrum.Potential.expectedValue()
. - Restructured a bit the sphinx documentation.
- Down-exported the read-only API for every types of discrete Variable to
pyAgrum.DiscreteVariable
. (seeVariablesTestSuite.testExportDerivedReadOnlyAPIforDiscreteVariable
) - Updated notebooks to the new down-exported read-only API of
pyAgrum.DiscreteVariable
. - Added the alternative fast syntax for NumericalDiscreteVariable :
{1.5:3.5:3}
meaned from 1.5 to 3.5 in 3 steps. - Updated docs for new fast syntax.
- Updated
GraphicalModel::exists(const std::string&)
: return false instead of throw an exception. - Initiated 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
andpyAgrum.lib.explain.nestedMarkovBlanketsNames
.
-
aGrUM
- Added
gum::{AllDiscreteVariable}.toFast()
to write the variable in fast syntax. - Fixed a bug in BN's random generators :
domain_size
incremented by 1 (thanks to Kenneth Lee). - Fixed a bug in fast syntax :
'A[n]' with n<2
.
- Added
-
pyAgrum
- Added
pyAgrum.{AllDiscreteVariable}.toFast()
to write the variable in fast syntax. - Fixed a bug in BN's random generators (e.g.
pyAgrum.randomBN
) :domain_size
incremented by 1 (thanks to Kenneth Lee). - Fixed a bug in fast syntax :
'A[n]' with n<2
. - Modifyed (lightly) the structure for documentation.
- Added
- aGrUM
- Add
gum::Potential::sign
andgum::Potential::new_sign
- Bug fix in causalImpact found by Musfiqur Rahman
- Generalization and rationalization of access of aGrUM's generator of pseudo-random values
- Added
gum::Timer::toString()
. - Improved BN random generator.
- get rid of
sprintf
as much as possible. - Fixed random seed.
- Fixed
gum::Potential::random()
: not a distribution. - Updated Fast syntax : enumerated consecutive integers (e.g
{1|2|3|4}
) creates agum::RangeVariable[1,4]
rather than angum::IntegerVariable{1|2|3|4}
.
- Add
- pyAgrum
- Add
pyAgrum.Potential.sign
andpyAgrum.Potential.new_sign
- Bug fix in causalImpact found by Musfiqur Rahman
- Added
pyAgrum.Timer.__str()__
. - Improved BN random generator.
- Fixed random seed.
- Fixed
pyAgrum.Potential.random()
: not a distribution. - Added access to
gum.fastVariable()
. - Updated Fast syntax : enumerated consecutive integers (e.g
{1|2|3|4}
) creates apyAgrum.RangeVariable[1,4]
rather than anpyAgrum.IntegerVariable{1|2|3|4}
. - add a new module to export in different formats (for now just GML).
- Add
Quick fix for the configuration of pyAgrum documentation generation by readthedoc.
The main points of this tag is the renamed 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
- Renamed
gum::MarkovNet
togum::MarkovRandomField
. Renamedgum::*MN*
togum::*MRF*
when necessary. - Fixed glitches and bugs induced or revealed by
gum::MarkovNet
->gum::MarkovRandomField
. - new
XDSL
Reader/writer for Bayesian network. - Renamed
gum::Learning::BNLearner::learnMixedStructure
togum::Learning::BNLearner::learnPDAG
- worked on documentation : better rendered for doxygen pages.
- Renamed
gum::dSeparation
togum::dSeparationAlgorithm
.
- Renamed
-
pyAgrum
- Renamed
pyAgrum.MarkovNet
topyAgrum.MarkovRandomField
. RenamedpyAgrum.*MN*
topyAgrum.*MRF*
when necessary. - new
XDSL
Reader/writer for Bayesian network. - Renamed
pyAgrum.BNLearner.learnMixedStructure()
topyAgrum.BNLearner.learnPDAG()
. - For figure contained nodes drawn by matplotlib (e.g. inference), use the same font for all nodes (default from matplotlib) (thanks to Jonathon Blackford).
- Worked on documentation : better rendered for readthedocs pages, improved structuration, new thumbnail image for some notebooks/tutorials.
- Significant improvement of the documentation coverage.
- Improved
gum.DiscreteVariable.to[typeOfVariable]
, renamed asgum.DiscreteVariable.as[typeOfVariable]
and added documentations.
- Renamed
Mainly documentation and new analytics for the different sites.
- pyAgrum
- Added a new and very easy to use
pyAgrum.randomBN
that creates a BN from a list of names. - Removed obsolete
pyAgrum.generateCSV
replaced bypyAgrum.generateSample
. Fixed tests. - Fixed and improved pyAgrum documentation.
- Added a new and very easy to use
-
aGrUM
- Improved
gum::BNLearner::state()
. - (internals) new macro
GUM_TEST
andGUM_INACTIVE_TEST
for CI
- Improved
-
pyAgrum
- Improved
gum.BNLearner.state()
. - Improved style for readthedoc (pygments and no StickySideBar)
- Improved documentation coverage (for methods) from 84.9% to 90.7% : more than 100 newly covered methods.
- Improved
-
aGrUM
- (internals) Updated
act --stats
. - (internals) Reorganized build folder :
build/{aGrUM|pyAgrum}/{debug|release}
. - (internals) Improved cmake & CIs.
- Threadsafe graphs and Graphical Models.
- Added new graph
gum::PDAG
(Partially Directed Acyclic Graph). - Renamed
gum::MixedGraph::adjacents
with correct graph notion :gum::MixedGraph::boundary
. - Initialized the majority of the end/rend iterators at compile time.
- Added AVL binary search trees:
gum::AVLTree
. - Added priority queues that can be iterated in order:
gum::SortedPriorityQueue
. - Better messages for
gum::BayesNet::check()
.
- (internals) Updated
-
pyAgrum
- (internals) New docker images with linux gcc 11 for wheels.
- (internals) CMake: Use FindPython module.
- (internals) Removed some (false positive) warned notifications from swig.
- Fixed NaN bugs for new versions of Graphviz.
- Improved gum.lib.notebooks.flow and light/dark theme compatibility.
- Renamed
pyAgrum.MixedGraph.adjacents
with correct graph notion :pyAgrum.MixedGraph.boundary
. - New graph class
gum.PDAG
(Partially Directed Acyclic Graph). - Fixed a small typo when displayed function as Potential.
- better messages for
pyAgrum.BayesNet.check()
. - More robust
gum.explain.showInformation()
w.r.t. NaN. - Fixed typos in documentation.
- Improved the organization of ReadTheDoc documentation.
-
pyAgrum
- bugfixes in
pyAgrum.lib.[causal.]notebook
.
- bugfixes in
-
aGrUM
- better
toString
for BN : show the memory used by the parameters.
- better
-
pyAgrum
- added 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 displayed a
pyAgrum.causal.CausalFormula
generated by do-Calculus : retrieved the originaldoing
andknowing
sets.
-
aGrUM
gum::BNDataGenerator
: Add a way to generate sampls from Bayesian Network with evidence- More informative error message for
gum::DatabaseTable::insertRow()
. - Code structure for checked syntax before saved a Bayesian Network. Instantiated for BFI and DSL format.
- Improved code for
gum::BinSearchTree
. - Better error messages for
gum::DSLReader
.
-
pyAgrum
pyAgrum.BNDataGenerator.drawSamples()
: Add a way to generate sampls from Bayesian Network with evidence.- More informative error message for
gum::DatabaseTable::insertRow()
. pyAgrum.lib.dBN
: better dot representation of unrolled BNs.pyAgrum.lib.notebook.show()
: bugs fixed for some types of parameters.pyAgrum.config
: new types accessors :config.as{Int|Float|Bool}
.- Updated documentations for
pyAgrum.lib.notebook.show()
,pyAgrum.BNDatabaseGenerator.drawSamples()
,pyAgrum.skbn
. - New argument when drawed graphs : label on arcs (thanks to Mahdi Hadl Ali).
-
aGrUM
- Updated readme
-
pyAgrum
- Fixed warnings in
gum.Potential.topandas()
. - Allowed label or index when addressed variables in dictionary for
gum.Instantiation
(such as ingum.Potential.extract
). - Allowed dictionnary for mapped variables in
pyAgrum.Potential.fillWith
. - Fixed typos in documentation of
pyAgrum.Potential.fillWith
. - Fixed css for sphinx notebooks gallery.
- Fixed warnings in
-
aGrUM
- Fixed errors in doxygen configuration.
- Added a new class of discrete variable
gum::NumericalDiscreteVariable
whose support is a (finite) set ofdouble
. - Fixed new clang warnings.
- Fixed a bug in
gum::Potential::max()
when all values are negative (thanks to Zakarie Aloui). - Added a new method
gum::learning::BNLearner::score()
which computes the currently selected score for a node and its parents. - Added a test for a variance beed not negative in
gum::ShaferSheoyLIMIDInference
(thanks to Benjamin Datko). - Added new methods
gum::learning::BNLeaner::mutualInformation()
andgum::learning::BNLearner::correctedMutualInformation()
.
-
pyAgrum
- Added a new class of discrete variable
gum.NumericalDiscreteVariable
whose support is a (finite) set ofdouble
. - Updated notebooks w.r.t. this new variable (
16-Examples_quasiContinuous
and18-Examples-BayesianBetaCoin
). - Added a new method
gum.BNLearner.score()
which computes the currently selected score for a node and its parents. - Added new methods
gum.BNLeaner.mutualInformation()
andgum.BNLearner.correctedMutualInformation()
.
- Added a new class of discrete variable
-
aGrUM
- Moved named convention from
apriori
toprior
. gum::CliqueGraph::addNode{WithId}
with the same syntax as in other graphs.- [act] Improved the compliance for various microsoft compilers.
- [act] option
-windows
is now-compiler
and acceptsgcc
orclang
when platform is linux or mac. - [act] options
--clangpath
add--gccpath
to specify the path of the compilers (if those compilers are not in PATH). - Changed internal representation of
gum::Exception
(now derived fromstd::exception
). - Added a new prior :
gum::learning::DirichelPriorFromBN
. - Renamed
genericBNLearner
toIBNLearner
. - Added
gum::learning::BNLearner::useDirichletPriorFromBN
.
- Moved named convention from
-
pyAgrum
- Moved named convention from
apriori
toprior
. - Added
pyAgrum.BNLearner.useDirichletPriorFromBN
. - Added a new function
gum::mutilateBN
. pyAgrum.CliqueGraph.addNode{WithId}
with the same syntax as in other graphs.
- Moved named convention from
-
aGrUM
- Fix a regression that was slowed down the inference in credal networks.
- Better error messages when IOError caused by writed in 'bad' files.
- Typos in several error messages.
- Fix warnings from gcc 12.1 and integrate linter proposals.
-
pyAgrum
- PEP 3149 implemented.
- Small typos in pyAgrum.causal.
- Added acces to the database built for learning in
pyAgrum.skbn.BNClassifier.preparedData()
. - Small bug when represented Potential as fractions.
- Small bug in type deduction from database for variable in
pyAgrum.skbn
. - notebooks now added in the sphinx documentation (and then in readthedocs site).
-
aGrUM
- Parallelized inference for Markov Net :
gum::ShaferShenoyMNInference
. - Added a new
gum::fastVar(std::string)
factory function to easily build variable such as ingum::*::fastPrototype(std::string)
. See Documentation. This syntax is now used in every graphical model withgum::{BayesNet|MarkovNet|etc}::add(std::string)
to easily add a new variable in the model. - Added a new graphical representation of cliqueGraph :
gum::CliqueGraph::mapToDot()
.
- Parallelized inference for Markov Net :
-
pyAgrum
gum.ShaferShenoyMNInference
is now parallelized too.- Wrapped the new fast syntax for created variable in functions
gum.{BayesNet|etc}.add(str)
. See Documentation. - Introduced a better type induction for discrete variables when created by
gum.skbn.BNDiscretizer
.gum.IntegerVariable
andgum.RangeVariable
are now induced from the data. - Added
gum.JunctionTree.map()
(in notebook) to show a condensed map of a the junction tree. - Still worked on documentation (One must imagine Sisyphus happy).
The aGrUM's team is very proud to announce the release of aGrUM/pyAgrum 1.0.0!
This long journey sometimes strewn with pitfalls, but which often brought great satisfactions, began with this first commit (subversion):
add8dbff5 | 13 years ago | phw | test?
aGrUM/pyAgrum is now definitely no longer a test :-) Parallelization of inference in Bayesian networks is the important feature that allows us to symbolically assert a level of quality of aGrUM. The 1.0.0 release shows that we also believe the API will remain stable in a medium term.
pyAgrum continues its path as a wrapper of aGrUM but with more and more specific features. Some of them are intended to be implemented in C++ and eventually integrated in aGrUM (causality, etc.), others will certainly remain specificities of pyAgrum.
In the near future, for aGrUM and pyAgrum, we expect many more new features and releases ! Stay tuned!
-
aGrUM
- VariableElimination, ShaferShenoy and LazyPropagation are now parallelized.
- Better use of d-separation in ShaferShenoy and LazyPropagation.
- Better initialization/registrations used Meyers singleton.
- Better 0-dimensional Potential.
- new
gum::IBayesNet::check()
to test if the BN is completely and well-defined.
-
pyAgrum
- Better documentation and argument order for
gum.BNLearner.__init__
. - Better numpystyle for docstrings.
- Better tests and notebooks.
- Better signature for
gum.Potential.arg{max|min}
. - New
gum.IBayesNet.check()
to test if the BN is completely and well-defined. - More consistent API :
with_labels
default is True everywhere.
- Better documentation and argument order for
This tag is a pre-relase for 1.0.0 (!).
-
aGrUM
- Added a new Multithreaded facility which supports easily both
openMP
andSTL
. - Enabled exceptions raised by threads to be catched.
- Made
gum::CredalNetworks
andgum::learning::BNLearner
use the new multithreaded facility. - Made a fully new architecture for scheduled inferences.
- Added a sequential and a parallel schedulers for inferences.
- Enabled
gum::LazyPropagation
andgum::ShaferShenoy
to use schedulers for their inferences. gum::DiscretizedVariable
can now be declared as "empirical". Meaned that the lower and upper ticks are not always hard limits.- improve a bit API for
gum::IntegerVariable
.
- Added a new Multithreaded facility which supports easily both
-
pyAgrum
- add a way to export BN samples as a
pandas.DataFrame
instead of csv files inpyAgrum.BNDatabaseGenerator
and in the functionpyAgrum.generateSamples(....)
. gum.BNLearner
can now take apandas.DataFrame
as data source in its constructor.- Add support for default number of thread in
gum.config
. - Added methods to get/set the number of threads used by
pyAgrum.BNLearner
,pyAgrum.LazyPropagation
andpyAgrum.ShaferShenoy
. - small change in
pyAgrum.skbn.Discretizer.audit
: show the domain size for discrete variable. - better graphical diff between BN, even if a node is missed used
pyAgrum.bn_vs_bn
functionalities. - empirical gum.DiscretizedVariable used in
pyAgrum.skbn.Discretizer
- new configuration for (LaTeX) fractions in
gum.lib.notebook.showCPT
(see tutorial) - update a bit
pyAgrum.IntegerVariable
wrapper and documentation.
- add a way to export BN samples as a
-
aGrUM
- Remove clang 13 warnings (thanks to Julien Schueller).
- Add the ability to chain many methods in
gum::learning::BNLearner
.
-
pyAgrum
-
Reorganization of notebooks.
-
Add
pyAgrum.lib.image.export[Inference]
with no filename in order to export anumpy.array
ready formatplotlib.pyplot.imshow()
(thanks to Mads Lindskou). -
Improve
pyAgrum.bn_vs_bn
graphical diff between BNs with many style configurations inpyAgrum.config
. -
Cosmetic improvements for
pyAgrum.lib.bn2scores
. -
Add an access to
pyAgrum.lib.explain.getInformationGraph
in order to export the image (thanks to Dennis Mac R). -
pyAgrum.BNLearner
- Add the ability to chain many methods in
pyAgrum.BNLearner
. - Add an easy-to-use
pyAgrum.BNLearner.fitParameters
to learn in-place the parameters of the argument. - Add
pyAgrum.BNLearner.learnEssentialGraph
.
- Add the ability to chain many methods in
-
pyAgrum.lib.notebook
- Add
_repr_html_
topydot.Dot
. - Add an easier-to-use
pyAgrum.lib.notebook.flow.add(obj,caption)
. - Add the ability to chain many methods in
pyAgrum.lib.notebook.flow
. - Move from
title
tocaption
as argument forpyAgrum.lib.notebook.flow
's methods. - Improve graphical representation for
pyAgrum.lib.notebook.showInformation()
. - Add a new argument
ncols
topyAgrum.lib.notebook.sideBySide
in order to use it as a grid (and not only as a line).
- Add
-
Mostly several quick fixes.
-
aGrUM
- Small bugfix on Markov random field with only one factor.
- Better behavior for ordered nodes when
gum::MarkovNetwork::addFactor
. - Better behavior for
gum::ShaferShenoyMNInference::jointPosterior
when a node of the joint is hard-observed.
-
pyAgrum
- Update and fix documentation (mostly for readthedocs and typehints).
- Fix and improve ticks when plotted distribution with large domainSize.
- Better behavior for ordered nodes when
pyAgrum.MarkovNetwork.addFactor
. - Better behavior for
pyAgrum.ShaferShenoyMNInference.jointPosterior
when a node of the joint is hard-observed.
-
aGrUM
- aGrum is now compiled used c++20 (updated cmake).
- Fix 'distribute' phase in some cases for
gum::ShaferShenoyLIMIDInference
(Thanks to Michael Kontoulis). - Remove a lot of allocators as template parameters.
act
: Improve architecture.act
: Use ofargparse
instead of the obsoleteoptparse
.- Worked on CI : Worked on CI : removed some obsolete platform (
MSVC 15
), added some new (MSVC 22
) - use
std::mt19937
instead ofrand()
(thanks to Julien Schueller).
-
pyAgrum
This release mainly deals with provided a workaround to a pydotplus/pyparsed bug affected several graph visualizations in pyAgrum.
-
pyAgrum
- workaround to the pydotplus/pyparsed bug : "added an empty node".
- remove the use of deprecated distutils in act.
- (approximate) fix labels in x-axis for lined-histogram.
This release aims to provide a number of new configurations for aGrUM and pyAgrum:
-
aGrUM
- builder for windows used msvc2022 (new option for
act
) - aGrUM is now compiled used c++17
- builder for windows used msvc2022 (new option for
-
pyAgrum
- package for MacOS arm64 (M1)
- package for python 3.10 (limited to 64 bits)
- customization title of plots in
pyAgrum.lib.dynamicBN
-
pyAgrum
- new option in
gum.config
for percent or just number in histograms. - better wrappers for
gum.Instantiation.variablesSequence()
andpyAgrum.MixedGraph.adjacents(id)
. - better wrappers for
pyAgrum.MixedGraph.{mixedOrientedPath|mixedUnorientedPath}
. - refreshed all
requirements.txt
. - better visualisation for
pyagrum.lib.DynamicBN
. - improvements in documentations.
- aarch64 version for linux package
- new option in
-
aGrUM
- Minor change in
CSVParser
(BNLearner
etc.): if a token is surrounded by quote characters, those are not part of the very token anymore.
- Minor change in
-
pyAgrum
- Updated documentations
- Moved export image utilities in a new
pyAgrum.lib.image
. See the notebook (![Coloured and exported models] (https://webia.lip6.fr/~phw/aGrUM/docs/last/notebooks/colouringAndExportingBNs.ipynb.html)). - Minor change in
CSVParser
(BNLearner
, etc.) : if a token is surrounded by quote characters, those are not part of the very token anymore.
-
aGrUM
- fix issue #69 (no more final destructor),
- update Coco/R parsers (notations and explicit casts),
- better
gum::SyntaxError
(access to filename), - remove many redundant ';' in testsuites,
- better option
--stats
for act, gum.[model].fastPrototype
now accepts multiline specifications.
-
pyAgrum
- better
pyAgrum.SyntaxError
treated as python's SyntaxError, - much better annotations for types declaration in python codes,
- improved documentation,
- update pyAgrum.causal,
gum.fast[Model]
now accepts multiline specifications,gum.DiscreteVariable
are now hashable.
- better
As planned, 0.22.0 is the first version of pyAgrum that does not support python>3.6 (included 2.7).
-
aGrUM
- fix issue #27
- (act) remove (hopefully) all the codes to support both python. In particular, there is no more options for act to choose the targeted version of python.
- (ci/deploy) removed 2.7 tests and deploy (thanks to @Aspard)
- better and customized type induction when learning Bayesian networks from CSV.
- new constructor for
gum::learning::BNLearner
to activate/deactivate the type induction when readed a csv file. (thanks to @gonzalesc)
-
pyAgrum
- remove a large part of the codes dedicated to python2 in the wrapper (
wrapper/python/generated-files2
) and inpyAgrum.lib
. To be cont'd. - many improvements due to linter (pylint especially) in
pyAgrum.lib
. - graphical improvement in
pyAgrum.lib.bn2roc
thanks to Clara Charon. - new constructor for
gum.BNLearner
to activate/deactivate the type induction when readed a csv file.
- remove a large part of the codes dedicated to python2 in the wrapper (
Contrary to what was said in the 0.20.0 changelog, we decided to remove support for python 2.7 before the 1.0 release.
This tag (0.21.0) is the last version that supports python 2.7. We are already worked and will deliver a 0.22.0 tag as soon as possible, which will be dedicated to this move and will then be the first tag without python 2.7 support.
The next tag (0.22.0) will be the (new) last minor version before the release of agrum/pyAgrum 1.0.0 (:fist: :smirk: ).
-
aGrUM
- New type for discrete variable (
gum::IntegerVariable
) which represents a set of non-consecutive integers. - New syntax for
gum::IntegerVariable
ingum::*::fastPrototype
:a{-3|0|3}
. - Change in syntax for
gum::MarkovNetwork::fastPrototype
: the link are represented by--
instead of-
. - New
gum::BNLearner::state()
which gives a view of the activated options in the learner (scores, priors, algorithms, constraints, etc.). - New
gum::BNLearner::toString()
which gives a stred representation ofgum::BNLearner::state()
. - Add a new CI for last gcc (g++11 for now).
- Code optimizations for hash function for small-sized values.
- Better hierarchy for exceptions.
- MLEstimator should lead to an error when divided by 0.
- New type for discrete variable (
-
pyAgrum
- New type for discrete variable (
pyAgrum.IntegerVariable
) which represents a set of non-consecutive integers. - New syntax for
pyAgrum.IntegerVariable
inpyAgrum.fast*
:a{-3|0|3}
. - Change in syntax for
pyAgrum.fastMN
: the links are represented by--
instead of-
. - New
pyAgrum.BNLearner.state()
which gives a view of the activated options in the learner (scores, priors, algorithms, constraints, etc.). - New
pyAgrum.BNLearner.__str__()
which gives a stred representation ofgum::BNLearner::state()
. - Documentations and notebooks updated w.r.t. this new features.
- Added ShapValues for BN in
pyAgrum.lib.explain
(see notebook). - Added
pyAgrum.lib.explain.independenceListForPairs()
. - Other improvements in
pyAgrum.lib.explain
and the corresponded notebook and documentations. - Updated notebooks for classifiers.
- Better hierarchy for exceptions.
- Removed unnecessary and obsolete codes by deleted
pyAgrum.lib._utils
. - 'Terminology clash' between 'Laplace's adjustment' and 'Smoothing' : use more generic 'Smoothing' everywhere now.
- MLEstimator should lead to an error when divided by 0.
- New type for discrete variable (
-
aGrUM
- Refactoring/fixed MIIC and better heuristic for orientations for constraint-based learning algorithms.
- Updated guidelines and new convention for
private
methods/attributes. - Changed behaviour of
gum::MixedGraph::mixed{Oriented|Unoriented}Path
: no misuse of exception when no path is found.
-
pyAgrum
- Refactored MIIC and better heuristic for orientations for constraint-based learning algorithms.
- Changed behaviour of
pyAgrum.MixedGraph.mixed{Oriented|Unoriented}Path
: no misuse of exception when no path is found. - Updated new
pyAgrum.Potential
's methods and documentation. - New tool for layout in notebooks :
pyAgrum.notebook.flow
. - New gum.config options for background colors in CPT :
potential_color_0
andpotential_color_1
. - New module
pyAgrum.lib.explain
.
-
aGrUM
- Add a check on parameters when builded a
gum::credal::CredalNet
from BNmin and BNmax: 'are Pmin<=Pmax' ?". - Fix a bug, and a visualisation of results on decision nodes with deterministic optimal strategy in
gum::InfluenceDiagram
.
- Add a check on parameters when builded a
-
pyAgrum
- Add a check on parameters when builded a
gum.CredalNet
from BNmin and BNmax: 'are Pmin<=Pmax' ?". - Fix a bug and add a better visualisation of results on decision nodes with deterministic optimal strategy in
gum. InfluenceDiagram
. - Add some options for notebook and influence diagrams in
gum.config
. Notably, add agum.notebook. show_inference_time
- Fixes and typos in notebooks
- Finally, add a worked version of
gum.lib.notebook.exportInference
to create pdf from an inference. Withgum. lib.notebook.export
, it is now possible to export all kind of pyAgrum's graphs into pdf from a notebook. - new methods:
pyAgrum.Potential.topandas()
,pyAgrum.Potential.tolatex()
- Add a check on parameters when builded a
-
aGrUM
- Fix an infamous bug: monocycle in DAG (thanks to Guy, GabF and Joanne). This bug did not propagate to graphical models (especially BNs).
-
pyAgrum
- new site for tutorials.
- renamed and reorganized many tutorials
- sync'ed documentation (readthedocs) with the new URLs for notebooks
0.20.0 is the last minor release before 1.0.0.
-
aGrUM
- Workaround for OMP with MVSC
- Refreshed doxygen configuration file
- Graph methods for
children
andparents
of sets of nodes. - Renamed
core/math/math.h
tocore/math/math_utils.h
to avoid clash names and false warnings from linters - work on CIs
- Fix and typos from F.Keidel
- Improved API of
gum::BayesNetFragment
(for instance, non-implementedgum::BayesNetFragment::VariableNodeMap
). - Major changes (and typos and bug fixes) in
gum::CN::CredalNetwork
's API - Fixed minor bugs in inference for
gum::CN::CredalNet
- (internal) re-organized files and folders for Credal Networks
- (internal) fixed bug in organization of inline/tpl/source files for
gum::credal::lp::LpInterface
-
pyAgrum
- (internal) Better logic and automatic generation for the multiple "requirements.txt".
- Graph methods for
children
andparents
of sets of nodes. pyAgrum.notebook.export
andpyAgrum.notebook.exportInference
to export as png, pdf(, etc.) PGM and inference in PGM- Fix several tests
- Fix and typos from F.Keidel
- Added
gum.Instantiation.addVarsFromModel
and allowed chainedgum.Instantiation.add()
. - Fixed some broken links in documentation.
- Updated
gum.skbn
for non-binary classifier (see notebooks). - Improved notebooks for classifiers.
- Major changes in
gum.CredalNetwork
's API - Specific visualisation for credal networks
- Graphical visualisation of inference with credal networks ()
- Added some example for credal networks in notebooks
- pyAgrum
- missed graphical (not correctly wrapped) methods in
gum::InfluenceDiagram
- fix falsely raised exception leaded to incomplete generation of documentation and wheels.
pyAgrum.lib.ipython
improved.- pyAgrum's documentation refreshed a bit.
pyAgrum.skbn
improved.- several typos in notebooks and testsuites.
- missed graphical (not correctly wrapped) methods in
- aGrUM
- bugfix for
EssentialGraph
(thanks to M.Lasserre).
- bugfix for
- aGrUM
- bugfix for
InfluenceDiagram
with all-negative utilities (thanks to B.Enderle). - [internal] typos and reorganization for
act
's modules.
- bugfix for
Mainly : important changes for Influence Diagram (aGrUM and pyAgrum) and for BayesNet classifiers compliant to scikit-learn's API (pyAgrum).
-
aGrUM
- new and better inference for Influence Diagrams and LIMIDs (
gum::ShafeShenoyLIMIDInference
). - new builder for Influence Diagram
gum::InfluenceDiagram::fastPrototype
. - bugfixes.
- new and better inference for Influence Diagrams and LIMIDs (
-
pyAgrum
- wrapper and notebook functions for new inference and new methods for influence diagram.
- new module
skbn
for BayesNet classifier compatible with sklearn (classification and discretization) with optimizedpredict
method and specific structural learning forfit
(Naïve Bayes, TAN, Chow-Liu tree, and others learning aGrUM's algorithms). Several discretization methods are implemented. - minor graphical improvements.
- remove old deprecated class/method (since pyAgrum 0.12.0).
- Improved documentation (readthebook).
- bugfixes.
Mainly bugfixes and internal improvements.
-
aGrUM
- bugs fixed for
gum::MarkovNet
andgum::ShaferShenoyMNInference
. - typo in the name of
odbc
library for mac.
- bugs fixed for
-
pyAgrum
- packages for
python 3.9
(except win32). - better error message for
DuplicateElement
in operations betweengum.Potential
. - [internal] improvements for builded wheels.
- deprecated
PyEval_CallObject
. - [internal] improvements for
pyAgrum
's tests.
- packages for
-
aGrUM
- Direct access to
gum::<graphicalmodel>::isIndependent(X,Y,Z)
. - Direct access to direct access to
ancestors
anddescendants()
. - Update API with node names for
putFirst
/reorganize
/VI
/I
.
- Direct access to
-
pyAgrum
- bug fixed on wrapped {Edge|Arc}Part (thanks to Arthur Esquerre-Pourtère).
- bug fixed for some UTF8 names.
- Direct access to
gum::<graphicalmodel>::isIndependent(X,Y,Z)
. - Direct access to
ancestors()
anddescendants()
. - Update API with node names for
putFirst
/reorganize
/VI
/I
.
-
aGrUM
- MarkovNet's model, UAI file format and inference (incremental ShaferShenoy).
- Bug fix in
MIIC
learning algorithm. - Bug fix in
gum::GammaLog2
approximations for very small values. - Updated and enhanced
gum::GraphicalBNComparator
. - Enhanced API for
gum::MixedGraph
(build a MixedGraph from other graphs). - API changes for
gum::MultiDimAggregator
(consistant behavior without parent). - new
gum::MultidimmAggegator
:Sum
. - Minor API changes for
gum::Potential
(normalizeAsCPT
,minNonZero
,maxNonOne
). - Minor API changes for graphical models (
gum::DAGModel
andgum::UGModels
). - [internal] adopted more classical convention for named pr{otected|ivate} methods and attributes.
- [internal] Updated sources for MVSC 2019.
-
pyAgrum
- MarkovNet's model, UAI file format and inference (incremental ShaferShenoy).
- Bug fix in
MIIC
learning algorithm. - Updated and enhanced
pyAgrum.GraphicalBNComparator
. - Enhanced API for
pyAgrum.MixedGraph
(build a MixedGraph from other graphs). - API changes for
pyAgrum::MultiDimAggregator
(consistent behavior without parent). - new
pyAgrum::MultidimmAggegator
:Sum
. - Minor API changes for
pyAgrum::Potential
(normalizeAsCPT
,minNonZero
,maxNonOne
). - In
gum.lib.bn2roc
: bugfix for ROC, access to significant_digit forpredict
, add Precision-Recall graph.
-
aGrUM
- improved version of MIIC's learning algorithm.
- add access to pseudo count with
gum::BNLearner::pseudoCount
. - fix a bug in inference with
gum::InfluenceDiagram
. - improved API for Influence Diagram : accessor with variable names (instead of only NodeId).
- VS2019's compiler is now supported by
act/CMakeLists.txt
. - reorganized resources for testsuite.
-
pyAgrum
- improved version of MIIC's learning algorithm.
- add access to pseudo count with
gum.BNLearner.pseudoCount
. - fix a bug in inference with
gum.InfluenceDiagram
. - improved API for Influence Diagram : accessor with variable names (instead of only NodeId).
-
aGrUM
- fix a bug in graphChangeGeneratorOnSubDiGraph (thanks @yurivict for the issue).
- fix a bug in LazyPropagation due to a (rare) improper optimization.
- improve projection and combination codes for
MultiDim
hierarchy. - reorganization of source codes and internal structure.
- refreshed a bit the c++ examples.
- preliminary works on undirected graphical models.
-
pyAgrum
- forgotten description for pip packages.
- typo for special char (':' for instance) with pydotplus.
(really) minor patch
-
aGrUM
- O3PRMBNReader can now read a BN from an o3prm file with a unique class even it the name of the class is not the name of the file.
-
pyAgrum
- internal changes for wheel generations.
- updated description for packages.
- optimized loops and inference for ROC and classifiers.
- minor improvements for pyAgrum's tests (logged and restrictions for python2).
-
pyAgrum
- Update requirements
- Improve
classifier.py
- Documentation improvements
- Remove '?' from names in some resources files concerned Asia
- Updated API for
pyAgrum.Instantiation
(accessor used name of variables) - Important internal updates for the relation between
numpy.array
andpyAgrum.Potential
(with a significant speed-up) - Add operators between
pyAgrum.Potential
and numbers - Fix a bug when used
pydotplus
withsize=None
- Fix minor bugs in
pyAgrum.fastBN
and inpyAgrum.O3prmBNWriter/Reader
- Add
pyAgrum.Potential.log2()
method andpyAgrum.log2(pyAgrum.Potential)
function - Add
pyAgrum.BayesNet.clear()
method
-
aGrUM
- Updated API for
gum::Instantiation
(accessor used name of variables) - Add operators between
gum::Potential<GUM_SCALAR>
andGUM_SCALAR
- Fix minor bugs in
gum::fastPrototype
and ingum::O3prmBNWriter/Reader
- Add
gum::multiDimDecorator::erase(std::string& name)
(mainly used asgum::Potential::erase(std::string& name)
) - Add
gum::BayesNet<GUM_SCALAR>::clear()
method
- Updated API for
-
pyAgrum
- first version of
pyAgrum.lib.classifier
providing a classpyAgrum.BNClassifier
wrapping a BN as a classifier with a scikitlearn-like API. - Fix bug in
pyAgrum.lib.notebook.showPotential
with explicit digit param - Add a
pyAgrum.Potential.loopIn()
to iterate inside a Potential - Enhanced API for
pyAgrum.InfluenceDiagram
- Documentation improvements
- remove package for python 3.4 and 3.5 (following NEP29). But 2.7 is still maintained.
- add package for python 3.8
- first version of
-
aGrUM
- still worked on CI
- Enhanced API for
gum::InfluenceDiagram
- pyAgrum
- wrapper for the class
gum::BayesNetFragment
- typos in dot methods for Influence Diagrams and Causal Models
- wrapper for the class
- pyAgrum
- remove the use of 'f-strings' in
pyAgrum.lib.notebook.py
- remove the use of 'f-strings' in
-
aGrUM
- improve the syntax for BN specification used
gum::fastPrototype
- improve several CMakeFiles.txt and doxygen documentation
- add CI for python 2.7
- refresh
gum::BayesNet::toString()
- API change :
gum::MarkovBlanket()::{mb()
->gum::MarkovBlanket::dag()}
- improve the syntax for BN specification used
-
pyAgrum
pyAgrum.config
object for customization (see notebook 08-configForPyAgrum)- improved the syntax for BN specification used
pyAgrum.fastBN
- improved pyAgrum's documentation
- add
pyAgrum.causal.counterfactual
andpyAgrum.causal.counterfactualModel
(see notebook 55-Causality_Counterfactual) - improve plots for histograms (particularly : now svg image by default)
- add
pyAgrum.Potential.fullWithFunction()
- add
pyAgrum.{any graph-like}.connectedComponents()
- add
pyAgrum.BayesNet.parents()
andpyAgrum.BayesNet.children()
with the name of node. pyAgrum.MarkovBlanket(bn,var,level)
build now a level-th order Markov Blanket (by default level=1)- add access to constants
pyAgrum.VarType_{Discretized|Labelized|Range}
when testedpyAgrmu.{any discrete variable}.varType()
- API change :
pyAgrum.MarkovBlanket().{mb()
->dag()}
- add
pyAgrum.lib.bn_vs_bn.GraphicalBNComparator.hamming()
-
aGrUM
- bug fixed in
gum::BNLearner::learnParameters()
in some cases with ML estimation (without priors). Better bootstrap for EM. - bug fixed for variables order in the
gum::Potential
generated bygum::BayesNet::reverseArc()
- new
gum::DiGraph::hasDirectedCycle
- new methods in
gum::Potential
for random generations and pertubations
- bug fixed in
-
pyAgrum
- improvements in
pyAgrum.lib.causality
(direct access to backdoor and frontdoor, typos in doCalculus, etc.) pyAgrum.lib.notebook
's visualisations of graph can be adapted for dark or light themes (in jupyterlab for instance) withforDarkTheme()
andforLightTheme()
pyAgrum.lib.notebook.{show|get}Inference()
can now have colored arcs (see 06-colouringBNs.ipynb in the notebooks)- improvements on the documentation framework (w.r.t. readthdocs)
- bug fixed for variables order in the
pyAgrum.Potential
generated bypyAgrum.BayesNet.reverseArc()
- new
pyAgrum.DiGraph.hasDirectedCycle
- new methods in
pyAgrum.Potential
for random generations and pertubations - better error messages when added arcs in a Bayesian Network
- API change for joint targets in exact inference : only as set of node ids or names of variable
- improvements in
- aGrUM
- fix a (rare) bug in counters for contingency tables for chi2 and G2 (bug found by Bastien Chassagnol)
- pyAgrum
- fix
fscore
ingumlib/bn_vs_bn.py
- API : Wherever a list of strings is the type for an argument, a single stred
"x"
can be used instead of["x"]
- workaround for weird bug when displayed matplotlib-generated svg in notebooks (for
gnb.showInference
) - fix AUC computation in
gumlib/bn2roc.py
- fix
- aGrUM
- add forgotten
addPossibleEdge
constraint forLocalSearchWithTabuList
learning algorithm inBNLearner
. - bug fix in exact inference leaded to an erroneous exception.
- Better iterated random test for sampled inference
- add forgotten
- pyAgrum
- update path for new notebooks location for CI and documentation
- nightly build with pip : use now
pip install pyAgrum-nightly
- API change in
pyAgrum.lib.dynamicBN
:plotFollowUnrolled(lovars, dbn, T, evs)
- add forgotten
addPossibleEdge
constraint forLocalSearchWithTabuList
learning algorithm inBNLearner
. - bug fix in exact inference leaded to an erroneous exception.
- internal
- new values for act
-j
option (number of jobs for compilation) :all
,except1
,half
,halfexcept1
. - several bugfixes in CI
- new values for act
- new LGPL3 licence for aGrUM/pyAgrum
- aGrUM
- bug fix with openMP in
BNLearner::setDatabaseWeight
- new
BNLearner::recordWeight()
andBNLearner::databaseWeight()
- new
BNLearner::setRecordWeight()
- bug fix with openMP in
- pyAgrum
- nightly builds with pip :
pip install pyAgrum-nightly
- bug fix with openMP in
BNLearner::setDatabaseWeight
- new
BNLearner.recordWeight()
andBNLearner.databaseWeight()
- new
BNLearner.setRecordWeight()
- bug fix and minor API changes in
pyAgrum.causality
- nightly builds with pip :
- aGrUM
- new constraint for structural learning :
possibleEdge
forces the tested edges to be taken from the sets ofpossibleEdge
s - new methods
BNLearner::addPossibleEdge(const gum::Edge&)
andBNLearner::setPossibleSkeleton(const gum::UndiGraph&)
- Fix a bug in
gum::IndepTestG2
- Access to scores from BNLearner :
BNLearner::G2()
- new constraint for structural learning :
- pyAgrum
- new methods
BNLearner.addPossibleEdge(x,y)
andBNLearner.setPossibleSkeleton(undigraph)
- fix a bug in causality's identification algorithm
- Access to scores from BNLearner :
BNLearner.G2()
- add tests and fix typos in notebooks
- new methods
- aGrUM
- bug fixes in learning (
3off2/miic
andlearnMixedGraph
) - removed redundant
gum::BNLearner::setAprioriWeight
- bug fixes in learning (
- pyAgrum
pyAgrum.lib.notebook.showInference
can now usesvg
format- use of the
svg
format by default for graphs and drawings inpyAgrum.lib.notebook
- refreshed notebooks
- removed redundant
pyAgrum.BNLearner.setAprioriWeight
- added forgotten wrapper for
pyAgrum.BNLearner.useBDeuPrior
- changed the representation of causal model (special node for latent variable)
- extended documentation
- aGrUM
- chaintool for compilation with microsfot visual C++ 17 (
act --msvc17
andact --msvc17_32
)
- chaintool for compilation with microsfot visual C++ 17 (
- pyAgrum
- fixed a missed importation of the
pyAgrum.causal
module in pypi packages - updated sphynx version for pyAgrum's ReadTheDoc
- fixed a missed importation of the
- aGrUM
- support for mingw64 + bugfix for mingw (
act --mingw64
) - Access to scores from BNLearner :
BNLearner::Chi2
andBNLearner::logLikelihood
- bug fix in
KL[...]::bhattacharya
- add
KL[...]::jsd
(Jensen-Shannon divergence) - renamed
gum::[...]]KL
classes intogum::[...]distance
because they provide access to KL but also to Hellinger, Bhattacharya distances and Jensen-Shanon divergence.
- support for mingw64 + bugfix for mingw (
- pyAgrum
pyAgrum.causality
(do-calculus and causal identification !)JunctionTreeGenerator
(formerlyJTGenerator
) can now expose the eliminationOrder and can drive the triangulation with a partial order of the nodes.- Access to scores from BNLearner :
BNLearner::Chi2
andBNLearner::logLikelihood
- bug fix in
pyAgrum.lib.notebook
- bug fix in
KL[...]::bhattacharya
- add
KL[...]::jsd
(Jensen-Shannon divergence) - renamed
pyAgrum.[...]]KL
classes intopyAgrum::[...]distance
because they provide acces to KL but also to Hellinger, Bhattacharya distances and Jensen-Shanon divergence. - fix some scratches in pyAgrum documentation
- 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
- aGrUM
- fix errors for gcc 4.8.2
- fix issue https://gitlab.com/agrumery/aGrUM/issues/23
- fix act error for python<3.6
- pyAgrum
- minor API changes
- minor changes in documentation
- BNLearner follows the new learning framework
- 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
- aGrUM
- parametric EM !!
- 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 prior 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
- New method : JointTargetedInference::jointMutualInformation for any set of variables in the BN
- pyAgrum
- pip : wheels for mac/windows/linux for python 2.7,3.{4-7}
- anaconda : compilation for maxOS/anaconda64/python3 should be fixed
- updated tests
- updated pyAgrum.lib
- updated posterior histograms for notebooks (added mean/stdev for
RangeVariable
andDiscretizedVariable
) - new functions for coloured and graphically compared BNs
- improved documentation
- aGrUM
- fixed bugs for
DiscreteVariable
withdomainSize()
<=1 (particularly when added inPotential
) - improved
CMakeFiles.txt
- improved documentation
- fixed
UAI
format for read and write BNLearner.setSliceOrder
with list of list of names (and not only with ids)- improved error messages
- fixed
learnParameters
- multi-thread support for learning
- fixed bugs for
- aGrUM/pyAgrum
- fixed bugs in
Potential::fillWith
- removed unsafe and ambiguous
Potential::fastKL
and kept safePotential::KL
- fixed bugs in
- aGrUM
- 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
- variable: new methods to set bounds with doubles in
- TestUnits
- fixed bug in
RawDatabaseTable
test unit
- fixed bug in
- aGrUM
- inference: Loopy Belief Propagation (
LBP
) - inference: new approximated inference :
Monte-Carlo
/Importance
/Weighted Sampling
+ the same used LBP as a Dirichlet prior (Loopy...
). - learning: new algorithm 3off2 and miic
- learning: new database handled framework (allows for coped with missed 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 stred +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)
) - Changes and bug fixe in in BIF and NET writer/reader
- inference: Loopy Belief Propagation (
- pyAgrum
- wheels for python 3.3 and 3.4
- access to the new learning framework used
BNLearner
- access to the new inference algorithms
- new methods
Instantiation.fromdict
andInstantiation.todict
DiscreteVariable.toDiscretized/toLabelized/toRange
copy the variable instead of gived 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)
- act
- new command guideline for a few easy checks
- many bug fixes
- API
- new class
EssentialGraph
- new class
MarkovBlanket
- improved targets in
MarginalTargettedInference
- new class
- pyAgrum
- update notebooks
- new swig-based documentation framework
- transparent background for dot graphs
- more windows-compliant agrum.lib.bn2csv
- aGrUM
- PRM bug fixes
- improved CI in gitlab
- improved exception messages in BN learning and O3PRM
- improved act
- aGrUM
- a lot of internal changes for CI in gitlab (especially for future automatic generation of wheels)
- learning: correct identification of stred labels beginned 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)
- updated requirements
- some improvements in doc
- pyagrum.lib.ipython: emulation of 'pyagrum.lib.notebook' for ipython graphical console (within spyder for instance)
- 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)
- 2 typos found in pyAgrum.lib.notebook
- internal
- worked on continuous integration with gitlab
- aGrUM/pyAgrum to be compilable with g++-4.8
- aGrUM/pyAgrum to be compilable with win32
- pyAgrum wheels generation used act for 'pip' tool
- aGrUM
- removed some unused data structure (
AVLTree
) - fixed bug in
localSearchWithTabuList
learning class - Remove wrong parallel estimations for learning (now correct but sequential)
- worked on docs
- API change : add
BayesNet::minimalCondSet(NodeSet&,NodeSet&)
(migration from pyAgrum to aGrUM) - API change : add JointTargettedInference::evidenceJointImpact()
- removed some unused data structure (
- pyAgrum
- API changes : pyAgrum.lib.bn2graph (
BN2dot
,BNinference2dot
,proba2histo
) - API changes : pyAgrum.lib.pretty_print (
bn2txt
,cpt2txt
) - API changes : pyAgrum.lib.notebook : uniformed parameters evs (first) and targets (second) order.
- API changes : pyAgrum.lib.notebook :
showEntropy->showInformation
- updated sphinx help generation
- fix
CNMonteCarloSampling
not recognized asApproximationScheme
- enhanced
showInformation
with Mutual Information on arcs - API change : added
BayesNet.minimalCondSet(set_of_targets,set_of_evs)
(as wrapper) - API change : added
LazyInference.evidenceJointImpact(set_of_targets,set_of_evs)
- API changes : pyAgrum.lib.bn2graph (
- Add new approximated inference :
LBP
(aGrUM and pyAgrum) - Fix bugs in
LazyPropagation
andShaferShenoy
inference - Refresh some codes in learning module
- Update (and simplify) CMakeLists.txt for new swig 3.0.11
- Add some project files (included this CHANGELOG.md)
- Refresh pyAgrum notebooks with matplotlib2
- Only bug fixes in tests
- New method for
BayesNet
:minimalCondSet
- New method for all inference :
evidenceImpact
- Potential has a (single) value even if no dimension.
- Bug fix for
LazyPropagation
- Typos for Visual C++ compiler
- Many internal changes
- aGrUM
- Fix GCC compilation
ParamEstimator::setMaxThread
new method
- pyAgrum
VariableElimination
andShaferShenoy
inference- new
addJointTarget
andjointPosterior
methods for exact inference pyAgrum.getPosterior
now usesVariableElimination
- Fix pyAgrum.lib.notebook error for python2
- pyAgrum now linked with static library aGrUM
- pyAgrum.so (linux) size significantly reduced
- aGrUM
- Improvements in inference : New target/evidence-driven incremental inference scheme used relevant reasoned used by Lazy/Shafer-Shenoy/Variable Elimination algorithms. Relevant reasoned leads to a major improvement of the inference (see RelevanceReasoning.html).
- pyAgrum
- LazyPropagation API follow the new inference scheme (add/removeTarget, add/remove/chgEvidence)
- Installers used pip or anaconda.
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
- updated lrs version for credal networks
- Windows
- aGrUM/pyAgrum compilation on windows used Visual Studio 2015
- aGrUM
- Improvements in Inference
- old LazyPropagation renamed JunctionTreeInference,
- Improved LazyPropagation ~30% faster,
- Bug fix and other improvements for relevance reasoned features.
- Improvements for Probabilistic Relational Models
- model refinements : e.g. parameterized classes, specification of CPTs used formula, etc.
- bug fixes and other improvements in dedicated inference algorithms,
- improved and fixed documentations
- new file format for Bayesian network : o3prmBNReader (readed a BN by grounded a system)
- learning API still improved
- BNLearner templatized
- new feature for BNLearner : used 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.
- Improvements in Inference
- pyAgrum
- small bugs fixed and reorganisation
- 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
- Improved API for learning (changeLabel/parameter learning/ etc.)
- Improved graphs manipulation
- bug fixes and other improvements
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 used Multi-Valued Decision Diagrams
- Language : migration to modern C++(11/14)
- Core : Improvements and optimization of basic data structures in aGrUM/core