1.3.0
(this summary is LLM-generated, but validated by project developers)
Changes Since v1.2.5
API-breaking changes
- The
AttractorsandReachabilityclass API has been extended to acceptAttractorConfigandReachabilityConfigon top of existing support forAsynchronousGraph. This is backwards-compatible as long as you don't use named arguments (the name changed fromgraphtoconfig). - The constructors for
PerturbationSetandColoredPerturbationSetnow require anAsynchronousPerturbationGraphcontext instead of aSymbolicContext.
New features
-
New Algorithm Interface ⚙️
A new, unified interface for analysis algorithms has been introduced, includingAttractors,Scc, andReachability(FixedPoints,TrapSpaces,Percolationand others will be addressed in future releases). These algorithms now support interruptible execution (cancellable viaCtrl+Cor a time limit) and enhanced logging. Configuration is managed through newTypedDictobjects (AttractorConfig,SccConfig,ReachabilityConfig, etc.), offering a more explicit way to set parameters. -
Biodivine Boolean Models (BBM) Integration 📚
Added theBiodivineBooleanModelsclass, providing an API to interact with the BBM database. This allows for fetching models and their metadata directly using methods likeBiodivineBooleanModels.fetch_model()and filtering models based on properties usingBiodivineBooleanModels.fetch_ids(). FetchedBbmModelobjects can be converted toBooleanNetworkinstances with various strategies for handling network inputs. -
Enhanced Serialization (Pickling) 💾
Most core symbolic objects are now serializable via Python'spicklemodule. This includesSymbolicContext,SymbolicSpaceContext,ModelAnnotation,AsynchronousPerturbationGraph, and all symbolic set types (e.g.,ColorSet,VertexSet,PerturbationSet). -
Expanded File Format Support
↔️
TheBooleanNetworkclass now supports import from and export to the.booleannetand BioModelsAnalyzer formats (.bma.json,.bma.xml). -
New Symbolic Capabilities
Bdd: Added methods for random valuation sampling (mk_uniform_valuation_sampler,random_valuation_sample), BDD approximation (overapproximate_to_size,underapproximate_to_cardinality), and introspection (pointers,support_set_contains).SymbolicSpaceContext: New methods for working with dual-variables space encoding, such asget_dual_variable_pairandmk_has_down_transition.AsynchronousGraph: Addedlogically_unique_colorsto find a representative subset of parameter valuations that are behaviorally distinct.TrapSpaces: Added a new methodlong_lived_symbolicfor identifying persistent trap spaces. Theminimal_symbolicmethod now accepts anexclude_fixed_pointsparameter.
Other significant changes
- The
Reachability.reach_fwdandReachability.reach_bwdmethods are deprecated. Please use the newforward_supersetandbackward_supersetmethods instead. - All cardinality methods (e.g.,
Bdd.cardinality(),VertexSet.cardinality()) now operate on unsigned large integers internally. This change is transparent to Python users, as values are converted to standard Python integers.
Other changes Since v1.2.0
New features
- The
Control.phenotype_permanentmethod now accepts an optionalinitial_statesargument. When specified, the resulting control strategies are guaranteed to work only for states reachable from this initial set. (Issue #36, Issue #39) - The
AsynchronousGraphclass now features arestrictmethod. This allows creating a subgraph containing only the specifiedColorSet,VertexSet, orColoredVertexSet. - A new method,
strip_perturbation_data, has been added toAsynchronousPerturbationGraph. It transforms aColorSetby removing all perturbation-related information, setting perturbation parameters to their canonicalfalsestate. (Issue #38) - Added new example scripts demonstrating attractor stability analysis (
stability_analysis.py) and subspace percolation (percolation.py).
Bug fixes
- An issue in
Percolation.percolate_subspacethat caused incorrect handling of network parameters during propagation has been resolved. - The logic for applying the
initial_statesconstraint in phenotype control computations has been corrected to ensure proper reachability analysis. (Issue #39)
Other changes
- ⚙️ The bundled Z3 solver has been upgraded from version
4.8.12to4.13.4. - 🦀 The project has been migrated to the Rust 2024 edition and the toolchain is updated to version
1.88.0. - 🐍 The
PyO3bindings framework has been updated to version0.25.1, along with other Rust dependencies. This includes numerous internal API adjustments to ensure compatibility. - CI workflows have been updated to use newer versions of GitHub Actions, improving build and release processes.
- Addressed new code quality warnings and improved clarity in documentation and internal comments.