Skip to main content

Cobra2D

Python versions Tests GitHub last commit GitHub pull requests

Cobra2D is a Python package that extends COBRApy to automatically reconstruct time-resolved and/or multi-subsystem metabolic models. It generates context-specific submodels, adds linker and/or transfer reactions to connect them, and scales reactions to account for the lengths of the respective time intervals and the sizes of the subsystems. Cobra2D also provides a time interval- and subsystem size-aware weighted pFBA function.

General process

  • Define time intervals (phases) and subsystems (e.g. cell types, tissues or organs)
  • Contextualize submodels
    • Adjusting compartment sizes
    • Adjusting time intervals
    • Defining linker reactions (auxiliary reactions that connect phases and allow storage metabolites to be transferred across consecutive phases)
    • Defining transfer reactions (auxiliary reactions that connect subsystems and allow exchange metabolites to be transferred across subsystems)
    • Adding context-specific constraints to submodels
  • Construction of a new model containing all context-specific submodels and their respective constraints

For this process, this package provides functionalities to not only simplify this process, but also to easily save and share the defined settings with other people.

Quick start

Define the spatial submodels and time slots, connect phases, and apply the resulting constraints to a COBRApy model:

from cobra2d import Constraints
from cobra.io import load_model

model = load_model("textbook")

constraints = Constraints()
constraints.add_sub_models(["leaf", "root"], [2, 1])
constraints.add_time_slots(n_ranges=2, time=12)
constraints.add_linker_series("atp_c")
constraints.add_transfer_series("glc__D_e", ["leaf", "root"])

resolved_model = constraints.apply_to_model(model)

Constraints can also be saved as XML and shared:

constraints.save_as_xml("constraints.xml")
restored = Constraints.load_from_xml("constraints.xml")

See the constraints notebook for a complete introduction and linkage and phases for more advanced model construction.

Examples

The documentation includes notebooks for constraints, linkage and phases, and visualization. A sample XML configuration is available at docs/source/examples/data/conf.xml.

Visualization

The package also provides the possibility to obtain an overview of the created settings via an animated or static graphic.

Interactive Cytoscape visualization of Cobra2D constraints

Installation

After cloning the repository, the package can be installed in the current Python environment using pip. In a terminal, this can be done with the following commands:

git clone https://github.com/Toepfer-Lab/Cobra2D.git

cd Cobra2D

pip install .

The static GraphViz visualization (Constraints.create_graph) additionally requires the Graphviz system package. It is separate from the graphviz Python package and cannot be installed via pip, please refer to the documentation of graphviz.

Development

Tests, linting, formatting and type checks all run through tox. The test matrix covers Python 3.9 to 3.13, but you do not need to build those interpreters yourself: we use the tox-uv plugin, which builds every environment with uv and can supply the required CPython versions.

Setting up the same environment we use takes one command. With uv installed:

uv tool install tox --with tox-uv

Alternatively, if you prefer to keep tox in an existing environment, pip install tox tox-uv works as well.

Depending on how uv was installed, the interpreters may have to be fetched once manually:

uv python install 3.9 3.10 3.11 3.12 3.13

From the repository root you can then run:

tox                  # the full matrix: format, lint, types, and tests on 3.9-3.13
tox -e py312         # tests on a single version
tox -e format,lint   # black (check only) and flake8
tox -e types         # mypy
tox -e py310-req     # tests against the pinned requirements.txt
tox -e py312 -- -k linker    # arguments after -- are passed through to pytest

A few notes on the setup:

  • tox -e format only reports diffs, it does not rewrite files. Run black src/cobra2d/ tests/ --line-length=79 to actually apply the formatting.
  • py310-req is the reproducibility check. It installs the pinned requirements.txt rather than resolving dependencies fresh, which is why it is tied to Python 3.10 — the pins were generated with pip-compile under that version. The remaining environments install from setup.cfg and therefore test against current releases of cobra and its dependencies.
  • Without tox-uv, tox falls back to virtualenv and expects to find python3.9, python3.10, … on your PATH; environments for versions it cannot find will fail. Add --skip-missing-interpreters=true if you deliberately want to run only the subset you have installed.

Metadata

Release files for Cobra2D 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Cobra2D 0.7.1
File Size Uploaded
cobra2d-0.7.1.tar.gz 37.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Cobra2D 0.7.1
File Interpreter ABI Platform
cobra2d-0.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 81.6 kB

Release files / cobra2d-0.7.1.tar.gz

Download URL cobra2d-0.7.1.tar.gz
Size 37.1 kB
Tags Source
SHA-256 checksum
How to use checksums
6e1e20a08418b41da3637e1cc99007b1568551f6c0d8157faf4bbda734943e2a
BLAKE2b-256 checksum
How to use checksums
7a5ecd52ed1a9c0c03194dc98202535fbaca25391b98714ab1e4b28b1ab089e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / cobra2d-0.7.1-py3-none-any.whl

Download URL cobra2d-0.7.1-py3-none-any.whl
Size 44.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73ca3b7fd2381c629d83ff7326147f1f12a331f2ff245a147b5c90ba9a1ad29c
BLAKE2b-256 checksum
How to use checksums
d2bb2baaebe4dc232d96210c33b974c6e40626502d09feaa817ebb4d5136c0b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.1 This release

2 release files

0.7.0

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page