aGrUM/pyAgrum 3.1.0 released
pyAgrum
- fastGraph:
- Added
fastDiGraph(),fastUndiGraph(),fastMixedGraph(),fastDAG(), andfastPDAG().fastGraph(desc)is preserved as a single entry point that guesses the returned graph type fromdesc. - The dot-like syntax now accepts non-numeric tokens as node names (not only unsigned ints); malformed or
type-incompatible descriptions raisepyagrum.InvalidArc/pyagrum.InvalidEdge
instead of a generic error.
- Added
- Configuration:
defaults.ininow carries typed metadata (### type :: doccomments) with validation; addedconfig.typed
accessor and key-deprecation support.- Boolean values are canonicalized to
True/Falseat set time. - Deprecated
asBool/asInt/asFloataccessors. - The configuration reference documentation is now generated from
defaults.ini.
- Native GUM Format (jgum / bgum):
saveGUM()forBayesNet,InfluenceDiagram, andMarkovRandomFieldgains anindentparameter,
defaulting tocore.default_jgumIndent.- Aggregator and ICI model nodes are now serialized compactly instead of as dense CPTs.
- MCBNDistance:
- Wrapped the new
MCBNDistanceC++ class. - Fixed
animApproximationSchemeflicker by consolidating it intoutils.py.
- Wrapped the new
- Documentation: several improvements.
- Misc:
- Refreshed
pydot>=2requirement.
- Refreshed
- fastGraph:
aGrUM
- MCBNDistance:
- Added
MCBNDistance, an independent Monte Carlo estimator of the KL divergence between two Bayesian networks. For a large BN, MCBNDistance is often faster and more accurate than theGibbsBNDistanceestimator.
- Added
- Native GUM Format (jgum / bgum):
- Aggregator and ICI model nodes are now serialized compactly instead of as dense CPTs.
- Hardened aggregator/ICI serialization:
gum::Exceptionon malformed input, O(N) writer,std::optionalaggregatorvalue(), privateaddAggregator/addICIModel, deduplicated aggregator dispatch.
- fastGraph:
- Replaced the ad hoc Python
fastGraphparser with a generic C++ template,gum::fastGraph<GRAPH_TYPE>(std::string_view), building aDiGraph,UndiGraph,MixedGraph,DAG, orPDAGfrom a dot-like textual description; node tokens can now be names (not only
unsigned-int ids) and are preserved when the built graph feedsmoralGraph(). Malformed or type-incompatible
descriptions throwInvalidArc/InvalidEdgeinstead of being silently misread.
- Replaced the ad hoc Python
- StructuralMetrics:
- Guarded
precision/recall/f_scoreagainst 0/0 division.
- Guarded
- PRM fixes:
- Fixed PRM test suites broken since the
internalGraph()rename and the CxxTest-to-doctest migration. - Fixed
PRMInstance::_addReferingInstance_storing the target attribute's safe name instead of the slot
chain's own name, which broke SVED/StructuredBayesBall name resolution. - Promoted PRM to an independent CMake module (
PRM_DEPS=BN) instead of folding it intoBN_DIRS.
- Fixed PRM test suites broken since the
- Testing infrastructure:
- optimization, bug fixes to the new doctest infrastructure.
- Build & Tooling:
act guidelinegains a--sourceglob filter to restrict checks to matching files.- Added
gum_cppnb, a standalone C++ notebook tool auto-installed byact install aGrUM, with BN/MRF/ID/CM
tutorials. - Finalized the BN+BNLEARNING merge: dropped the redundant BN/learning glob entry
- Required
swig>=4.3(thanks to Julien Schueller). - Simplified CMake threading logic:
GUM_THREADScache variable (stl/omp) replaces the previous
flag-assembly logic (thanks to Julien Schueller).
- MCBNDistance: