Skip to content

[Work in progress] A Rust library for working with logical models (Boolean/multi-valued networks) in systems biology.

License

Notifications You must be signed in to change notification settings

sybila/biodivine-lib-logical-models

Repository files navigation

Crates.io Api Docs Continuous integration Coverage GitHub issues Dev Docs GitHub last commit Crates.io

Biodivine logical models library

This project is still WIP. The version available in main is deprecated, as major rewrite has taken place - see branch rewrite.

  • Though no new features were introduced, the API has changed. The readability of rewrite should be significantly better. Performance is also slightly improved.

A Rust library for working with logical models (Boolean/multi-valued networks) in systems biology.

Goals

  • Can load/store file formats common in systems biology (sbml, bnet, aeon, bma).
  • Can perform basic static analysis on such models (unused variables,  invalid regulations, input inlining or general reduction).
  • Can represent unknown/uncertain behaviour within the logical model.
  • Can represent and manipulate the state-transition graph of a logical model symbolically (maybe using multiple different encodings?).
  • Provides some basic utility algorithms for (a) exploring the structural properties of the model (feedback vertex sets, cycles, etc.) (b) exploring the model dynamics (reachability, fixed-points, trap spaces, etc.).

Running reachability integration test

To test the correctness of the implementation, we now have a simple reachability consistency check. This check compares the results of all symbolic representations on a basic reachability exploration. To run the test, execute the following:

# First argument is a timeout, here 1 minute. This uses standard unix `timeout`.
# Second argument is fwd/bwd to indicate which reachability direction you want to test.
python3 reachability_integration_test.py 1m fwd

The process dumps all results into an appropriate ./data/results-* directory. The script will not overwrite existing results, so you have to delete the directory manually before running the test again.

You should see an output similar to the following:

[PASS] No error discovered in `146_BUDDING-YEAST-FAURE-2009.sbml` in less than 1m.
[PASS] No error discovered in `148_AGS-cell-fate-decision.sbml` in less than 1m.
[PASS] No error discovered in `151_TCR-REDOX-METABOLISM.sbml` in less than 1m.
[PASS] No error discovered in `155_CONTROL-OF-TH1-TH2-TH17-TREG-DIFFERENTATION.sbml` in less than 1m.
[PASS] No error discovered in `157_CONTROL-OF-TH-DIFFERENTATION.sbml` in less than 1m.
...

If you see a [FAIL] somewhere, it means an inconsistency has been detected. You can then check the results to examine the specific case.

About

[Work in progress] A Rust library for working with logical models (Boolean/multi-valued networks) in systems biology.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published