Skip to main content

Model Revision tool for computing Boolean network repair operations.

Project description

pymodrev: A python Model Revision tool for Boolean logical models

pymodrev is a Python-based reimplementation of ModRev, a tool for automated consistency checking and repair of Boolean network models using Answer Set Programming (ASP). Given a Boolean model and a set of experimental observations (steady-state or time-series), pymodrev determines whether the model explains the data. If inconsistencies are found, it identifies minimal repair operations to fix the model.

Built on top of the Clingo ASP solver and the pyfunctionhood library, pymodrev brings modern usability and extensibility to the model revision process by offering:

  • Full parity with ModRev's core logic, using the same ASP encodings
  • Modular architecture with pluggable update policies (synchronous, asynchronous, complete, steady-state)
  • Pure Python interface, ideal for integration with scientific workflows
  • In-memory model and observation management, enabling multiple consistency checks without reloading
  • Command-line interface for batch processing and reproducibility

Install

You can install pymodrev directly from source or via PyPI.

To install from source (when you are inside the pymodrev directory):

$ pip install .

To install from PyPI:

$ pip install pymodrev

This will automatically install dependencies like bitarray, pyfunctionhood, and clingo.


Getting Started

Boolean models can be specified using the following formats:

  • .lp - using original ModRev ASP encoding
  • .bnet - using the BoolNet format (only boolean rules)
  • .ginml / .zginml - using the widely used GINsim format (conserving the model layout information)

To run pymodrev, use the following command structure:

$ pymodrev -h
usage: pymodrev [-h] -m MODEL -obs OBS [UPDATER ...] -t {c,r,m} [--exhaustive-search] [--sub-opt] [--all-opt]
               [-v {0,1,2}] [-d]

options:
  -h, --help            show this help message and exit
  -m, --model MODEL     Input model file.
  -obs, --observations OBS [UPDATER ...]
                        List of observation files and updater pairs.
                        Each observation must be followed by its updater type. 
                        Example: -obs obs1.lp asyncupdater obs2.lp syncupdater
  -t, --task {c,r,m}    Specify the task to perform (default=r):
                           c - check for consistency
                           r - get repairs
                           m - get repaired models
  --exhaustive-search   Force exhaustive search of function repair operations (default=false).
  --sub-opt             Show sub-optimal solutions found (default=false).
  --all-opt             Computes all optimal solutions (default=true).
                        Stops at first optimal solution if false.
  -v, --verbose {0,1,2}
                        Specify output verbose level (default=2):
                            0 - compact format
                            1 - json format
                            2 - human-readable format
  -d, --debug           Enable debug mode.

Example: check consistency

Using option -t c, pymodrev will report the minimal set of nodes that need to be repaired in order to make the model consistent with the given observations.

$ pymodrev -m examples/boolean_cell_cycle/03/model.bnet -obs examples/boolean_cell_cycle/03/steadystate.lp steadystateupdater -t c
This network is inconsistent!
  node(s) needing repair: "p27", "rb", "cdc20", "cycd"
  present in profile(s): "p1"

Example: get repairs

Using option -t r, pymodrev will report the minimal set of repair operations for the model to be consistent with the given observations.

$ pymodrev -m examples/boolean_cell_cycle/03/model.bnet -obs examples/boolean_cell_cycle/03/steadystate.lp steadystateupdater -t r
### Found solution with 4 repair operations.
	Inconsistent node p27.
		Repair #1:
			Change function of p27 to: (cyca && !cycb && cycd && !p27) || (!cycb && !cyce)
	Inconsistent node rb.
		Repair #1:
			Change function of rb to: (!cycb && cycd && !p27) || (!cycb && cycd && cyce) || (!cycb && !cyca)
	Inconsistent node cdc20.
		Repair #1:
			Flip sign of edge (cycb,cdc20) to: positive
	Inconsistent node cycd.
		Repair #1:
			Flip sign of edge (cycd,cycd) to: positive

Example: get repaired models

Using option -t m, pymodrev will apply the repairs to the model and write to disk the repaired models consistent with the given observations.

$ pymodrev -m examples/boolean_cell_cycle/03/model.bnet -obs examples/boolean_cell_cycle/03/steadystate.lp steadystateupdater -t m

Repaired models keep the original name followed by a number, representing the number of minimal alternative repairs. For example, one could have:

  • model_1.bnet ... model_2.bnet, if there were only two possible minimal repaired models.
  • model_01.bnet ... model_18.bnet, if there were eighteen possible minimal repaired models.

Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymodrev-0.1.0.tar.gz (88.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymodrev-0.1.0-py3-none-any.whl (59.9 kB view details)

Uploaded Python 3

File details

Details for the file pymodrev-0.1.0.tar.gz.

File metadata

  • Download URL: pymodrev-0.1.0.tar.gz
  • Upload date:
  • Size: 88.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pymodrev-0.1.0.tar.gz
Algorithm Hash digest
SHA256 16cb4bf274dc09841018de1cb6d0f74029336bcde1d854db5e9020d0daf22dc1
MD5 dddd15483fedbf8dd3994a722d21fa5d
BLAKE2b-256 fc51ba681a7a7df0bd303737688c64fadc4e382c6a2aefe4e49d87c4487e8f3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymodrev-0.1.0.tar.gz:

Publisher: python-publish.yml on ptgm/pymodrev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymodrev-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pymodrev-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 59.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pymodrev-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f89cf83f65f6aefedc46dbe2a4e2329cf710310bd17d92f0ab5ab6eb2ed58597
MD5 6c9068291051186a82a72602c7d978b9
BLAKE2b-256 068f71d0219449506cf50649f3c4fa3e891f2c89ca64d3719e857ca5c5f63e8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymodrev-0.1.0-py3-none-any.whl:

Publisher: python-publish.yml on ptgm/pymodrev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page