Skip to content

1.3.0

Choose a tag to compare

@daemontus daemontus released this 02 Jan 09:02
· 22 commits to main since this release

(this summary is LLM-generated, but validated by project developers)

Changes Since v1.2.5

API-breaking changes

  • The Attractors and Reachability class API has been extended to accept AttractorConfig and ReachabilityConfig on top of existing support for AsynchronousGraph. This is backwards-compatible as long as you don't use named arguments (the name changed from graph to config).
  • The constructors for PerturbationSet and ColoredPerturbationSet now require an AsynchronousPerturbationGraph context instead of a SymbolicContext.

New features

  • New Algorithm Interface ⚙️
    A new, unified interface for analysis algorithms has been introduced, including Attractors, Scc, and Reachability (FixedPoints, TrapSpaces, Percolation and others will be addressed in future releases). These algorithms now support interruptible execution (cancellable via Ctrl+C or a time limit) and enhanced logging. Configuration is managed through new TypedDict objects (AttractorConfig, SccConfig, ReachabilityConfig, etc.), offering a more explicit way to set parameters.

  • Biodivine Boolean Models (BBM) Integration 📚
    Added the BiodivineBooleanModels class, providing an API to interact with the BBM database. This allows for fetching models and their metadata directly using methods like BiodivineBooleanModels.fetch_model() and filtering models based on properties using BiodivineBooleanModels.fetch_ids(). Fetched BbmModel objects can be converted to BooleanNetwork instances with various strategies for handling network inputs.

  • Enhanced Serialization (Pickling) 💾
    Most core symbolic objects are now serializable via Python's pickle module. This includes SymbolicContext, SymbolicSpaceContext, ModelAnnotation, AsynchronousPerturbationGraph, and all symbolic set types (e.g., ColorSet, VertexSet, PerturbationSet).

  • Expanded File Format Support ↔️
    The BooleanNetwork class now supports import from and export to the .booleannet and 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 as get_dual_variable_pair and mk_has_down_transition.
    • AsynchronousGraph: Added logically_unique_colors to find a representative subset of parameter valuations that are behaviorally distinct.
    • TrapSpaces: Added a new method long_lived_symbolic for identifying persistent trap spaces. The minimal_symbolic method now accepts an exclude_fixed_points parameter.

Other significant changes

  • The Reachability.reach_fwd and Reachability.reach_bwd methods are deprecated. Please use the new forward_superset and backward_superset methods 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_permanent method now accepts an optional initial_states argument. When specified, the resulting control strategies are guaranteed to work only for states reachable from this initial set. (Issue #36, Issue #39)
  • The AsynchronousGraph class now features a restrict method. This allows creating a subgraph containing only the specified ColorSet, VertexSet, or ColoredVertexSet.
  • A new method, strip_perturbation_data, has been added to AsynchronousPerturbationGraph. It transforms a ColorSet by removing all perturbation-related information, setting perturbation parameters to their canonical false state. (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_subspace that caused incorrect handling of network parameters during propagation has been resolved.
  • The logic for applying the initial_states constraint 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.12 to 4.13.4.
  • 🦀 The project has been migrated to the Rust 2024 edition and the toolchain is updated to version 1.88.0.
  • 🐍 The PyO3 bindings framework has been updated to version 0.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.