sybila / biodivine-lib-param-bn

Rust library for working with parametrised Boolean networks.
MIT License
2 stars 2 forks source link

Algorithms for fixed-points, feedback vertex sets and more #36

Closed daemontus closed 1 year ago

daemontus commented 1 year ago

This PR is rather large, but it was created to avoid making an even larger PR later down the line... so, it's a win?

Highlights

  1. There is now a "solver context" (similar to "symbolic context") that can be used to rewrite certain problems as Z3 queries.
  2. There are new, more efficient algorithms for computing fixed points and "projected" fixed points using both symbolic and solver methods.
  3. There is a new suite of algorithms for analysing the structure of cycles in the RegulatoryGraph. This includes feedback vertex sets, independent cycles (with variants restricted to induced subgraphs and desired cycle parity), but also cycle and SCC detection in general.

Detailed changelog:

codecov[bot] commented 1 year ago

Codecov Report

Base: 80.43% // Head: 76.63% // Decreases project coverage by -3.79% :warning:

Coverage data is based on head (8821b99) compared to base (23ac72a). Patch coverage: 64.09% of modified lines in pull request are covered.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #36 +/- ## ========================================== - Coverage 80.43% 76.63% -3.80% ========================================== Files 59 71 +12 Lines 3875 4058 +183 ========================================== - Hits 3117 3110 -7 - Misses 758 948 +190 ``` | [Impacted Files](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila) | Coverage Δ | | |---|---|---| | [src/\_impl\_extended\_boolean.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL19pbXBsX2V4dGVuZGVkX2Jvb2xlYW4ucnM=) | `0.00% <0.00%> (ø)` | | | [src/\_impl\_regulatory\_graph/\_impl\_display.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL19pbXBsX3JlZ3VsYXRvcnlfZ3JhcGgvX2ltcGxfZGlzcGxheS5ycw==) | `100.00% <ø> (ø)` | | | [src/\_impl\_regulatory\_graph/\_impl\_dot\_export.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL19pbXBsX3JlZ3VsYXRvcnlfZ3JhcGgvX2ltcGxfZG90X2V4cG9ydC5ycw==) | `100.00% <ø> (ø)` | | | [src/\_impl\_regulatory\_graph/\_impl\_equality.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL19pbXBsX3JlZ3VsYXRvcnlfZ3JhcGgvX2ltcGxfZXF1YWxpdHkucnM=) | `64.28% <ø> (ø)` | | | [...ned\_directed\_graph/\_weakly\_connected\_components.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL19pbXBsX3JlZ3VsYXRvcnlfZ3JhcGgvc2lnbmVkX2RpcmVjdGVkX2dyYXBoL193ZWFrbHlfY29ubmVjdGVkX2NvbXBvbmVudHMucnM=) | `0.00% <0.00%> (ø)` | | | [src/\_impl\_space.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL19pbXBsX3NwYWNlLnJz) | `0.00% <0.00%> (ø)` | | | [src/async\_graph/\_impl\_async\_graph.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL2FzeW5jX2dyYXBoL19pbXBsX2FzeW5jX2dyYXBoLnJz) | `57.14% <0.00%> (-9.53%)` | :arrow_down: | | [src/lib.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL2xpYi5ycw==) | `20.00% <0.00%> (+20.00%)` | :arrow_up: | | [src/symbolic\_async\_graph/\_impl\_function\_table.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL3N5bWJvbGljX2FzeW5jX2dyYXBoL19pbXBsX2Z1bmN0aW9uX3RhYmxlLnJz) | `92.85% <0.00%> (-7.15%)` | :arrow_down: | | [...mbolic\_async\_graph/\_impl\_graph\_colored\_vertices.rs](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila#diff-c3JjL3N5bWJvbGljX2FzeW5jX2dyYXBoL19pbXBsX2dyYXBoX2NvbG9yZWRfdmVydGljZXMucnM=) | `59.67% <0.00%> (+0.41%)` | :arrow_up: | | ... and [70 more](https://codecov.io/gh/sybila/biodivine-lib-param-bn/pull/36/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila) | | Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=sybila)

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.